在IIS7.5上托管WCF服务,收到404.0错误

时间:2015-06-08 16:27:46

标签: c# wcf iis-7.5

我刚刚收到一台新的开发笔记本电脑,现在我无法在新笔记本电脑上运行我的一个WCF服务。

Windows 7企业版

IIS 7.5.7600.16385

已安装的Windows功能:

  • 互联网信息服务
    • 网络管理工具
    • IIS 6管理兼容性
    • IIS管理控制台
    • IIS管理脚本和工具
    • IIS管理服务
  • 万维网服务
    • 应用程序开发功能(所有子功能)
    • 常见的HTTP功能
      • 默认文档
      • 目录浏览
      • HTTP错误
      • HTTP重定向
      • 静态内容(所有子功能)
    • 运行状况和诊断(所有子功能)
    • 演出功能(所有子功能)
    • 安全性(所有子功能)
  • 互联网信息服务主席Web核心
  • Microsoft .NET Framework 3.5.1(所有子功能)
  • Windows进程激活服务(所有子功能)

我放弃了一个简单的" Hello World!"在WCF服务应用程序的根目录下的index.html文件。我能够提供.html文件。我的服务位于名为" Hosts"的子目录下。我还在该子目录下删除了一个简单的index.html文件 - 我也能够提供该文件。我不能提供任何我的.svc文件。

http://localhost/mywcfapplication/Hosts/IncidentService.svc

匿名身份验证 - "应用程序池身份"被选中

服务正在自己的应用程序池中运行。关于应用程序池:

  • .NET Framework版本:v2.0
  • 启用32位应用程序:false
  • 管理管道模式:经典
  • 身份:ApplicationPoolIdentity

我最近在测试环境中的新Windows Server 2012 R2 Web服务器上设置了这些服务(旧测试服务器已停用)。在服务器上,我必须向应用程序池用户授予文件系统目录(IIS_IUSRS \ apppoolname)的权限,但我的笔记本电脑似乎不喜欢这样。

当我尝试浏览此应用程序下的任何.svc文件时,我收到404.0错误。 IIS告诉我最可能的原因是:•Web服务器上不存在指定的目录或文件。 •URL包含印刷错误。 •自定义筛选器或模块(如URLScan)限制对文件的访问。

我已检查并重新检查了网址,我可以提供.html文件。我确认.svc文件确实存在。我不知所措。我忽略了什么?

研究:

IIS7.5 WCF Service - HTTP Error 401.3 (Even after adding IIS_IUSRS)

Hosting WCF service on IIS7.5

Windows 7 IIS7.5 and asp application Error HTTP 404.0 - Not Found

更新

6/8/15 - 我将IIS AppPool\AppPoolName添加到IIS_IUSRS组。没有变化。

6/9/15 -

  • 我跑了servicemodelreg -i。没有变化。
  • https://msdn.microsoft.com/en-us/library/ms752252(v=vs.90).aspx
    • 因为我感到绝望,我跑了aspnet_regiis –i –enable然后"%WINDIR%\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe" -r
    • 我还按照列出的步骤"来验证在IIS7.0中正确映射了svc文件类型"
  • HTTP 404 when accessing .svc file in IIS - "我们遇到了类似的问题,SVC处理程序已经正确安装。我们的问题是ExtensionlessUrl处理程序在到达SVC处理程序之前处理请求。要检查这一点 - 在Web服务器级别的IIS管理器中的Handler Mappings中,按顺序查看处理程序列表(它是右侧的选项)。如果各种ExtensionlessUrl处理程序出现在SVC处理程序之上,则反复向下移动它们直到它们位于底部。"
    • 我确认无扩展处理程序位于底部。
  • 根据另一篇论坛帖子的建议,我为.svc添加了一个MIME类型。没有变化。

2015年6月15日 -   - 日志文件:u_ex150615.log

1 个答案:

答案 0 :(得分:0)

我得到了完全相同的问题,并最终找到了解决方法。

关键是WCF需要一个集成的管道才能正常工作。在Windows 7's IIS 7.7我通过将Application Pool设置为使用Integrated Pipeline模式解决了问题(它位于Classic Mode中)。但Windows Server 2003's IIS 6不适用于集成管道,因此Microsoft .Net使用Web Services Extensions,您可以IIS 6检查,Web Sites正上方。确保.Net中允许使用所需的Web Services Extensions版本。您需要注册Service Model扩展名。

以下是我的所作所为:

%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i
%windir%\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe -i