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 .
Michael Freidgeim

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

109

Що мені вдалося, на Windows 2012 Server R2:

WCF HTTP 404

Подяка "Аарону Д"


3
На сьогоднішній день найпростіший варіант.
BID розробник

Це працювало у мене на Win10, настільних комп'ютерах Win8.1 та сервері Win2012 :) Дякую!
Шкіпер

Це працювало у мене на Win10, настільних комп'ютерах Win8.1 та сервері Win2012 :) Дякую!
Шкіпер

2
З якоїсь причини мені довелося встановити цю функцію як для dism /online /enable-feature /featurename:WCF-http-Activation45 /alldism /online /enable-feature /featurename:WCF-http-Activation /all
версії

1
Працює і на Північі 2019
Зар

56

Ці інструкції я знайшов у дописі в блозі, який вказував на цей крок, який працював для мене (Windows 8, 64-розрядна версія):

Переконайтеся, що у функціях Windows у вас є обидва опції WCF під .Net framework встановлені. Тож перейдіть до Панелі керування -> Програми та функції -> Увімкнення / вимкнення функцій Windows -> Функції -> Додавання функцій -> Функції .NET Framework XX. Переконайтеся, що .Net framework каже, що він встановлений, і переконайтеся, що вибраний вузол активації WCF під ним (встановлено прапорець) і також перевірено обидва параметри в розділі Активація WCF.
Це:
* Активація HTTP
* Активація, що не стосується HTTP
Потрібно вибрати обидва варіанти (позначити прапорець).

2
Якби я міг підтримати це більше ніж один раз, це б спонукало мене ГАЙКИ, ура!
Кріс В.

4

Я бачу, ви вже вирішили свою проблему - але для нащадків:

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

Щоб перевірити це - у Картах обробників в Менеджері IIS на рівні веб-сервера перегляньте список обробників по порядку (це опція праворуч). Якщо різні обробники ExtensionlessUrl з’являються над обробниками SVC, то кілька разів пересувайте їх вниз, доки вони не опиняться внизу.



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

Існує 2 версії фреймворка .net, наведені під функціями додаткової ролі / функцій на сервері 2012

a. 3.5

b. 4.5

Залежно від використовуваного фреймворку ви можете ввімкнути HTTP-активацію в службах WCF. :)


0

У моєму випадку Win 10. файл applicationHost.config пошкоджений VS 2012. І ви можете отримати копію історії цього файлу в папці C: \ inetpub \ history. Потім перезапустіть IIS, і він працює належним чином.


0

Мені довелося додати розширення .svc до дозволених розширень у налаштуваннях фільтрації запитів (раніше мали 404,7 помилок).

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


0

Додавання суфікса .svc, як це дозволено у фільтрації запитів, зробило для мене фокус.


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.