Страница HTTP 404 не найдена в Web Api, размещенном в IIS 7.5 - PullRequest
91 голосов
/ 14 марта 2012

У меня есть приложение Web Api. Он отлично работает, когда я тестировал его на сервере отладки VS 2010. Но теперь я развернул его в IIS 7.5 и получаю ошибку HTTP 404 при попытке доступа к приложению.

Вот мой web.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=aspnet-FlowGearProxy-20123141219;Integrated Security=True" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <appSettings>
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="webpages:Enabled" value="true" />
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login" timeout="2880" />
    </authentication>
    <pages>
      <namespaces>
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages" />
      </namespaces>
    </pages>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
  </system.webServer>
</configuration>

Ответы [ 27 ]

0 голосов
/ 10 февраля 2018

С такой же проблемой сталкивались веб-API и .Net Core Web API. Хорошо работал в VS 2017 во время отладки, но вернул 404 при публикации в IIS 7.5. Решением для меня было изменить способ создания сайта. Вместо публикации в корне веб-сайта (созданного путем щелчка правой кнопкой мыши Сайты ... Добавить веб-сайт) мне пришлось создать приложение (созданное путем щелчка правой кнопкой мыши веб-сайта ... Добавить приложение) и опубликовать его в этой папке. Обратите внимание, что для версии Core мне пришлось изменить настройку версии пула приложений .NET Framework на «No Managed Code».

0 голосов
/ 29 мая 2013

Этот фрагмент конфигурации в файле web.config может помочь, как мне помогло: в разделе system.webServer:

      <security>
          <requestFiltering>
              <verbs applyToWebDAV="true">
                  <remove verb="PUT" />
                  <add verb="PUT" allowed="true" />
                  <remove verb="DELETE" />
                  <add verb="DELETE" allowed="true" />
                  <remove verb="PATCH" />
                  <add verb="PATCH" allowed="true" />
              </verbs>
          </requestFiltering>
      </security>      
0 голосов
/ 28 января 2014

Недавно у меня была ошибка 404 не найдена со всеми моими маршрутами / контроллерами Web Api 2.Поэтому я перешел на реальный сервер и попытался просмотреть, используя localhost вместо имени хоста, и получил «404.7 Not Found - Модуль фильтрации запросов настроен так, чтобы запретить расширение файла».

Эта SO отправляет справкуя решаю это.

0 голосов
/ 26 марта 2012

Какой HTTP-запрос вы делаете?

Это ответ в левом поле, но вы пытались удалить страницу ошибки IIS по умолчанию для 404, чтобы проверить, что на самом деле возвращает ваш API?

У меня была проблема, из-за которой я хотел, чтобы метод контроллера возвращал 404, когда я отправил ему неправильный идентификатор.Я обнаружил, что всегда получаю страницу IIS 404 «Файл или каталог не найден», а не HTTP-ответ от моего API.Удаление страницы ошибки 404 по умолчанию решило проблему.

Другая проблема, но вы никогда не знаете, что это может помочь;)

0 голосов
/ 16 февраля 2015

У меня была такая же проблема: на недавно установленной машине с Visual Studio 2013 проект веб-API работал под IISExpress, но не под локальным IIS. Я перепробовал все, что смог найти, но в конце концов проблема была не в веб-API, а в MVC: даже если он был установлен, проект MVC не выполнялся.

Для меня сработало удаление IIS (из ADD / REMOVE Windows Features), затем переустановка и запуск aspnet_regiis -i. Может быть, это поможет кому-то еще.

0 голосов
/ 19 октября 2015

я ничего не делаю, просто добавьте этот тег в web.config, его работа над этой проблемой возникает в одном из следующих пунктов

  1. Использование Web Api в одном проекте с использованием MVC или asp.net формы

  2. Используйте RouteConfig и WebApiConfig в Global.asax как GlobalConfiguration.Configure (WebApiConfig.Register);RouteConfig.RegisterRoutes (RouteTable.Routes);

  3. Используйте RouteConfig для 2 целей, формы asp.net используют с маршрутизацией friendlyurl и mvc для маршрутизации MVC

мы просто используем этот тег в web.config, он будет работать.

<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
   .........................
</modules>
</system.webServer>
0 голосов
/ 25 марта 2015

Я потратил много времени, пытаясь сделать много вещей, чтобы наконец понять, что я добавляю свое веб-приложение не в Сайты / Веб-сайты по умолчанию, а в другой веб-сайт, связанный с другим портом. Очевидно, что попытка localhost на порту 80 даст 404.

...