【问题标题】:IIS hosted wcf returns me blank pageIIS 托管的 wcf 向我返回空白页
【发布时间】: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,是的,如果我删除我可以浏览的地址,但为什么呢?我不应该提供地址吗?

标签: c# wcf iis


【解决方案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】:
      1. 确保您创建了一个具有活动用户的应用程序池,如下所示:https://stackoverflow.com/a/19654633/2148387

      2. 确保您创建了托管 WCF 的 Web 应用程序

      3. 检查 AppPool 和 WebApp 是否正在运行

      4. 在您的 Web.config 中启用目录浏览,如下所示:https://stackoverflow.com/a/19630263/2148387

      【讨论】:

        猜你喜欢
        • 2019-11-18
        • 1970-01-01
        • 1970-01-01
        • 2014-09-11
        • 1970-01-01
        • 1970-01-01
        • 2011-07-01
        • 2016-06-06
        • 1970-01-01
        相关资源
        最近更新 更多