Неможливо обслуговувати послуги WCF в IIS в Windows 8


199

Коли я намагаюся обслуговувати службу WCF на IIS в машині Windows 8, я отримую добре відому помилку

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

Стару роботу потрібно було виконати, aspnet_regiis -iале ця команда, як видається, застаріла в Windows 8, даючи відповідь This option is not supported on this version of the operating system. (...).

Якою була б робота?

(Я вже ввімкнув звичайні aspxсторінки, тому більшість конфігурацій IIS здається здоровими.)


Для отримання додаткової інформації про aspnet_regiis -iкоманду для користувачів, що передують Windows 8, дивіться це посилання: aspsnippets.com/Articles/…
Девід

Відповіді:


405

Здавалося, що це не мозг; послугу WCF слід включити за допомогою Programs and Features -> Turn Windows features on or offпанелі управління. Перейдіть .NET Framework Advanced Services -> WCF Servicesта увімкніть, HTTP Activationяк описано в цій публікації блогу на mdsn .

У командному рядку (як адміністратор) ви можете запустити:

C:\> DISM /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation
C:\> DISM /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation45

Якщо ви отримали помилку, то скористайтеся наведеним нижче способом

C:\> DISM /Online /Enable-Feature /all /FeatureName:WCF-HTTP-Activation
C:\> DISM /Online /Enable-Feature /all /FeatureName:WCF-HTTP-Activation45

6
Я провів час, переглядаючи IIS Manager. Я думаю, що IIS Manager повинен мати піктограму, яка спрямовує або повідомляє користувачеві про .NET Framework Advnaced Services.
Tony_Henrich

Використовуючи командний рядок, я отримав помилку "Операція завершена, але функція WCF-HTTP-активації не була включена. Потрібна батьківська функція може бути не включена. Ви можете використовувати опцію / enable-особливість / all для автоматичного включення кожної батьківської функції із наступного списку. Якщо батьківські функції (и) вже включені, зверніться до файлу журналу для подальшої діагностики. " Я використовував метод GUI замість того, щоб знати, що я включаю, і він працював.
Бен Адамс

5
Я отримав те ж саме «Необхідний батьківська функція може бути включена» помилка як Бен Андерсон і спробував пропозицію в повідомленні про помилку (додавання в /allаргументі), який потім працював відмінно: DISM /Online /Enable-Feature /all /FeatureName:WCF-HTTP-Activation45.
Troy Gizzi

1
Ви, пане, дивовижні. Ви також можете додати (це крихітна деталь), що це можна зробити залежно від версії .Net Framework. Як і в.NET 3.5 Framework Advanced Services -> Windows Communication Foundation HTTP Activation
rion18

Це рятівник життя. Більшість онлайнових рішень цієї проблеми мають лише увімкнути .Net 3.5 Framework під веб-функціями. ЦЕ НЕ СТАЛО. Ви також повинні зробити крок, згаданий тут.
markaaronky

95

Для Windows Server 2012 рішення дуже схоже на рішення фастера (див. Вище). У диспетчері серверів натисніть Add roles and features, виберіть відповідний сервер, а потім виберіть Features. Під .NET Framework 4.5 Features, ви побачите WCF Services, і під цим ви знайдете HTTP Activation.


Дякую за це! а як щодо. Net 4? ви думаєте, що включення цієї функції зробить те саме для .Net v4.0?
Аладдін Галлас

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

13

Виконайте наступні два кроки на IIS 8.0

Додати новий тип MIME & HttpHandler

  1. Розширення: .svc, тип MIME: application / octet-stream

  2. Шлях запиту: * .svc, Тип: System.ServiceModel.Activation.HttpHandler, Ім'я: svc-Integrated


Найкраще рішення для моєї дуже старої інсталяції Windows 7, яка не вмикає - .Net 3.5 (Http & Non-Http активація) та WAS. Занадто делікатний, щоб перевстановити ОС
user919426

Про цей метод варто знати особливо під час створення та додавання власних обробників. Однак якщо ви будете використовувати «вмикати та вимикати функції Windows», ви отримаєте більшість відомих розширень файлів, що допоможе вам заощадити час додавання кожного окремо (та дізнатися всі правильні деталі)
Daniel Hollinrake


3

Це дійсно те саме рішення, що і рішення Faester та Білла Муна, але ось, як це зробити з PowerShell:

Import-Module Servermanager
Add-WindowsFeature AS-HTTP-Activation

Звичайно, і вас нічого не заважає дзвонити DISMз PowerShell.


Дуже хороша. Дякую за інформацію.
Rod Hartzell

-1

ви можете додати цей код до web.config в asp mvc

   <system.webServer>
    <staticContent>
      <remove fileExtension=".srt" />
      <mimeMap fileExtension=".srt" mimeType="text/srt" />
      <remove fileExtension=".vtt" />
      <mimeMap fileExtension=".vtt" mimeType="text/vtt" />
    </staticContent>
  </system.webServer>

ви можете змінити розширення файлу за допомогою розширення


Привіт @malik - Чи можете ви уточнити, як розширення файлів відображення може змусити працювати svc-endpoints?
фастер

якщо я правильно розумію, ви можете змінити розширення на потрібне. Ви можете подивитися з feedforall.com/mime-types.htm, але ви сказали б інше, вибачте, я не можу зрозуміти.
malik masis
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.