Получить запрос 404 на asp net веб-приложение owin - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть простое asp. net веб-приложение. net framework 4.7.2

Оно имеет один простой контроллер

    public class ServiceApiController : ApiController
    {
        [HttpGet]
        public string ping()
        {
            return "pong";
        }


    }

и имеет класс запуска

public void Configuration(IAppBuilder app)
        {
            var config = new HttpConfiguration();

            var cors = new EnableCorsAttribute("*", "*", "*")
            {
                SupportsCredentials = true
            };

            cors.Methods.Add("POST");
            cors.Methods.Add("GET");

            config.EnableCors(cors);
            config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json"));

            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "ServiceApi",
                routeTemplate: "{controller}/{action}"
            );
            IoCCommon.Start(typeof(Startup).Assembly, config);

            app.UseWebApi(config);
        }

при локальном хостинге через VS 2019 и IIS Express я отправляю запрос почтальону по адресу: http://localhost: 8055 / ServiceApi / ping

и Я получаю ответ "pong"

, но когда я размещаю это приложение на удаленной машине в IIS и отправляю запрос на: http://machine-address: 8055 / ServiceApi / ping

Я получаю ответ «404 - Файл или каталог не найден».

У вас есть предложения, в чем может быть проблема?

Обновление:

На компьютере, когда я go для связи (Inte rnet Explorer) http://localhost: 8055 / ServiceApi / ping

Я получаю ту же ошибку: 404 не найден

1 Ответ

0 голосов
/ 22 апреля 2020

Что-то не так с хостингом проекта.
OWIN определяет абстракцию между веб-сервером Do tNet и веб-приложением. OWIN отделяет веб-приложение от сервера, что делает OWIN идеальным для самостоятельного размещения веб-приложения в вашем собственном процессе вне IIS.
Одним словом, при использовании OWIN для размещения приложения нет необходимости использовать веб-сервер (IIS). IIS предоставит базовый адрес службы, используя привязку веб-сайта, что сделает базовый адрес OWIN недоступным. Однако при локальном размещении адрес службы предоставляется самим приложением, обычно это выполняется методом Application_start() из Global.asax

protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            RouteConfig.RegisterRoutes(RouteTable.Routes);

            //host OWIN with below address.
            var _webapplication = WebApp.Start(url: "http://localhost:9203");
        }

. Вот пример самостоятельного размещения WebAPI в консольном приложении, которое похоже на мое описание самодостаточного проекта WebAPI.
https://docs.microsoft.com/en-us/aspnet/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api
Не стесняйтесь сообщить мне, если есть что-то, с чем я могу помочь.

...