如何在IIS 6.0上部署WCF服务

6 deployment wcf iis-6 http-status-code-404

我在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,配置,可执行文件框,以及:

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

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

Joe*_*ley 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
Run Code Online (Sandbox Code Playgroud)

像我这样的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.
Run Code Online (Sandbox Code Playgroud)

有关iisext.vbs工具的更多信息:http://support.microsoft.com/kb/328419/


mar*_*c_s 2

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

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

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

所以它会是这样的:

http://YourServer/YourVirtualDirectory/MyService.svc
Run Code Online (Sandbox Code Playgroud)

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