IIS 托管的 wcf 向我返回空白页
Posted
技术标签:
【中文标题】IIS 托管的 wcf 向我返回空白页【英文标题】:IIS hosted wcf returns me blank page 【发布时间】:2014-01-06 20:09:14 【问题描述】:我有一个 wcf 应用程序。它有“Service1.svc”文件。在我指定的 web.config 文件中
http://localhost:2005/EmployeeService.svc
作为端点。从 Visual Studio 单击浏览时没有问题。但是,当我将它托管在 IIS 服务器上时,我得到一个空白页。有趣的是,如果我从网上删除地址。 config 这次可以看到这个地址的服务了。
http://localhost:2005/EmployeeService.svc
web.config 文件如下:
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="EmployeeServiceBehaviour">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="EmployeeServiceBehaviour" name="EmployeeConfiguration">
<endpoint address="http://localhost:2005/EmployeeService.svc" binding="basicHttpBinding"
bindingConfiguration="" contract="IEmployeeConfiguration" />
</service>
</services>
</system.serviceModel>
<system.web>
<compilation debug="true"/>
</system.web>
<system.webServer>
<directoryBrowse enabled="true"/>
</system.webServer>
</configuration>
您能否解释一下,为什么我在提供地址时在 IIS 上得到一个空白页面。
【问题讨论】:
您需要显示 web.config serviceModel 元素内容以获得有意义的答案。不确定将 URL 设置为“绑定”是什么意思。 我认为他的意思是“端点” 抱歉,编辑了问题 @PatrickHofman,是的,如果我删除我可以浏览的地址,但为什么呢?我不应该提供地址吗? 【参考方案1】:这可能发生在您的 Windows 安装中的程序和功能中未安装 HTTP 激活。检查 .Net 3.5 和 4.6 的 HTTP 激活,以启用通过对 IIS 中托管的 .svc 文件的 HTTP 请求打开 WCF 服务。
【讨论】:
【参考方案2】:我认为您可以删除 Service.svc 之前地址上的所有文本。这可能是不同网址的问题。
当您指定地址部分时,您告诉 WCF 服务仅在该地址上可用。通过端点时,WCF 将找不到与给定 URL 匹配的端点并退出。
当您有多个端点时,您需要地址字段。否则你不会。
阅读http://msdn.microsoft.com/en-us/library/ms733749(v=vs.110).aspx
尤其是这部分:
使用 IIS 托管时,您无需自己管理 ServiceHost 实例。在 IIS 中托管时,基地址始终是在 .svc 文件中为服务指定的地址。因此,您必须为 IIS 托管的服务端点使用相对端点地址。提供完全限定的端点地址可能会导致服务部署出错。
【讨论】:
但主要问题是:如果我正确指定端点地址,我会得到空白页。如果我不指定任何端点地址,我可以获得服务。那么 coerrct 端点地址有什么问题。为什么我得到空白页? 谢谢,这真的澄清了问题 我有另一台计算机,在这台计算机上,即使我提供了地址,我也可以看到我的服务。但是在另一台电脑上我看不到。我真的不明白为什么。【参考方案3】:检查 SVC 标记中的 Service
属性是否等于您的实现类。
检查端点合同名称。它必须是您界面的全名。不要添加程序集名称,它不会起作用。
检查<serviceMetadata httpGetEnabled="true" />
。如果为 false,你也会得到空白页。
第四个改变对我有帮助(但我不知道为什么):删除行为名称 <behavior name="">
并从 service
元素中删除 behaviorConfiguration
属性。它成为默认值,因此无论如何都会使用该行为。
【讨论】:
【参考方案4】:确保您创建了一个具有活动用户的应用程序池,如下所示:https://***.com/a/19654633/2148387
确保您创建了托管 WCF 的 Web 应用程序
检查 AppPool 和 WebApp 是否正在运行
在您的 Web.config 中启用目录浏览,如下所示:https://***.com/a/19630263/2148387
【讨论】:
以上是关于IIS 托管的 wcf 向我返回空白页的主要内容,如果未能解决你的问题,请参考以下文章
IIS 上的 Asp.net Core 2 发布项目只返回一个空白页?
Win7 Prof. 64bit 下的IIS 7.5 返回空白页(根本没有HTML)