Не удалось вызвать действие контроллера в другом проекте - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть проект Admin и проект Payment.

Платежный проект имеет контроллер конфигурации, который я хочу использовать как API для получения данных:

namespace DSSL.DCWEB.Web.Gateway.Controllers
{
    public class PaymentConfigurationController : DCWEBControllerBase
    {
        public PaymentConfigurationController()
        {
        }

        [HttpGet]
        public IDictionary<string, string> GetSettings()
        {
            var test = new Dictionary<string, string>();
            return test;
        }

Я хочу вызвать это действие из контроллера на веб-сайте администратора:

var resultTest = RedirectToAction("GetSettings", "PaymentConfiguration");

В Admin Startup.cs у меня есть:

routes.MapRoute(
      "GatewayConfiguration",
      "PaymentConfiguration/GetSettings",
      new { controller = "PaymentConfiguration", action = "GetSettings" },null,
      new[] { "Payment.Controllers" }
 );

В настоящее время вызов в Admin Controller не выдает ошибку и просто ничего не делает.

1 Ответ

0 голосов
/ 23 сентября 2019

Вы можете сделать HTTP-запрос на использование веб-API, используя System.Net.Http.HttpClient :

using (var httpClient = new HttpClient())
{
    using (var response = await httpClient.GetAsync("https://localhost:44348/api/values"))
    {
        string apiResponse = await response.Content.ReadAsStringAsync();

        //now you can deserialize the response to object 
    }
}

См. Примеры кода здесь и здесь .

Если веб-приложения принадлежат другому домену, вы должны включить Cross-Origin Requests (CORS), безопасность браузера не позволяет веб-странице отправлять запросы на домен, отличный от того, который обслуживал Интернет.страница:

Включить запросы кросс-источника (CORS) в ASP.NET Core

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...