.net 为什么ASMXWeb服务有一个标记文件?

.net 为什么ASMXWeb服务有一个标记文件?,.net,web-services,asmx,.net,Web Services,Asmx,我在ASP.Net中看到过许多使用asmx文件实现web服务的地方。标记几乎总是空的(除了一个基本的web服务标记),所有的代码都是“代码隐藏” 这个标记文件是旧的处理方式遗留下来的还是有其他用途?实际上,.asmx文件不是一个标记文件,而是一个包含标记的文件。在.asmx文件中包含完整的web服务实现是完全合法的。使用代码隐藏文件是良好的做法,但不是强制性的 尝试在一个asmx文件中构建此示例,它可以工作: <%@ WebService Language="C#" Class="WebS

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


这个标记文件是旧的处理方式遗留下来的还是有其他用途?

实际上,.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";
    }
}

使用System.Web;
使用System.Web.Services;
[WebService(命名空间=”http://tempuri.org/")]
[WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
公共类WebService 1:WebService
{
[网络方法]
公共字符串HelloWorld()
{
返回“你好世界”;
}
}
即使在这种情况下,您也需要:

  • 将服务类与.asmx文件关联的标记
  • .asmx文件在web应用程序中的位置,用于指定web服务地址
编辑:要更具体地说明最后几点:


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

谢谢,我不知道。已经有了一个“WebService”类属性,
的作用是什么?@tpower:我在答案后面加了几行,以便更具体地说明这一点。