这是我的方法(如果我做错了,请不要犹豫告诉我):
- 编写定义我的对象的XSD文件
- 使用WSCF.blue根据XSD生成WSDL
- 使用WSCF.blue生成Web服务代码
- 实现存根并暴露SVC
到目前为止,我没有遇到任何问题。我可以通过浏览器访问.svc。但问题是部署的WSDL与设计的WSDL不同。
当我尝试使用SOAP UI和设计的WSDL作为源测试服务时,它失败了,因为WSDL是不同的。当我尝试部署它时,它工作正常。
当我尝试使用设计的WSDL(使用SvcUtil.exe)生成客户端(控制台应用程序)时,结果相同:它以相同的方式失败(在EndpointDispatcher异常时ContractFilter不匹配)。它的工作原理我添加了一个服务参考。
我不会开发客户端,但他们将使用WSDL工作的人员必须首先给他们。有没有办法使用设计的WSDL,或者我必须给它们部署的WSDL?
提前致谢。
对不起我的英语,我不是母语人士。
答案 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服务不兼容的代码。