IIS 承载的服务失败
如果 IIS 承载的某个服务失败,则可能会看到以下症状之一:
- 当浏览到 .svc 文件时,不能识别该文件,浏览器显示空白页,或显示文件的文本而不是服务的帮助页,如下面的示例所示。
<%@ServiceHost language=c# Debug="true" Service="Microsoft.ServiceModel.Samples.CalculatorService" %>
- 当试图访问 Web 承载的服务时,可能会遇到以下异常。
Unhandled Exception: System.ServiceModel.ProtocolException: The remote server returned an unexpected response: (405) Method not allowed.
- 如果在安装 Windows Communication Foundation (WCF) 之后安装了 IIS,必须运行以下命令。
"%WINDIR%Microsoft.NetFrameworkv3.0Windows Communication FoundationServiceModelReg.exe" -r
验证是否已将 svc 文件类型映射为可由 IIS 5.1 或 6.0 中的 aspnet_isapi.dll 处理
-
在“控制面板”中打开“计算机管理”。
-
展开“服务和应用程序”、“Internet 信息服务”。
-
右键单击“网站”并选择“属性”。
-
在“主目录”选项卡上单击“配置”。
-
在应用程序映射列表中验证 .svc 文件是否已映射到 aspnet_isapi.dll。如果尚未映射该文件:
- 单击“添加”。
- 在“添加/编辑应用程序扩展名映射”对话框中,单击“浏览”。
- 浏览到包含 aspnet_isapi.dll 的文件夹,然后单击“打开”。
- 指定 .svc 作为扩展名。
- 确保“检查文件是否存在”未选中。
- 单击“确定”,然后再次单击“确定”以返回到“网站属性”对话框。
-
单击“确定”关闭对话框。
验证 svc 文件类型已在 IIS 7.0 中正确映射
-
打开命令提示符窗口并键入 start inetmgr,以打开 Internet 信息服务 (IIS) MMC 管理单元。
-
在左侧窗格中,展开包含计算机名称的节点,然后展开“网站”节点,然后选择“默认网站”。
-
在“功能视图”中双击“处理程序映射”。
-
在应用程序映射列表中验证 .svc 文件是否已映射到 aspnet_isapi.dll。如果尚未映射该文件:
- 单击“添加管理处理程序”。
- 在“请求路径:”中键入 *.svc。
- 在“类型”文本框中键入 System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089。
- 在“名称:”文本框中键入 svc-Integrated。
- 单击“确定”。
- 单击“添加脚本映射”。
- 在“请求路径:”中键入 *.svc。
- 在“可执行文件:”文本框中键入 %SystemRoot%Microsoft.NETFrameworkv2.0.50727aspnet_isapi.dll。
- 在“名称:”文本框中键入 svc-ISAPI-2.0。
- 使用“上移/下移”控件,确保托管处理程序 (svc-Integrated) 在列表中出现在 aspnet_isapi (svc-ISAPI-2.0) 处理程序之前。
- 单击“确定”。