WCF 服务的 IIS 发布 - 失败,没有错误消息

Posted

技术标签:

【中文标题】WCF 服务的 IIS 发布 - 失败,没有错误消息【英文标题】:IIS publish of WCF service -- fails with no error message 【发布时间】:2010-11-04 13:29:18 【问题描述】:

我有一个 WCF 服务,我从 Visual Studio 2008 发布到 IIS 6。根据 VS 的输出窗口,发布成功,没有错误消息或警告。当我查看 IIS 时,创建了虚拟目录,但目录中没有列出 .svc。该目录只有我的 web.config 和一个 bin。任何调用我的 WCF 服务的尝试都会失败,因为它们不存在。 我怎样才能看到出错信息? 通过反复试验,我发现在发布之前更改我的 app.config 会使服务出现。即我的 app.config 文件有以下几行: <binding ...> <security mode="Transport"> <transport clientCreditionalType="None"/> </security> </binding>

如果我将“传输”切换为“无”,那么我的服务会显示在 IIS 上。但是我确实在服务器上的 IIS 上安装了一个证书,据我所知,服务器上的所有配置都正确。

事件日志中没有错误消息。

我如何才能找到更多关于服务未能显示的错误消息?

【问题讨论】:

【参考方案1】:

尝试使用 IIS 6.0 将您的 WCF 项目原样复制到您的机器上,而不使用 VS 的 Publish。如果有帮助,那么问题出在 VS 内,否则问题出在 IIS 上。确保 .NET Framework 3.5 和 ASP.NET 安装在 IIS 计算机上。然后确保有 .svc 扩展名的映射处理程序。

希望对你有帮助

【讨论】:

【参考方案2】:

要了解更多信息,请打开 wcf 日志记录。最简单的方法是使用 wcf 配置工具。

根据您的评论进行编辑:我们发布服务的方式是使用 setup 项目创建一个 msi 包。有几个输出需要包括在内:

    主要输出(即 dll 的)必须进入 bin 目录。 内容输出。您必须创建 svc 文件并将它们标记为内容。

【讨论】:

不好 -- WCF 日志记录仅在服务运行时应用。我什至还没有达到这一点——我被困在出版上。【参考方案3】:

要在 IIS 7 或 8 中发布 WCF 服务,您必须在 web.config 中为 svc 扩展注册处理程序:

<system.webServer>
  <handlers>
    <add name="svc" path="*.svc" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </handlers>
</system.webServer>

(System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 for .Net 3.5)

【讨论】:

以上是关于WCF 服务的 IIS 发布 - 失败,没有错误消息的主要内容,如果未能解决你的问题,请参考以下文章

无法从 IIS 访问我的 WCF [关闭]

在 IIS 中托管 WCF 服务时协议映射错误

WCF Restful 服务 IIS 错误

在 IIS 上托管 WCF 后出现“请求错误”

无法在 IIS 中正确托管 WCF 服务。错误 404

IIS 托管的 WCF 服务返回 HTTP 400 错误请求