从WSDL文件创建一个ASMX Web服务

59

我有一个WSDL文件,我想创建一个符合这个WSDL规范的web服务。

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

我已经尝试使用以下命令生成了一个.vb文件:

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

现在我有了一个由该WSDL生成的.vb文件。然而,我不确定该怎么处理这个VB文件。它看起来有一个公共接口,但没有实现该接口的类。它还包含一堆用于WSDL中类型的部分类。

我本来期望会有某种存根代码,我可以在其中输入完成服务调用所需的代码。我以前只创建过简单的Web服务,而且它们都没有使用公共接口,所以我对这里正在发生的事情感到陌生。

目前我不确定如何使用生成的.vb文件,并将其与.asmx文件配合使用,以及完成接口所需的任何其他编码。


@Webdtc:感谢您提出这个问题,它正是我今天想问的问题,并且您完美地回答了它。再次感谢! - p.campbell
1
谢谢,+1。wsdl.exe语法刷新和随后的答案为我节省了很多时间。 - b w
2个回答

35

如果你已经创建了一些接口,那么你需要实现这些接口。


只需创建一个新的 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#来完成它。 - dtc
这让我有了一些头绪。在 .Net 4.0 中,我还必须在我的类中添加 [SoapDocumentService(RoutingStyle=SoapServiceRoutingStyle.RequestElement)],然后它才能正常工作。这个网站更详细地描述了它:http://gsmblog.com/post/Solving-problems-with-the-MS-header-SOAPAction.aspx。我不知道它是否有帮助,但我还删除了我的 WebService、WebServiceBinding、System.ComponentModel.ToolboxItem 和 System.Web.Script.Services.ScriptService 等其他属性。 - Clay Lenhart
有没有人遇到过包含一个对象请求作为参数和一个响应对象作为返回类型的方法的wsdl? - Ben Sewards
访问 WSDL 时没有细节信息。知道服务正常运行,有什么想法吗? - Hussein Zawawi

4
你只需要创建一个继承了 WSDL.EXE 生成的接口的类,并实现接口中的方法即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接