2010-01-05 4 views
6

У меня есть IIS 6.0 на Windows Server 2003.Как развернуть WCF службу на IIS 6.0

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

Чтобы быть точным, я получил 404 2 «политика блокировки расширения веб-сервиса, предотвращающая этот запрос».

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

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

Extension : .svc, path: c:\windows\microsoft.net\framework\v4.0.210..., глаголы: все глаголы.

Так что все кажется ОК. Но я все еще получаю 404-2.

+0

является это ваш выбор/желание, чтобы .svc файлы будут обрабатываться .NET 4 уже ?? –

ответ

2

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

При размещении в IIS, ваш адрес службы определяется по формуле:

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

Так было бы что-то вроде:

http://YourServer/YourVirtualDirectory/MyService.svc 

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

1

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

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

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

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

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

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

7

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

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/

+0

Спасибо за отличную деталь. Вы решили мою проблему. –

+0

благодарит за этот пост – holzleube

+0

Это была моя проблема. В настоящее время я пытаюсь устранить проблему на старом сервере, и для WCF, работающего на Win2003/IIS6, потребовалось больше времени, чем я ожидал. – JCallico

Смежные вопросы