【问题标题】:Hosting WCF service on IIS7.5, receiving 404.0 error在 IIS7.5 上托管 WCF 服务,收到 404.0 错误
【发布时间】:2015-06-08 16:27:46
【问题描述】:

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

Windows 7 企业版

IIS 7.5.7600.16385

已安装 Windows 功能:

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

我放弃了一个简单的“Hello World!” index.html 文件位于 WCF 服务应用程序的根目录。我能够提供该 .html 文件。我的服务位于名为“Hosts”的子目录下。我还在该子目录下放置了一个简单的 index.html 文件——我也可以提供该文件。不过,我无法提供任何 .svc 文件。

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

匿名身份验证 -- 选择“应用程序池身份”

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

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

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

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

我已经检查并重新检查了 URL,我可以提供 .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
    • 我还按照“验证 svc 文件类型在 IIS7.0 中正确映射”列出的步骤进行操作
  • HTTP 404 when accessing .svc file in IIS -- “我们遇到了类似的问题,并且 SVC 处理程序已经正确安装。我们的问题是 ExtensionlessUrl 处理程序在请求到达 SVC 处理程序之前处理请求。要检查这一点 - 在 Web 服务器的 IIS 管理器中的处理程序映射中级别,按顺序查看处理程序列表(这是右侧的一个选项)。如果各种 ExtensionlessUrl 处理程序出现在 SVC 处理程序上方,则重复将它们向下移动,直到它们位于底部。
    • 我确认无扩展处理程序位于底部。
  • 根据另一个论坛帖子的建议,我为 .svc 添加了 MIME 类型。没有变化。

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

【问题讨论】:

  • @Tim,不,我没有尝试过 ServiceModel 注册工具。我刚才跑了。我的服务仍在抛出 404.0.0。昨天下午晚些时候,我注意到我在测试服务器上的 WCF 服务也无法正常工作。我可以浏览它们并加载“您已创建服务”页面。但是,如果我尝试通过应用程序调用 Web 方法,则会收到 404.0 错误。我以前从未在部署 WCF 服务时遇到过这么大的麻烦。
  • 这里的问题完全相同。本地开发 IIS 7.5 和服务器 IIS 6。行为相同。
  • 我不知道为什么这是个问题,但我遇到了完全相同的情况并修复了从端点服务标签中删除地址属性的问题。在这里看到:social.msdn.microsoft.com/Forums/vstudio/en-US/…

标签: c# wcf iis-7.5


【解决方案1】:

我遇到了完全相同的问题,终于找到了解决方法。

关键是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 上方。确保在Web Services Extensions 中允许所需的.Net 版本。比你需要注册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

【讨论】:

    猜你喜欢
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    • 2014-08-31
    • 1970-01-01
    相关资源
    最近更新 更多