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 属性是否等于您的实现类。

检查端点合同名称。它必须是您界面的全名。不要添加程序集名称,它不会起作用。

检查&lt;serviceMetadata httpGetEnabled="true" /&gt;。如果为 false,你也会得到空白页。

第四个改变对我有帮助(但我不知道为什么):删除行为名称 &lt;behavior name=""&gt; 并从 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)

配置IIS后浏览却是空白页,所有的.asp网页全是空白,请各位高手帮帮忙吧,给解决一下,急!急!急!

为啥IIS打开PHP页面是空白

为啥IIS打开PHP页面是空白

当我在本地机器上运行或调试 MVC 应用程序时出现空白页