Невозможно обслуживать службы 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, перейдите по
Дэвид

Ответы:


406

Казалось бы, ежу понятно; Служба 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-Activation не была включена. Требуемая родительская функция может быть не включена. Вы можете использовать параметр / enable-feature / all для автоматического включения каждой родительской функции». из следующего списка. Если родительские функции уже включены, обратитесь к файлу журнала для дальнейшей диагностики. ". Вместо этого я использовал метод GUI, чтобы узнать, что я включаю, и это сработало.
Бен Адамс

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

1
Вы, сэр, удивительны. Вы также можете добавить (это маленькая деталь), что это можно сделать в зависимости от версии .Net Framework. Как в.NET 3.5 Framework Advanced Services -> Windows Communication Foundation HTTP Activation
rion18

Это спасатель. В большинстве онлайн-решений этой проблемы вы включаете .Net 3.5 Framework в разделе Веб-функции. Этого не достаточно. Вы также должны сделать шаг, упомянутый здесь.
markaaronky

95

Для Windows Server 2012 решение очень похоже на faester (см. Выше). В диспетчере серверов нажмите 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 Activation) и WAS. Слишком деликатный для переустановки ОС
user919426

Стоит знать об этом методе, особенно при создании и добавлении собственных обработчиков. Однако, если вы используете «включить и выключать функции Windows», вы получите большинство известных расширений файлов, что сэкономит вам время на добавление каждого из них по отдельности (и выяснение всех правильных деталей)
Даниэль Холлинрейк,


3

Это действительно то же решение, что и решение faester и Bill Bill Moon, но вот как вы делаете это с PowerShell:

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

Конечно, ничто не мешает вам звонить DISMиз PowerShell.


Очень хорошо. Спасибо Вам за информацию.
Род Хартцелл

-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-конечные точки?
Фестиваль

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