Как развернуть службу WCF на IIS 6.0 - PullRequest
6 голосов
/ 06 января 2010

У меня IIS 6.0 на Windows Server 2003.

Я установил .NET 3.5 и 4 beta 2. «Нормальные» вещи ASP работают (идеально). Но когда я пытаюсь перейти к своему сервису (/myServer/MyService.svc), я получаю 404. Страница не найдена.

Если быть точным, я получил 404 2 "Политика блокировки расширений веб-служб предотвращает этот запрос."

Я использовал ServiceModelReg.exe /ia, чтобы убедиться, что расширение, которое я знал, и я проверил конфигурацию, используя:

admin-Tools, iis, домашняя вкладка, конфигурация, исполняемый ящик и там:

Расширение: .svc, путь: c:\windows\microsoft.net\framework\v4.0.210..., глаголы: все глаголы.

Так что, кажется, все в порядке. Но я все равно получаю 404-2.

Ответы [ 3 ]

7 голосов
/ 06 мая 2010

Ваша «политика блокировки расширений веб-служб» не позволяет расширению ISAPI ASP.NET 4.0 обрабатывать ваш запрос. Это случилось со мной, проверьте это:

C:\>cscript c:\WINDOWS\system32\iisext.vbs /ListFile
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

Connecting to server ...Done.

Status / Extension Path
------------------------
0  C:\WINDOWS\system32\inetsrv\httpodbc.dll
0  C:\WINDOWS\system32\inetsrv\ssinc.dll
0  C:\WINDOWS\system32\inetsrv\asp.dll
1  C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
0  *.exe
0  C:\WINDOWS\system32\inetsrv\httpext.dll
0  *.dll
1  C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll
1  C:\WINDOWS\system32\MQISE.DLL
0  C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll

Есть ли у вас "0" рядом с v4.0 aspnet_isapi.dll, как у меня? Там твоя проблема. Вам необходимо включить его:

C:\>cscript c:\WINDOWS\system32\iisext.vbs /EnFile C:\WINDOWS\Microsoft.NET\Frame
work64\v4.0.30319\aspnet_isapi.dll
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

Connecting to server ...Done.
Enabling extension file complete.

Для получения дополнительной информации об инструменте iisext.vbs: http://support.microsoft.com/kb/328419/

2 голосов
/ 06 января 2010

Можете ли вы показать нам свой серверный web.config (только раздел <system.serviceModel>)? Где на вашем сервере живет ваш сервис?

При хостинге в IIS адрес вашей службы определяется:

  • имя сервера (или IP-адрес)
  • имя виртуального каталога (плюс любые подкаталоги в нем), в котором находится ваш * .svc файл
  • сам файл * .svc

Так что это будет что-то вроде:

http://YourServer/YourVirtualDirectory/MyService.svc

Похоже, вы не используете виртуальный каталог в указанном вами пути - действительно ли ваш файл * .svc находится в корне веб-сервера, или вы забыли добавить виртуальный каталог к ​​своему пути?

1 голос
/ 12 февраля 2010

Информация в этом блоге оказалась неоценимой для того, чтобы заставить это работать.

http://xamlcoder.com/blog/?p=7

Я не уверен насчет IIS6, но я создал новый веб-сайт в IIS7 (я не мог заставить вещи работать в виртуальном каталоге, но это, вероятно, мое отсутствие знаний IIS), я поместил свой файл .svc в корневой каталог в ~ / Услуги /

Все стало отлично работать.

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

Надеюсь, это поможет.

...