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 发布 - 失败,没有错误消息的主要内容,如果未能解决你的问题,请参考以下文章