C# 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)生成客户

以下是我的方法(如果我做错了,请毫不犹豫地告诉我):

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

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

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

-实现存根并公开SVC

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

当我尝试使用soapui和设计的WSDL作为源来测试服务时,它失败了,因为WSDL是不同的。当我尝试部署一个时,它工作得很好

当我尝试使用设计的WSDL(使用SvcUtil.exe)生成客户机(控制台应用程序)时,结果也是一样的:它以同样的方式失败(EndpointDispatcher异常中的ContractFilter不匹配)。当我添加一个服务引用时,它就起作用了

我不会开发客户机,但他们将在WSDL上工作的人员必须首先提供给他们。有没有一种方法可以使用设计好的WSDL,或者我必须给他们一个部署好的WSDL

提前谢谢


请原谅,我的英语不是母语。

是的,您可以像这样公开自己的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发送给了另一个团队。但是下次我会记住的。(我投票接受了答案,但我没有时间检查)