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