WCFExtras web.config指向(我的)外部服务

时间:2012-03-30 15:55:27

标签: wcf wsdl

我正在尝试使用WCFExtras从我的服务(ExternalOrderService.svc)获取单个文件WSDL。

我修改了WCFExtras SampleServer项目中的原始web.config,添加了对我的服务的引用。 ServerSample工作正常,我成功调用了Sample.WsdlSample wsdl文件,但我没有成功调用我的服务wsdl。 以下配置有什么问题?

<system.serviceModel>
    <services>
      <service behaviorConfiguration="Sample.WsdlSampleBehavior" name="Sample.WsdlSample">
        <endpoint address="" behaviorConfiguration="Sample.WsdlSampleEndpointBehavior" binding="basicHttpBinding" contract="Sample.IWsdlSample"/>
      </service>
      <service behaviorConfiguration="Sample.SoapHeadersSampleBehavior" name="Sample.SoapHeadersSample">
        <endpoint address="" behaviorConfiguration="Sample.SoapHeadersSampleEndpointBehavior" binding="basicHttpBinding" contract="Sample.ISoapHeadersSample"/>
      </service>
      <service behaviorConfiguration="ExternalOrderServiceBehavior" name="ExternalOrderService">
        <endpoint address="" binding="basicHttpBinding" contract="Monclick.MVC2.Services.External.IExternalOrderService" />
      </service>
    </services>
    <behaviors>
      <endpointBehaviors>
        <behavior name="Sample.WsdlSampleEndpointBehavior">
          <wsdlExtensions location="http://127.0.0.1/Sample/WsdlSample.svc" singleFile="True"/>
        </behavior>
        <behavior name="Sample.SoapHeadersSampleEndpointBehavior">
          <wsdlExtensions location="http://127.0.0.1/Sample/SoapHeadersSample.svc"/>
        </behavior>
        <behavior name="ExternalOrderServiceBehavior">
          <wsdlExtensions location="http://api.local/Services/ExternalOrderService.svc" singleFile="true" />
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="Sample.WsdlSampleBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" httpHelpPageEnabled="false"/>
        </behavior>
        <behavior name="Sample.SoapHeadersSampleBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
        <behavior name="ExternalOrderServiceBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />   
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <extensions>
      <behaviorExtensions>
        <!-- Declare that we have an extension called WSDL Extras-->
        <add name="wsdlExtensions" type="WCFExtras.Wsdl.WsdlExtensionsConfig, WCFExtras, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
      </behaviorExtensions>
    </extensions>
  </system.serviceModel>

2 个答案:

答案 0 :(得分:0)

区别在于地址。工作的服务有“127.0.0.1”,那个不起作用的服务有“api.local”。

尝试将“api.local”替换为“127.0.0.1”。

我看到的另一件事是你没有定义任何mex端点。

答案 1 :(得分:0)

问题出在这段代码中:

 <service behaviorConfiguration="ExternalOrderServiceBehavior" name="ExternalOrderService"> 
    <endpoint address="" binding="basicHttpBinding" contract="Monclick.MVC2.Services.External.IExternalOrderService" /> 
  </service> 

您尚未为服务的端点定义behaviorConfiguration。更改为此,它应该工作:

 <service behaviorConfiguration="ExternalOrderServiceBehavior" name="ExternalOrderService"> 
    <endpoint address="" behaviorConfiguration="ExternalOrderServiceBehavior" binding="basicHttpBinding" contract="Monclick.MVC2.Services.External.IExternalOrderService" /> 
  </service>