如何在IIS 6.0上部署WCF服务

6

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

我安装了.NET 3.5和4 beta 2。"普通"的ASP功能可以正常使用。但是当我尝试导航到我的服务(/myServer/MyService.svc)时,我得到了一个404错误页面未找到。

确切地说,我得到了一个404 2 "Web service extension lockdown policy prevents this request."的错误。

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

管理工具,iis,主页选项卡,配置,可执行框,然后:

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

所以一切看起来都没问题。但我仍然得到了404-2的错误。


您是否选择或希望.svc文件已经被.NET 4处理? - marc_s
3个回答

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/


这正是我的问题。我目前正在解决一个旧服务器上的问题,让WCF在Win2003/IIS6上工作所花费的时间比我预期的要长。 - JCallico

2

能否向我们展示您的服务器端web.config文件(仅包括<system.serviceModel>部分)?您的服务位于服务器的哪个位置?

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

  • 服务器名称(或IP地址)
  • 包含*.svc文件的虚拟目录的名称(以及该目录下的任何子目录)
  • *.svc文件本身

因此,它可能是这样的:

http://YourServer/YourVirtualDirectory/MyService.svc

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


1

这篇博客文章中的信息对于让这个工作起来非常宝贵。

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

我不确定IIS6,但我在IIS7中创建了一个新的网站(我无法在虚拟目录下使事情正常工作,但这可能是因为我对IIS知识的缺乏)。我将我的.svc文件放在根目录和~/Services/中。

一切都开始运行得很好。

博客提到,每当提供.svc文件时,IIS应自动查找~/Services/,但这并没有起作用。这就是为什么我只是将.svc文件复制到我的网站根目录的原因。

希望这可以帮助到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接