WCF WebService缺少WSDL文件

时间:2010-03-24 08:56:57

标签: c# wcf

我使用默认功能创建了简单的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>

3 个答案:

答案 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。