如何从wsdl生成Web服务

客户端为我提供了wsdl来生成Web服务。但是当我使用wsdl.exe命令时,它生成了.cs类。 我在我的Web服务中使用了这个类,当我将wsdl提供给客户端时,它与他们的模式不匹配。 实际上,我想要.asmx从wsdl自动生成,以便我可以填写web方法。 所以它将完全符合他们的模式。 希望它是有道理的。

不幸的是,你所寻找的东西并没有一个神奇的子弹解决scheme。 以下是你可以做的事情:

  • 在Visual Studio命令提示符窗口中使用此命令创build一个接口类:

    wsdl.exe yourFile.wsdl /l:CS /serverInterface
    使用VB或CS作为您select的语言。 这将创build一个新的.cs.vb文件。

  • 创build一个新的.NET Web服务项目。 将现有文件导入到您的项目中 – 上述步骤中创build的文件。

  • 在Code-View的.asmx.cs文件中,修改你的类,如下所示:

  public class MyWebService : System.Web.Services.WebService, IMyWsdlInterface { [WebMethod] public string GetSomeString() { //you'll have to write your own business logic return "Hello SOAP World"; } } 

如何使用wsdl /serverwsdl /serverinterface开关? 据我所知的wsdl.exe命令行属性,这就是你在找什么。

 - ADVANCED - 

/服务器

 Server switch has been deprecated. Please use /serverInterface instead. Generate an abstract class for an xml web service implementation using ASP.NET based on the contracts. The default is to generate client proxy classes. 

另一方面:为什么要创build过时的技术解决scheme? 为什么不创build这个Web服务作为WCF服务。 这是现在和更现代,更灵活的方式来做到这一点!

渣子


更新:

当我在WSDL文件上使用wsdl /server时,我创build了这个文件:

 [WebService(Namespace="http://.......")] public abstract partial class OneCrmServiceType : System.Web.Services.WebService { /// <remarks/> [WebMethod] public abstract void OrderCreated(......); } 

这基本上与将ASMX文件添加到解决scheme(在代码隐藏文件 – “yourservice.asmx.cs”中)时生成的代码完全相同。 我不认为你可以接近从WSDL文件创build一个ASMX文件。

您可以随时手动添加“yourservice.asmx” – 它并不包含太多内容:

 <%@ WebService Language="C#" CodeBehind="YourService.asmx.cs" Class="YourServiceNamespace.YourServiceClass" %> 

您不能保证自动生成的WSDL将与您创build服务接口的WSDL相匹配。

在你的场景中,你应该把WSDL文件放在你的网站上,让消费者使用这个URL。 您应该禁用web.config中的Documentation协议,以便“?wsdl”不返回WSDL。 请参阅<protocols>元素 。

另外,请注意该文章的第一段:

这个话题是特定于传统技术的。 现在应使用Windows Communication Foundation(WCF)创buildXML Web服务和XML Web服务客户端。

您可以使用thinktecture.com中的WSCF(Web服务合同优先)工具生成WS代理类。 所以基本上,你可以从wsdl创buildwebservices。 创buildasmx的,也许不是,但这是容易的不是吗? 这个工具出色地集成到VS2005-8(2010 / WCF的新版本称为WSCF-blue)。 我用它加载,总是发现它是非常好的。

这可能是很晚的回答。 但是可能对有需要的人有帮助: 如何将WSDL转换为SVC:

  1. 假设您在位置“E:\”中有.wsdl文件,以便进一步访问。
  2. 准备每个.wsdl文件的命令为:E:\ YourServiceFileName.wsdl
  3. 权限:假设您拥有执行权限的pipe理权限。 打开目录:C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ VC \ bin
  4. 右键单击amd64 =>安全性=>编辑=>添加用户=>每个人或当前用户=>允许所有权限=>确定。
  5. 在文本编辑器中为每个文件准备命令为:wsdl.exe E:\ YourServiceFileName.wsdl / l:CS / server。
  6. 现在打开Visual Studio命令提示符:C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Common7 \ Tools \ Shortcuts \ VS2013 x64本地工具命令提示符。
  7. 执行上面的命令。
  8. 转到目录:C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ VC \ bin \ amd64,应生成相应的.CS文件。

    9.将生成的CS文件移动到合适的位置。