WCF на IIS8; * Отображение обработчика .svc не работает


273

Я пытаюсь запустить службу wcf в IIS8 в 2012 году, сборка 8400.

При установке веб-роли wcf (под 3.51) не было найдено, как в 2008 году.

При установке отображение обработчика svc отсутствовало, поэтому я сделал:

%windir%\Microsoft.NET\Framework\v3.0\WindowsCommunication Foundation\ServiceModelReg.exe i

Теперь есть сопоставление обработчика, но я все еще получаю:

The resource you are looking for does not have a handler associated with it.

(Я удалил статический обработчик файлов.)

Сайт использует классический конвейер, чтобы использовать олицетворение.

Ответы:


554

Более конкретно:

  1. Выполнить Server Manager(на панели задач и в меню Пуск)
  2. Выберите сервер для администрирования (возможно, локальный сервер)
  3. Прокрутите вниз до Roles and Featuresраздела " ".
  4. Выберите " Add Role or Feature" из выпадающего списка задач
  5. В Add Role or Feature Wizardдиалоговом окне « » нажмите вниз до « Features» в списке страниц слева.
  6. Разверните ".Net 3.5"или ".Net 4.5", в зависимости от того, что вы установили. (Вы можете вернуться на rolesэкран " ", чтобы добавить, если у вас нет.
  7. Под " WCF Services" установите флажок " HTTP-Activation". Вы также можете добавить не-http типы, если знаете, что они вам нужны (tcp, именованные каналы и т. Д.).
  8. Нажмите "Install"кнопку.

6
Этот не работал в моем случае, потому что я на Windows 8 (с IIS 8).
Джош Моуч

9
Если вы впервые запустили ServiceModelReg.exe –i из каталога v3.0, вам также необходимо запустить ServiceModelReg.exe –ua, чтобы отменить его, прежде чем это сработает.
Скотт Андерсон

14
Из командной строки: dism / Online / Enable-Feature / FeatureName: WCF-HTTP-Activation / All
Ричард

4
Как насчет gyorgybalassy.wordpress.com/2012/09/24/… ? какой способ лучше?
Kiquenet

9
Я буквально часами смотрел на страницу «Роли сервера». Я понятия не имел, что вы можете просто нажать «Далее» или внизу «Функции» слева. o_O +1
Дэн Бешард

219

Я должен был включить HTTP Activationв .NET Framework 4.5 Advanced Services>WCF Services

Включить активацию HTTP


10
это то, что вам нужно сделать для Windows 8, где нет менеджера серверов
Simon_Weaver

2
Это ответ, когда вы размещаете службу WCF в Windows 8 и Windows 8.1
vcRobe

Активация http. Независимо от того, используете ли вы http / https? Таким образом, это суммарное название для обоих или есть еще различие, необходимое там?
Томас,

2
Я сталкивался с подобной проблемой на IIS 10, Активация Http отключена по умолчанию. Включение этого сразу решило проблему. Спасибо!
Дхрувпатель

4
Работает для Windows 10, IIS 10
watbywbarif

45

включите следующее на «Включение или выключение функций Windows»

а) .Net Framework 3.5 - активация WCF HTTP и активация без Http

б) все под службами WCF


1
Мне нужно было только включить .Net Framework 3.5 - активация WCF HTTP
daveywc

40

Windows 8 с IIS8

  • Ударить Windows+X
  • Выбрать Programs and Features(первый элемент в списке)
  • Выберите Turn Windows Features on or offслева
  • расширять .NET Framework 4.5 Advanced Services
  • расширять WCF Services
  • включить HTTP Activation

любой сценарий PowerShell для сделать это программно?
Kiquenet

у нас есть один сервер, поэтому я никогда не
вхожу

28

Я предпочитаю делать это через скрипт

REM install the needed Windows IIS features for WCF
dism /Online /Enable-Feature /FeatureName:WAS-WindowsActivationService
dism /Online /Enable-Feature /FeatureName:WAS-ProcessModel
dism /Online /Enable-Feature /FeatureName:WAS-NetFxEnvironment
dism /Online /Enable-Feature /FeatureName:WAS-ConfigurationAPI
dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation
dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation45

REM Feature Install Complete
pause

2
Спасибо dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation45было достаточно для меня ...
Shubh

Это лучший способ исправить это в новой версии Windows Server 2012R2 +. Вероятно, работает и в 2012 году, но, к счастью, у меня больше нет тех, чтобы попробовать это.
Пол Штурм

а используя скрипт PowerShell ?
Кикенет

@Kiquenet Все эти команды будут работать в PowerShell. Если вы попытались скопировать команду Shubh напрямую, вам нужно добавить разрыв строки или точку с запятой после первой команды перед второй командой dism.
kb4000

10

Нам удалось устранить ошибку под Windows Server 2012:

  1. Удаление из «мастера удаления ролей и компонентов». Возможности .NET Framework 4.5 / ASP.NET 4.5 и все его зависимые функции
  2. Переустановка удаленных функций.

Кажется, порядок установки является причиной.

Также убедитесь, что у вас установлена ​​активация HTTP в службах WCF.


Я сделал это и, похоже, убил мой сервер. Я только удалил материал asp.net из iis, но теперь, когда я удаленно, у меня появляется черный экран и окно командной строки, как будто сервер теперь только «ядро сервера» ... :(
MGOwen

@MGOwen, когда вы удаляете некоторые функции .net 4.5, похоже, он также удаляет графическую оболочку сервера, это можно добавить снова с помощью некоторых команд.
Джон

3

Для компьютеров с Windows 8 нет приложения «Диспетчер серверов» (по крайней мере, я не смог его найти).

Хотя мне удалось решить проблему . Я не уверен, в какой последовательности я выполнил следующие операции, но похоже, что одно / несколько из следующих действий помогают:

  1. Включите следующее в «Включение или выключение функций Windows» a) .Net Framework 3.5 - активация WCF HTTP и активация без Http b) все в службах WCF (как указано в одном из ответов на этот вопрос)

  2. выполнил «ServiceModelReg.exe –i» в папке «% windir% \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation \»

  3. Зарегистрированный ASP.NET 2.0 с помощью двух команд (в папке C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727):

    aspnet_regiis -ga "NT AUTHORITY \ NETWORK SERVICE" aspnet_regiis -iru

  4. Перезагрузка ПК ... похоже, что в результате действий ## 3 и 4 что-то сломалось в моей конфигурации ASP.NET

  5. Повторите действие № 2

  6. Установите два других параметра из «Программы и компоненты»: .Net Framework 4.5 Advanced Services. Я проверил обе опции: ASP.NET 4.5 и службы WCF.

  7. Перезагрузите пул приложений.

Последовательность отчасти сумасшедшая, но это помогло мне и, вероятно, поможет другим


Ключевой бит включает активацию HTTP.
Умар Фарук Хаваджа



2

с помощью PowerShell вы можете установить необходимую функцию с помощью:

Add-WindowsFeature 'NET-HTTP-Activation'

1

На Windows 10 (клиент) вы также можете написать это с помощью

Enable-WindowsOptionalFeature -Online -NoRestart -FeatureName WCF-HTTP-Activation45 -All

Обратите внимание, что эта команда отличается от команды сервера


0

Это функция активации HTTP в .NET Framework. Также требуется функция активации Windows.


0

Это было действительно глупо для меня. Добавление здесь, поскольку это одна из самых популярных тем по вопросам svc 404.

У меня в настройках проекта "\ Web \ Project URL" вставлено:

http://blah.webservice.local.blahblah.com/Blah.svc

И по какой-то неизвестной причине (сделав это тысячу раз) не сразу заметили, что имя файла .svc было в конце.

DOH!

Я только что вставил адрес из моего тестового клиента WCF и недостаточно проверил его. В фоновом режиме было создано приложение IIS по адресу .svc, и я ничего не получал из IIS. Я не мог понять, как я не мог даже поразить файл .svc.

Простое исправление, очевидно, просто удалить приложение в IIS и изменить URL проекта.

После почти 20 лет в этом, вы все еще можете делать ошибки школьника / ошибки новичка. Надеюсь, это кому-нибудь поможет.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.