【问题标题】:Why do asmx web services have a markup file?为什么 asmx Web 服务有标记文件?
【发布时间】:2011-08-22 14:55:30
【问题描述】:

我在 ASP.Net 中看到很多地方使用 asmx 文件实现 Web 服务。标记几乎总是空的(除了一个基本的网络服务标签),所有的代码都是“代码背后”。

这个标记文件是从旧的做事方式遗留下来的,还是有其他用途?

【问题讨论】:

    标签: .net web-services asmx


    【解决方案1】:

    其实.asmx文件并不是一个标记文件,而是一个包含标记的文件。在 .asmx 文件中包含完整的 Web 服务实现是完全合法的。使用文件隐藏代码是一种很好的做法,但不是强制性的。

    尝试在一个 asmx 文件中构建这个示例,它可以工作:

    <%@ WebService Language="C#" Class="WebService1" %>
    
    using System.Web;
    using System.Web.Services;
    
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    public class WebService1 : WebService
    {
    
        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }
    }
    

    即使在这种情况下,您也需要:

    • 将服务类与 .asmx 文件关联的标记
    • .asmx 文件在 Web 应用程序中的位置,用于指定 Web 服务地址

    编辑:更具体地说明最后几点:

    每个 Web 服务都需要一个端点,它基本上是一个供客户端调用的 URI。对于 WCF Web 服务,您通常在 web.config 中配置端点。定义端点的 ASP.NET 方法是将 .asmx 文件放在 Web 应用程序文件夹结构中的某个位置。当通过这个 URI 调用 web 服务时,.asmx 文件中的WebService 属性告诉 IIS 哪个类包含实际的 web 服务实现。

    【讨论】:

    • 谢谢,不知道。已经有了“WebService”类属性,&lt;%@ WebService %&gt;有什么作用?
    • @tpower:我在答案中附加了一些行,以便更具体地说明这一点。
    猜你喜欢
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    • 2010-09-05
    • 1970-01-01
    • 2013-02-08
    • 2010-10-07
    • 2013-03-27
    • 2010-11-18
    相关资源
    最近更新 更多