【问题标题】:How to deploy WCF service on IIS 6.0如何在 IIS 6.0 上部署 WCF 服务
【发布时间】:2011-01-01 19:51:36
【问题描述】:

我在 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。

【问题讨论】:

  • 是你的选择/希望 .svc 文件已经被 .NET 4 处理了吗??

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


【解决方案1】:

您的“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 上运行所需的时间比我预期的要长。
【解决方案2】:

事实证明,这篇博文中的信息对于实现这一点非常宝贵。

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

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

一切都开始运转良好。

该博客提到 IIS 应该在提供 .svc 文件但不起作用的任何时候自动查找 ~/Services/。这就是为什么我只是将 .svc 文件复制到我的网站根目录。

希望这会有所帮助。

【讨论】:

    【解决方案3】:

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

    在 IIS 中托管时,您的服务地址定义为:

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

    所以应该是这样的:

    http://YourServer/YourVirtualDirectory/MyService.svc
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-26
      相关资源
      最近更新 更多