为什么asmx Web服务有标记文件?

时间:2011-08-22 14:55:31

标签: .net web-services asmx

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

此标记文件是旧版本的处理方式还是其他用途?

1 个答案:

答案 0 :(得分:2)

实际上,.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调用webservice时,.asmx文件中的WebService属性告诉IIS哪个类包含实际的Web服务实现。