从 WSDL 文件创建 ASMX Web 服务

Posted

技术标签:

【中文标题】从 WSDL 文件创建 ASMX Web 服务【英文标题】:Create an ASMX web service from a WSDL file 【发布时间】:2010-10-07 14:13:29 【问题描述】:

我有一个 WSDL 文件,我正在尝试创建一个符合 WSDL 的 Web 服务。

我使用 WSDL 文件创建了使用现有服务的客户端,但我从未创建过需要遵循特定 WSDL 的 Web 服务。

我已经使用了:

wsdl.exe mywsdl.wsdl /l:VB /serverInterface

现在我得到了一个从该 WSDL 生成的 .vb 文件。但是我不确定我应该如何处理这个 VB 文件。看起来它有一个公共接口,但没有实现该接口的类。它还有一堆用于 WSDL 中的类型的部分类。

我期待有某种存根,我将代码放入其中以完成服务调用。我之前只创建过简单的 Web 服务,它们都没有使用公共接口,所以我不熟悉这里发生的事情。

此时我不确定如何使用生成的 .vb 文件并使其与 .asmx 文件一起使用,以及完成界面需要哪些额外的编码。

【问题讨论】:

@webdtc:感谢这个问题,这正是我今天的问题,并且完美地回答了它。再次感谢! 谢谢,+1。 wsdl.exe 语法复习和后续回答为我节省了很多时间。 【参考方案1】:

您需要做的就是创建一个继承自 WSDL.EXE 生成的接口的类,然后实现该接口中的方法。

【讨论】:

【参考方案2】:

如果您已经创建了接口,则需要实现这些接口。 只需创建一个新的 Web 服务并添加您生成的接口,以便它从该接口继承。 Visual Studio 可以为接口中的每个方法自动生成存根。用 WebMethod 属性标记它们,并在其中放入一些代码,这些代码将返回一些测试数据/结果。

如果你有这个界面(还有一些自动生成的属性):


public interface IRealWebService

    string GetName();


你应该做一个新的服务:


public class WebTestService : System.Web.Services.WebService, IRealWebService


    #region IRealWebService Members

    [WebMethod]
    public string GetName()
    
        return "It Works !!!!";
    
    #endregion

【讨论】:

谢谢。我觉得这就是。我明白现在发生了什么!也许我应该先在 C# 中做到这一点。我必须在 VB.net 中完成,但我对 VB.net 还不是很熟悉。但我完全理解你的例子,并且能够在 C# 中做到这一点。 这让我成功了。在 .Net 4.0 中,我还必须将 [SoapDocumentService(RoutingStyle=SoapServiceRoutingStyle.RequestElement)] 添加到我的课程中,然后它就可以工作了。该站点对其进行了更多描述:gsmblog.com/post/…。我不知道它是否有帮助,但我还从我的 Web 服务中删除了所有其他属性,例如 WebService、WebServiceBinding、System.ComponentModel.ToolboxItem 和 System.Web.Script.Services.ScriptService。 有没有人遇到过一个 wsdl,其中包含一个方法,该方法以对象请求作为参数,以响应对象作为返回类型? 加入 wsdl 时没有详细信息知道该服务运行良好有什么想法吗?

以上是关于从 WSDL 文件创建 ASMX Web 服务的主要内容,如果未能解决你的问题,请参考以下文章

创建与现有 WSDL 文件类似的 WSDL 文件

从 ASMX Web 服务导入 wsdl 时出现 WsdlImporter 错误

有没有办法限制对 ASMX Web 服务的访问,即 asmx 页面及其 WSDL?

从 WSDL 文件生成 Web 服务 [关闭]

不同的 WSDL ASMX、WCF Web 服务

如何从 wsdl 生成 Web 服务