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, следуйте этим инструкциям:

tvanfosson
источник
Вы потом пытались перезапустить 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.

Esylvestre
источник
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. Исправление заключалось в том, чтобы вручную редактировать раздел сайтов в файле.

user405723
источник
0

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

а. 3.5

б. 4.5

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

Радж Кумар
источник
0

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

Phuongdnguyen
источник
0

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

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

мартинос
источник
0

Добавление суффикса .svc, разрешенного при фильтрации запросов, помогло мне.

Брайан Кинг
источник
0

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

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

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

Смирнийский
источник