我有一个wcf应用程序。它有“Service1.svc”文件。在我指定的web.config文件中
http://localhost:2005/EmployeeService.svc
作为终点。从Visual Studio单击浏览时没有问题。但是,当我在IIS服务器上托管它时,我得到一个空白页面。有趣的是,如果我从网上删除地址。配置这次我可以在这个地址看到服务。
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上显示空白页。
答案 0 :(得分:2)
我认为您可以在Service.svc之前删除地址上的所有文本。这可能是不同网址的问题。
指定地址部分时,告诉WCF该服务仅在该地址上可用。在浏览端点时,WCF将找不到与给定URL匹配的节目并进行纾困。
如果您有多个端点,则需要地址字段。否则你不会。
阅读http://msdn.microsoft.com/en-us/library/ms733749(v=vs.110).aspx
特别是这一部分:
使用IIS托管时,您不自行管理ServiceHost实例。在IIS中托管时,基址始终是服务的.svc文件中指定的地址。因此,您必须为IIS托管的服务端点使用相对端点地址。提供完全限定的端点地址可能会导致服务部署出错。
答案 1 :(得分:2)
这可能发生在Windows安装中的“程序和功能”中未安装HTTP激活。检查.Net 3.5和4.6的HTTP激活,以启用通过HTTP请求打开WCF服务到IIS中托管的.svc文件。
答案 2 :(得分:1)
检查SVC标记中的Service
属性是否等于您的实现类。
检查端点合同名称。它必须是您的界面的完整名称。不要添加程序集名称,它将无法正常工作。
检查<serviceMetadata httpGetEnabled="true" />
。如果为false,您也会得到空白页。
第四次改变帮助了我(但我不明白为什么):删除行为名称<behavior name="">
并从behaviorConfiguration
元素中删除service
属性。它变为默认值,因此无论如何都会使用该行为。
答案 3 :(得分:0)
确保在托管WCF的位置创建了Web应用程序
检查AppPool和WebApp是否正在运行
启用目录在Web.config中浏览,如下所示:https://stackoverflow.com/a/19630263/2148387