如何使用wsdl生成Web服务

如何使用wsdl生成Web服务

问题描述:

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

+0

我其实也试过wsdl.exe/server或/ serverinterface它仍然在生成.cs类。 – alice7 2009-09-08 17:50:10

如何使用wsdl /serverwsdl /serverinterface开关? 据我了解wsdl.exe命令行属性,这就是你要找的。

- ADVANCED - 

/服务器

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

马克


UPDATE:

当我在一个WSDL文件中使用wsdl /server,我得到创建这个文件:

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

这基本上是几乎一模一样的代码当您将ASMX文件添加到您的解决方案时(在文件后面的代码中 - “yourservice.asmx.cs”),会生成该文件。我不认为你可以接近从WSDL文件创建ASMX文件。

您可以随时添加了“yourservice.asmx”手动 - 它并没有真正包含了:

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

没有那实际上我寻找。它会生成我不想要的代理类。我想自动生成abc.asmx。我想到了WCF,但通过使Web服务变得简单。 – alice7 2009-09-08 17:49:24

不能保证自动生成WSDL将匹配从中创建服务的WSDL接口。

在您的场景中,您应该将WSDL文件放置在您的Web站点某处,并让消费者使用该URL。您应该禁用web.config中的Documentation协议,以便“?wsdl”不返回WSDL。请参阅<protocols> Element

另外,还要注意文章的第一段:

本主题是特定于传统技术。现在应使用Windows Communication Foundation (WCF)创建XML Web服务和XML Web服务客户端。

不幸的是,您找不到什么神奇的子弹解决方案。这里是你可以做什么:

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

    wsdl.exe yourFile.wsdl /l:CS /serverInterface
    使用VB或者CS为您所选择的语言。这将创建一个新的.cs.vb文件。

  • 创建一个新的.NET Web服务项目。将现有文件导入到您的项目中 - 在上面的步骤中创建的文件。

  • 在你.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"; 
    } 
} 
+2

你也可以放/放:“path \ to \ folder”把生成的代码放在一个特定的位置。 – b729sefc 2013-09-26 18:59:01

+0

谢谢,巨大的帮助 – 2014-10-03 23:00:43

你就可以使用WSCF的WS代理类(Web服务契约优先)来自thinktecture.com的工具。所以基本上,你可以从wsdl创建webservices。创建asmx的,也许不是,但这很简单,不是吗?该工具精美地集成到VS2005-8(2010/WCF的新版本称为WSCF-blue)中。我用它加载并总是发现它非常好。

+0

我还会注意到这一点,尽管我自己从来没有多少运气(特别是WSCF Blue)。也许我使用的是早期版本或其他东西。 – 2013-07-09 20:26:32

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

  1. 假设你有在位置.wsdl文件:进一步访问,便于“E \”。
  2. 准备为每个.wsdl文件的命令为:E:\ YourServiceFileName.wsdl
  3. Permissions:假定您有管理权限来执行权限。打开目录: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文件移动到合适的位置。

+0

这是vs cmd窗口最简单直接的方法。 – 2018-02-05 19:16:57