资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

.asmx处理程序提供的功能怎样自动生成WSDL

这篇文章将为大家详细讲解有关.asmx处理程序提供的功能怎样自动生成WSDL,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

成都创新互联公司主要从事成都网站设计、成都网站建设、外贸网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务中宁,十载网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220

自动生成WSDL

在您写好并部署了 WebMethod 之后,客户端需要明确知道为了与它成功通讯而必须使 SOAP 消息具有什么样的外观。提供 Web 服务说明的标准方法是通过 WSDL(以及嵌入的 XSD 定义)进行的。为了帮助适应这种情况,.asmx 处理程序自动生成可读的文档页,以及能准确反映 WebMethod 接口的 WSDL 定义。如果您对 WebMethod 应用了许多映射属性,则它们都会反映在生成的文档中。

如果您浏览 .asmx 文件,将会看到一个如图 2 所示的可供人工读取的文档页。此文档页是由一个名为 DefaultWsdlHelpGenerator.aspx(位于 C:\windows\Microsoft.NET\Framework\ v1.0.3705\config)的 .aspx 页生成的。如果您打开这个文件,将会发现这仅仅是一个标准的 ASP.NET 页,该页使用 .NET 反射生成文档。此功能允许您的文档总是与代码保持同步。您只需修改此文件即可自定义所生成的文档。

还可以通过在 Web.config 文件中指定一个不同的文档文件来避免在虚拟目录中生成文档:

< configuration>   < system.web>   < webServices>   < wsdlHelpGenerator href="MyDocumentation.aspx"/>   < /webServices>   ...

如果客户端对 .asmx 终结点发出 GET 请求,而且查询字符串中有 “?wsdl”,那么,.asmx 处理程序会生成 WSDL 定义,而不生成可供人工读取的文档。客户端可以使用 WSDL 定义来生成代理类,这些类可自动了解如何与 Web 服务通讯(例如,使用 .NET 中的 Wsdl.exe)。

自动生成WSDL:自定义过程

要自定义 WSDL 生成过程,可以编写一个 SoapExtensionReflector 类,并在 Web.config 文件中向 WebMethod 框架注册该类。然后,当 .asmx 处理程序生成 WSDL 定义时,它将调用反射器类,并使您有机会自定义向客户端提供的最终定义。有关如何编写 SoapExtensionReflector 类的更多信息,请查看 SoapExtensionReflectors in ASP.NET Web Services。

您还可以使用两种不同的方法来完全跳过 WSDL 生成过程。***种方法是,在虚拟目录中提供一个可供客户端访问的静态 WSDL 文档,然后通过将文档生成器从 Web.config 文件中删除来禁用它,如下所示:

< configuration>   < system.web>   < webServices>   < protocols>   < remove name="Documentation"/>   < /protocols>   ...

另一种自动化程度较之稍高的方法是,使用 [WebServicesBinding] 属性来指定由 WebMethod 类实现的静态 WSDL 文档在虚拟目录中的位置。您还必须使用 [SoapDocumentMethod] 属性为每个 WebMethod 实现的 WSDL 绑定指定名称。这样做之后,WSDL自动生成过程将导入静态 WSDL 文件,并在它周围包装一个新的服务说明。

目前,因为仍没有太多可用的 WSDL 编辑器,所以手工编写 WSDL 是极其困难的。因此,文档/WSDL 的自动生成是 WebMethod 框架中很有价值的一部分,没有它,许多开发人员的日子会很难过。

关于.asmx处理程序提供的功能怎样自动生成WSDL就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


当前文章:.asmx处理程序提供的功能怎样自动生成WSDL
转载来源:http://cdkjz.cn/article/ihejjc.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220