【问题标题】:Create an ASMX web service from a WSDL file从 WSDL 文件创建 ASMX Web 服务
【发布时间】: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 语法复习和后续回答为我节省了很多时间。

标签: asp.net web-services wsdl asmx


【解决方案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 时没有详细信息知道该服务运行良好有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-11
    • 2017-06-08
    • 1970-01-01
    相关资源
    最近更新 更多