如何在IIS 6.0上部署WCF服务

时间:2010-01-05 21:31:26

标签: wcf iis-6 http-status-code-404 deployment

我在Windows Server 2003上安装了IIS 6.0。

我安装了.NET 3.5和4 beta 2.“正常”ASP工作正常(完美)。但是当我尝试导航到我的服务(/myServer/MyService.svc)时,我得到了404.找不到页面。

确切地说,我得到了一个404 2“Web服务扩展锁定策略阻止了这个请求。”

我使用ServiceModelReg.exe /ia来确保我知道的扩展名并使用以下方法检查了配置:

admin-Tools,iis,home-tab,configuration,executable-box,以及:

扩展名:.svc,路径:c:\windows\microsoft.net\framework\v4.0.210...,动词:所有动词。

所以一切似乎都好。但我仍然得到404-2。

3 个答案:

答案 0 :(得分:7)

您的“Web服务扩展锁定策略”阻止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

你是否像我一样在v4.0 aspnet_isapi.dll旁边有一个“0”?这是你的问题。您需要启用它:

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/

答案 1 :(得分:2)

你能告诉我们你的服务器端web.config(只是<system.serviceModel>部分)吗?服务器上的服务位置在哪里?

在IIS中托管时,您的服务地址由以下人员定义:

  • 服务器名称(或IP地址)
  • * .svc文件所在的虚拟目录(以及其下的所有子目录)的名称
  • * .svc文件本身

所以它会是这样的:

http://YourServer/YourVirtualDirectory/MyService.svc

您似乎没有在您提到的路径中使用虚拟目录 - 您的* .svc文件是否真的位于Web服务器的根目录中,或者您是否忘记将虚拟目录添加到路径中?

答案 2 :(得分:1)

此博客文章中的信息对于实现此功能非常宝贵。

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

我不确定IIS6但我在IIS7中创建了一个新网站(我无法在虚拟目录下工作,但这可能是我缺乏IIS知识)我将.svc文件放在根目录中在〜/ Services /

一切都开始变得很好。

该博客提到,IIS应该在服务.svc文件的任何时候自动查看〜/ Services /但是没有用。这就是为什么我只是将.svc文件复制到我的网站root。

希望这有帮助。