HTTP 404 при доступе к файлу .svc в IIS


86

Недавно я создал службу WCF, которая отлично работает при тестировании в Visual Studio 2008. Но когда я развертываю проект в IIS и пытаюсь получить доступ к файлу .svc из IIS, я получаю следующую ошибку:

"Server Error in '/' Application.The resource cannot be found.  "

У меня была эта проблема последние 4 дня.

в сопоставлениях обработчиков диспетчера IIS я вижу две записи для .svc:

svc-Integrated and svc-ISAPI-2.0

Ответы:


75

Вам необходимо добавить сопоставление для расширения SVC в ASP.NET. Самый простой способ сделать это - запустить ServiceModelReg.exe -iиз C: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation. Вам также может потребоваться включить ASP.NET, если вы еще этого не сделали.


Если вы используете Windows Server 2012 или 2016, следуйте этим инструкциям:


Вы потом пытались перезапустить IIS?
tvanfosson

У вас есть отображение MIME для .svc?
tvanfosson

Это не MIME-сопоставление - сопоставление расширений приложений. см. msdn.microsoft.com/en-us/library/ms752252(v=vs.90).aspx .
Майкл Фрейджейм

22
Важно: не делайте этого на Server 2012 с установленным .NET 4.5. Это меня облажало, пока я не запустил ServiceModelReg.exe -ua. См. Здесь решение для Server 2012: stackoverflow.com/questions/11116134/…
Скотт Андерсон

109

Что сработало для меня в Windows 2012 Server R2:

WCF HTTP 404

Спасибо "Аарону Д."


3
Безусловно, самый простой вариант.
BIDeveloper

Это сработало для меня на рабочих столах Win10, Win8.1 и сервере Win2012 :) Спасибо!
Шкипер

Это сработало для меня на рабочих столах Win10, Win8.1 и сервере Win2012 :) Спасибо!
Шкипер

2
По какой-то причине мне пришлось установить эту функцию как для 3.5, так и для 4.5, и через командную строку: dism /online /enable-feature /featurename:WCF-http-Activation45 /all а также dism /online /enable-feature /featurename:WCF-http-Activation /all
Rocklan

1
Работает и на Север 2019
Зар

56

Я нашел эти инструкции в сообщении блога, в котором указан этот шаг, который у меня сработал (Windows 8, 64-разрядная версия):

Убедитесь, что в функциях Windows у вас отмечены оба параметра WCF в рамках .Net. Итак, перейдите в Панель управления -> Программы и компоненты -> Включение / выключение компонентов Windows -> Функции -> Добавить компоненты -> Функции .NET Framework XX. Убедитесь, что платформа .Net сообщает, что она установлена, и убедитесь, что узел активации WCF под ним выбран (установлен флажок), а также отмечены оба параметра в разделе «Активация WCF».
Это:
* Активация HTTP
* Активация без HTTP
Необходимо выбрать оба варианта (установлен флажок).

2
Если бы я мог проголосовать за это больше одного раза, я бы это сделал, это меня ОЧЕНЬ ОЧЕНЬ, ура!
Крис В.

4

Я вижу, вы уже решили свою проблему - но для потомков:

У нас была аналогичная проблема, и обработчик SVC уже был правильно установлен. Наша проблема заключалась в том, что обработчик ExtensionlessUrl обрабатывал запросы до того, как они достигли обработчика SVC.

Чтобы проверить это - в Сопоставлениях обработчиков в диспетчере IIS на уровне веб-сервера просмотрите список обработчиков по порядку (это опция справа). Если над обработчиками SVC отображаются различные обработчики ExtensionlessUrl, то несколько раз перемещайте их вниз, пока они не окажутся внизу.


1

Проверяет, что ваш каталог был преобразован в Приложение, которое является вашим IIS.


1

Сегодня у меня была такая же проблема.

Для меня решение заключалось в том, чтобы войти в IIS, щелкнуть правой кнопкой мыши имя нового веб-сайта, выбрать «Свойства», ASP.Net и изменить версию ASP.Net с «1.1.4322» (которая была установлена ​​по умолчанию). к 2.0.50727.

Сделав это, я мог щелкнуть правой кнопкой мыши файл .svc, нажать «Обзор» и увидеть удобную веб-страницу службы.


1

Это также может стать проблемой после включения совместимости управления IIS 6 в Windows 10. Установка HTTP-активации инфраструктуры в службах WCF решит проблему.


0

В моем случае ошибка была вызвана неверными настройками сопоставления в файле applicationhost.config (\ System32 \ inetsrv \ config). По какой-то причине Visual Studio 2013 повредила его при создании виртуального каталога в IIS. Исправление заключалось в том, чтобы вручную редактировать раздел сайтов в файле.


0

В разделе функций в добавлении роли / функций в сервере 2012 приведены 2 версии .net framework.

а. 3.5

б. 4.5

В зависимости от используемой структуры вы можете включить HTTP-активацию в службах WCF. :)


0

В моем случае Win 10. файл applicationHost.config поврежден VS 2012. И вы можете получить копию истории этого файла в папке C: \ inetpub \ history. Затем перезапустите IIS, и он будет работать правильно.


0

Мне пришлось добавить расширение .svc к разрешенным расширениям в настройках фильтрации запросов (раньше было 404.7 ошибок).

введите описание изображения здесь



0

Ни одно из вышеперечисленных решений не устранило эту ошибку. Мне пришлось установить в web.config следующее:

system.servicemodel > bindings > webHttpBinding > binding:
<security mode="Transport">
  <transport clientCredentialType="None" />
</security>

Я хотел бы воспользоваться этой возможностью, чтобы ОБРАТЬСЯ с Microsoft еще раз за то, что она создала такую ​​огромную неразбериху с .NET Framework и так долго делала жизнь разработчиков такой несчастной!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.