WSDL-First方法,不是部署的WSDL

时间:2014-03-24 15:37:43

标签: c# web-services wcf soap

这是我的方法(如果我做错了,请不要犹豫告诉我):

- 编写定义我的对象的XSD文件

- 使用WSCF.blue根据XSD生成WSDL

- 使用WSCF.blue生成Web服务代码

- 实现存根并暴露SVC

到目前为止,我没有遇到任何问题。我可以通过浏览器访问.svc。但问题是部署的WSDL与设计的WSDL不同。

当我尝试使用SOAP UI和设计的WSDL作为源测试服务时,它失败了,因为WSDL是不同的。当我尝试部署它时,它工作正常。

当我尝试使用设计的WSDL(使用SvcUtil.exe)生成客户端(控制台应用程序)时,结果相同:它以相同的方式失败(在EndpointDispatcher异常时ContractFilter不匹配)。它的工作原理我添加了一个服务参考。

我不会开发客户端,但他们将使用WSDL工作的人员必须首先给他们。有没有办法使用设计的WSDL,或者我必须给它们部署的WSDL?

提前致谢。

对不起我的英语,我不是母语人士。

1 个答案:

答案 0 :(得分:1)

是的,您可以像这样公开自己的wsdl(使用wscf.blue演练中的示例数据),externalMetadataLocation是重要部分:

  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="MyBehavior">
          <serviceMetadata httpGetEnabled="true" externalMetadataLocation="../ContractMetaData/RestaurantService.wsdl"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    ...
    <services>
      <service name="RestaurantService.RestaurantService" behaviorConfiguration="MyBehavior">
        ...
      </service>
    </services>
  </system.serviceModel>

但我没有任何运气与“添加服务参考”一起使用。 VS不断生成与wscf.blue生成的Web服务不兼容的代码。