Страница HTTP 404 не найдена в Web Api, размещенной в IIS 7.5

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

Вот мой web.config

                                 

Я тоже боролся с этим. К счастью, Стив Микелотти задокументировал решение, которое сработало для меня здесь .

В конце дня я включил все глаголы (verb = “*”) в обработчик ExtensionlessUrlHandler-Integrated-4.0 в моей веб-конфигурации.

         

Другие отметили, что с поддержкой WebDAV возникают проблемы. К счастью, я тоже не столкнулся с этой проблемой.

Имел такой же вопрос. Эта настройка конфигурации решила проблему.

  .....  .....  

Как объясняется в http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html выше решение следует избегать. Используйте это вместо этого. То же решение предоставляется также Lopsided. Держа его здесь, чтобы позволить пользователям избежать реализации первого рабочего решения.

      

Если IIS установлен или включен после ASP.NET, вам необходимо вручную зарегистрировать ASP.NET с IIS, чтобы ваше приложение .NET работало.

Для Windows 7 и более ранних версий:

  1. Запустите командную строку (cmd.exe) в качестве администратора.
  2. Перейдите к соответствующему местоположению .NET Framework. (например, C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319)
  3. Запустить aspnet_regiis.exe -i

Для Windows 8 и более поздних версий:

  1. В меню «Пуск» введите «Включить или отключить функции Windows» и выберите первый результат.
  2. Разверните Internet Information Services: World Wide Web Services: Возможности разработки приложений и выберите ASP.NET 4.5 (или ASP.NET 3.5, если вам необходимо поддерживать проекты на .NET Framework 2.0-3.5).
  3. Нажмите «ОК».

Вы используете приложение Web API в виртуальном каталоге или приложении?

Например: у меня была такая же проблема, когда я переместил проект в локальную IIS на веб-сайте по умолчанию> SampleWebAPI. Я считаю, что это связано с изменением маршрутизации URL следующим образом:

Оригинал: localhost:3092/api/values
Перемещено: localhost/SampleWebAPI/api/values

Если вы переместите проект веб-API на свой собственный веб-сайт, работающий на другом порту, он, похоже, работает.

Дополнительное примечание: я еще больше усложнил проблему, добавив api в качестве псевдонима приложения на моем веб-сайте, что вызвало эффективный URL :

localhost:81/api/api/values – заметил это после перемещения веб-сайта на свой собственный сайт

Поэтому, поскольку я хотел поддерживать разделение между моим сайтом и веб-сайтом проекта api mvc, я изменил правила маршрутизации в global.asax для веб-API «DefaultAPI» из api/{controller}/{id} в {controller}/{id} и ASP.NET MVC по Default из {controller}/{id} в info/{controller}/{id} .

Это единственный ответ, который сработал для меня …

У меня была аналогичная проблема … Казалось, что независимо от того, что я сделал, ничто не перенаправлялось, и мой глобальный файл просто игнорировался. Я всерьез подумывал о том, чтобы закончить все это, прежде чем я нашел этот ответ. Надеюсь, эта ссылка поможет кому-то другому.

  • Переполнение стека – диагностика ошибок 404 в IIS 7 и ASP.NET MVC

Добавление в файл web.config следующего:

       

тег system.webServer уже был там, но я добавил к нему тег модhive, а затем tags remove & add для тегов модhive.

Несколько вещей, чтобы проверить:

  1. Убедитесь, что установлена ​​.NET Framework 4.
  2. Убедитесь, что для вашего сайта и виртуального каталога (если применимо) выбрана версия 4 .NET Framework.
  3. Убедитесь, что у вас установлен MVC или у вас есть соответствующие библиотеки DLL в каталоге bin.
  4. Может потребоваться расширение веб-службы ASP.NET 4.0
  5. Поместите приложение в собственный пул приложений.
  6. Убедитесь, что в каталоге есть как минимум «Сценарии».

У меня была аналогичная проблема. У меня были правильные настройки в моем файле web.config, но был запущен пул приложений в classическом режиме, а не в интегрированном режиме

Скриншот

Эта проблема также может возникнуть из-за следующих

1. В Web.Config

    

2. Убедитесь, что в папке bin на сервере, где развертывается Web-интерфейс, доступны следующие файлы:

  • System.Net.Http

  • System.Net.Http.Formatting

  • System.Web.Http.WebHost

  • System.Web.Http

Эти сборки не будут копироваться в папку bin по умолчанию, если публикация осуществляется через Visual Studio, потому что пакеты веб-API устанавливаются через Nuget на машине разработки. Тем не менее, если вы хотите, чтобы эти файлы были доступны как часть публикации Visual Studio, вам необходимо установить CopyLocal в True для этих сборок

Садиш Кумар.V

Я также столкнулся с этой проблемой. Я решил проблему, перейдя в пулы приложений> Имя пула приложений и изменив .NET Framework с версии v.2.0.50727 на v4.0.30319.

Официальное исправление от Microsoft: http://support.microsoft.com/kb/980368

Я настоятельно НЕ рекомендую использовать . Это приводит к тому, что все запросы (даже .jpg, .css, .pdf и т. Д.) Будут обрабатываться всеми зарегистрированными модулями HTTP. Есть два отрицательных момента: а) дополнительная нагрузка на аппаратные ресурсы; b) возможные ошибки, поскольку http-модули будут обрабатывать новый тип контента.

Я начал получать 404 ответа от веб-API после выполнения учебника Windows Azure, который сказал мне добавить файл «WebRole.cs» в мой проект.

После удаления «WebRole.cs» из моего проекта мои вызовы Web API снова начали работать.

Мне пришлось отключить параметр публикации файлов «Прекомпиляция во время публикации».

Пожалуйста, убедитесь, что пул приложений находится в режиме Integrated
Добавьте в файл web.config следующее:

  .....  .....  

В моем случае проблема была просто в том, что я пытался получить доступ к сайту по адресу

myserver.myintranet.com/mysite

Но привязка веб-сайта для http в IIS не имела имени хоста, указанного в привязке. Раньше это работало, и я понятия не имею, как это сдулось.

Как только я поместил myserver.myintranet.com в имя хоста, 404 исчез.

В диспетчере IIS вы перейдете в Bindings … на панели действий, а затем отредактируйте привязку http, чтобы указать имя хоста.

Основываясь на этом SO-ответе , мне просто пришлось изменить path="*." to path="*" для добавленного ExtensionlessUrlHandler-Integrated-4.0 в configuration>system.WebServer>handlers в моем web.config

До:

  

После:

  

Имела та же проблема, ответ 404 для controllerов веб-api при обслуживании из IIS, но все отлично работало с VS2010. Ни один из вышеперечисленных решений не работал для меня. В конце концов я обнаружил, что проблема заключалась в том, что мы добавили поддержку WSE 3.0 для приложения, а в каталоге приложения / bin отсутствовала dll Microsoft.Web.Services3. Странно, но после копирования dll картография маршрутов начала работать.

Не забудьте развернуть global.asax

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

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

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

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

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

              

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

Это сообщение поможет мне решить эту проблему.

Это разрешилось для меня, когда я включаю флажок для UrlRoutingModule-4.0:

Диспетчер IIS> Модули> выберите UrlRoutingModule-4.0> Изменить модуль> установите флажок «Вызовы только для запросов к приложениям ASP.NET или управляемым обработчикам».

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

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

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

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

  1. Используйте Web Api в том же проекте, используя формы MVC или asp.net

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

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

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

   .........................   

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

Я тоже боролся с этим. Моя конкретная проблема заключалась в том, что у меня была веб-служба ASMX, которая, когда я ввел параметр в веб-метод и протестировал его, тогда он даст мне 404. Особый метод работал отлично в прошлом и не был изменен, только переиздан. Затем я пришел сюда и попробовал все опубликованные ответы, и ничего не помогло.

Мое окончательное решение? Я знаю, что это радикально, но я только что создал новое решение Visual Studio и веб-проект. Выбранный MVC, затем я добавил «Добавить»> «Новый элемент», в качестве которого были выбраны «Visual C #»> «Web» и «Web Service (ASMX)». Я скопировал весь мой старый код-код, затем я обратил внимание на пространство имен, которое он дал новому файлу в моем новом проекте, а затем вставил весь старый код в новый файл с кодом в новом проекте и поместил пространство имен назад к тому, что было. Затем я создал свои папки в моем проекте, которые у меня были перед использованием Visual Studio, чтобы сделать «Добавить»> «Новая папка», а затем скопировать обратно в мои файлы в папки из моего другого проекта с помощью проводника Windows, затем щелкнул правой кнопкой мыши каждую папку в Visual Studio и сделал «Добавить»> «Существующий элемент …» и вытащил элементы из этих папок в папки Visual Studio нового проекта. Я снова ссылался на все мои сборки .NET, открыв оба проекта, чтобы сравнить те, на которые я ссылался, ранее (у меня была тонна!). Я должен был назвать свой новый проект немного другим – в основном, я сделал что-то, что сопоставимо с «GeneralWebApp», а не «MyWebApp», например, поэтому мне пришлось сделать «Заменить все» в моем решении, чтобы заменить это имя. получить правильное пространство имен для всех моих файлов. Затем я сделал «Rebuild All» в проекте, а затем запустил его с помощью кнопки «Play» Visual Studio, когда я получил ее для правильной сборки. Он работал нормально. Поэтому я опубликовал его, и все было хорошо на сервере, где я его опубликовал, когда я запустил его оттуда. У меня нет объяснений относительно того, что произошло, но так я прошел через это. Это не плохой тест, просто чтобы увидеть, что делает что-то, что делает Visual Studio, сбросило его.

  • Сжатие GZip В IIS 7.5 не работает
  • Фиксирование медленной начальной нагрузки для IIS
  • Не удается запустить веб-приложение ASP.NET MVC 2 на IIS 7.5
  • Ошибка HTTP 404.3-Не найден в IIS 7.5
  • ASP.NET 4.5 не был зарегистрирован на веб-сервере
  • ASP.NET MVC на IIS 7.5
  • Не удалось выполнить аутентификацию службы ASP.NET Web Api с помощью HttpClient
  • Как защитить статические файлы с помощью аутентификации формы ASP.NET в IIS 7.5?
  • Как предоставить ASP.NET доступ к закрытому ключу в сертификате в хранилище сертификатов?
  • Как увеличить тайм-аут запроса в IIS?
  • Как включить ASP classic в IIS7.5
  • Давайте будем гением компьютера.