我使用默认功能创建了简单的wcf服务,并在IIS7中托管。它工作正常并将数据呈现给客户端。但是,当我尝试点击服务中的wsdl链接时,显示“页面无法显示”。让我知道会出现什么问题 。 当我尝试单击下面的链接(http://win-nsms.smsserver.com/VirtualFolder/MyService.svc?wsdl)时,WSDL文件未显示在浏览器中。相反,我在页面
中收到“页面无法显示”错误现在,如果我在URL中将“win-nsms.smsserver.com”更改为“localhost”,则会显示WSDL文件。
是的我在配置中添加了行为配置,如下所示
<system.serviceModel>
<services>
<service name="WcfServiceSample.Service1" behaviorConfiguration="WcfServiceSample.Service1Behavior">
<endpoint address="" binding="wsHttpBinding" contract="WcfServiceSample.IService1">
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<serviceHostingEnvironment>
<baseAddressPrefixFilters>
<add prefix="http://win-nsms.smsserver.com"/>
</baseAddressPrefixFilters>
</serviceHostingEnvironment>
<behaviors>
<serviceBehaviors>
<behavior name="WcfServiceSample.Service1Behavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
答案 0 :(得分:1)
您是否允许检索服务元数据?
在配置文件的behavior部分中,添加如下所示的新行为:
<behaviors>
<serviceBehaviors>
<behavior name="HttpGetMetadata">
<serviceMetadata httpGetEnabled="True"/>
</behavior>
</serviceBehaviors>
</behaviors>
然后告诉您的服务使用此行为:
<system.serviceModel>
<services>
<service name="MyService"
behaviorConfiguration="HttpGetMetadata">
....
这告诉您的服务允许通过http检索服务元数据(WSDL)。要确认您可以浏览到相应的网址。
答案 1 :(得分:0)
是否在网站的IIS中添加了“mymachinename.domainname.com”作为主机掩码?
您可能需要设置服务的基本地址。
<serviceHostingEnvironment>
<baseAddressPrefixFilters>
<add prefix="http://mymachinename.domainname.com"/>
</baseAddressPrefixFilters>
</serviceHostingEnvironment>
我遇到类似的问题,该服务100%为domain.com而不是www.domain.com。我必须将后者设置为重定向到前者并将基地址设置为前者。
HTH!
答案 2 :(得分:-1)
您是否启用了WDS曝光?标准设置不显示WSDL。