Помилка HTTP 404.3 - не знайдено "під час перегляду служби wcf на Windows Server 2008 (64 біт)


88

Я розробляю додаток на основі .Net Framework 3.5 sp1 та розміщується на Windows Server 2008 (64 біт).

Під час локального перегляду служби wcf (.svc) все є нормально, але під час перегляду з повною URL-адресою домену виникла помилка.

локальна адреса така: http: //localhost/MyService.svc

і адреса домену така: http://MySite.ir/MyService.svc

до речі сторінки (.aspx) та інші файли коректно працюють як на localhost, так і з адресою домену.

будь-яка ідея буде оцінена

Ось докладна помилка:


Помилка HTTP 404.3 - не знайдено

Сторінка, яку ви запитуєте, не може бути подана через конфігурацію розширення. Якщо сторінка є сценарієм, додайте обробник. Якщо файл потрібно завантажити, додайте карту MIME. Детальна інформація про помилку

Модуль: StaticFileModule

Повідомлення: ExecuteRequestHandler

Обробник: StaticFile

Код помилки: 0x80070032

Запитувана URL-адреса: http://MySite.ir:80/MyService.svc

Фізичний шлях: D: \ inetpub \ vhosts \ MySite.ir \ httpdocs \ MyService.svc

Метод входу: анонімний

Анонімний користувач входу

Відповіді:


224

Переконайтеся, що ви активували компоненти WCF звідси .

Або альтернативним і простим способом є перехід на панель управління -> Увімкнення та вимкнення функції Windows -> і переконайтеся, що всі параметри встановлені, як зазначено на знімку екрана нижче.

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

Можливо, вам доведеться активувати кожне поле та прийняти, якщо при активації всіх функцій одночасно з’являться помилки


36
.Net Framework 4.5 Додаткові послуги -> Перевірка служб WCF та -> Активація HTTP зробила це за мене!
devHead

3
Windows Server 2012 - потрібна лише активація HTTP та перевірка спільного використання портів.
dibs487

2
Я додав би до цієї відповіді активацію полів по одному. Усі перевірки одночасно можуть провалитися. Це відбувається в Windows Server 2012.
harveyt

2
ця відповідь повинна бути вгорі
markthewizard1234

3
Це правильна відповідь. Це вирішило проблему для мене, і мені не довелося вручну додавати що-небудь вручну до зіставлення обробників IIS.
Ентоні

25

Добре, ось відповідь:

Перейдіть до Порівняння обробників | Додати менеджер обробників -> А потім додати нижче інформацію

Шлях запиту: * .svc

Тип: System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Версія = 3.0.0.0, Культура = нейтральна, PublicKeyToken = b77a5c561934e089

Назва: svc-інтегрований


3
Для тих, хто хоче додати це до свого файлу web.config, це працює для мене у проекті .NET 4.5: <add name = "svc-Integrated" path = " .svc" verb = " " type = "System.ServiceModel. Activation.HttpHandler, System.ServiceModel.Activation, Версія = 4.0.0.0, Культура = нейтральна, PublicKeyToken = 31bf3856ad364e35 "/>
Stefan Mohr

6
Для мене додавання рядка з @StefanMohr до Web.config не зовсім спрацювало. Тим НЕ менше, я змінив path="*.svc"і verb="*"і він працював великий. Таким чином, рядок, який я використовував, який працював, був: <add name="svc-Integrated" path="*.svc" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>(додано в configuration / system.webServer / handlers).
Арон Бойєтт

11

Якщо хтось має цю проблему на Windows Server 2012, тут відповідь Білла Мун вирішив її для мене:

"Для Windows Server 2012 ... У диспетчері серверів натисніть Додати ролі та функції, виберіть відповідний сервер, а потім виберіть Функції. У розділі .NET Framework 4.5 Функції ви побачите Служби WCF, а під ним - знайти активацію HTTP. "


1
У будь-якій існуючій веб-програмі вам також доведеться зробити наступне після додавання функції Windows: - Запустіть inetmgr - Відкрийте "Отображення обробників" - Перевірте, чи є зіставлення svc-ISAPI для розширення * .svc. Якщо ні, скопіюйте їх із батьківського веб-сайту за допомогою дії "Повернутися до батьківського". Зауважте, що це передбачає, що власні зіставлення обробників налаштовано в web.config для програми, як це зазвичай буває у IIS7 +. Якщо ні, ви втратите їх під час виконання "Повернення до батьківського".
Беренд Енгельбрехт

8

У мене на ноутбуці Windows 10 і я використовую Visual Studio 2015 для розробки WCF. WCF працює нормально у Visual Studio, але коли я розміщений у IIS, я отримав ту ж помилку.

Я перевірив обробник IIS. Розширення svc відсутнє. Тому я спробував додати новий обробник у IIS, як запропонував Морі у першій відповіді. Я не знайшов типу "System.ServiceModel.Activation.HttpHandler".

Тож я відкрив «Увімкнути чи вимкнути функції Windows» і встановив функції, як це було виділено на знімку екрана.

Це спрацювало для мене.

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



0

Я хотів додати це як коментар до відповіді, але не мав достатньої кількості представників для цього. Я спробував запустити ServiceModelReg та aspnet_regiis.exe з різними прапорцями та додати функцію активації HTTP, але вона все одно не працювала. Навіть використання інтерфейсу відображення обробника в IIS не спрацювало, оскільки він не зміг знайти System.ServiceModel.Activation.HttpHandler. Нарешті вдалося додати обробник, про який згадує Морі вручну, до мого файлу web.config.

<system.webServer>
    <handlers>
      <add name="svc-Integrated" path="*.svc" verb="GET,HEAD,POST,DEBUG" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode" responseBufferLimit="4194304" />

У моєму проекті працювали .Net 3.5 та IIS 7.5 у Windows 7 та IIS 7.0 на Win Server 2008 R2.


0

Спробуйте зняти прапорець проти активації WCF HTTP у вікні "Увімкнути або вимкнути функцію Windows" ( див. Тут ) і повторно встановити, перейшовши до

%windir%\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\

і виконати ServiceModelReg -i

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.