我有一个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上得到一个空白页,当我提供的地址。
4条答案
按热度按时间e0bqpujr1#
这可能发生在Windows安装中的“程序和功能”中未安装HTTP激活。检查.Net 3.5和4.6的HTTP激活,以启用通过HTTP请求到IIS中托管的.svc文件打开WCF服务。
sqougxex2#
我认为您可以删除Service.svc之前的地址上的所有文本。这可能是不同URL的问题。
当您指定地址部分时,您告诉WCF该服务仅在该地址上可用。当遍历端点时,WCF不会找到与给定URL匹配的端点并退出。
当您有多个端点时,您需要地址字段。否则你就不会。
读取http://msdn.microsoft.com/en-us/library/ms733749(v=vs.110).aspx
特别是这一部分:
使用IIS托管时,您不需要自己管理ServiceHost示例。在IIS中承载服务时,基址始终是在.svc文件中为服务指定的地址。因此,必须对IIS承载的服务终结点使用相对终结点地址。提供完全限定的端点地址可能会导致服务部署中出现错误。
jyztefdp3#
检查SVC标记中的
Service
属性是否等于您的实现类。检查终结点协定名称。它必须是您的接口的全名。不要添加程序集名称,这将不起作用。
检查
<serviceMetadata httpGetEnabled="true" />
。如果为false,您也会得到空白页。第四个改变帮助了我(但我不知道为什么):删除行为名称
<behavior name="">
并从service
元素中删除behaviorConfiguration
属性。它将成为默认值,因此无论如何都将使用该行为。webghufk4#
1.请确保您创建了一个具有活动用户的应用程序池,如下所示:https://stackoverflow.com/a/19654633/2148387
1.确保在承载WCF的位置创建了Web应用程序
1.检查AppPool和WebApp是否正在运行
1.在Web.config中启用目录浏览,如下所示:https://stackoverflow.com/a/19630263/2148387