C# WSDL优先的方法,而不是部署相同的WSDL
以下是我的方法(如果我做错了,请毫不犹豫地告诉我): -编写定义我的对象的XSD文件 -使用WSCF.blue根据XSD生成WSDL -使用WSCF.blue生成Web服务代码 -实现存根并公开SVC 到目前为止,我没有面临任何问题。我可以通过浏览器访问.svc。但问题是,部署的WSDL与设计的WSDL不同 当我尝试使用soapui和设计的WSDL作为源来测试服务时,它失败了,因为WSDL是不同的。当我尝试部署一个时,它工作得很好 当我尝试使用设计的WSDL(使用SvcUtil.exe)生成客户机(控制台应用程序)时,结果也是一样的:它以同样的方式失败(EndpointDispatcher异常中的ContractFilter不匹配)。当我添加一个服务引用时,它就起作用了 我不会开发客户机,但他们将在WSDL上工作的人员必须首先提供给他们。有没有一种方法可以使用设计好的WSDL,或者我必须给他们一个部署好的WSDL 提前谢谢C# WSDL优先的方法,而不是部署相同的WSDL,c#,web-services,wcf,soap,C#,Web Services,Wcf,Soap,以下是我的方法(如果我做错了,请毫不犹豫地告诉我): -编写定义我的对象的XSD文件 -使用WSCF.blue根据XSD生成WSDL -使用WSCF.blue生成Web服务代码 -实现存根并公开SVC 到目前为止,我没有面临任何问题。我可以通过浏览器访问.svc。但问题是,部署的WSDL与设计的WSDL不同 当我尝试使用soapui和设计的WSDL作为源来测试服务时,它失败了,因为WSDL是不同的。当我尝试部署一个时,它工作得很好 当我尝试使用设计的WSDL(使用SvcUtil.exe)生成客户
请原谅,我的英语不是母语。是的,您可以像这样公开自己的wsdl(使用wscf.blue演练中的示例数据),外部MetadataLocation是重要部分:
<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服务不兼容的代码。谢谢您的回答!不幸的是,我已经将部署的WSDL发送给了另一个团队。但是下次我会记住的。(我投票接受了答案,但我没有时间检查)