编译部署的ASHX文件?

时间:2011-09-21 14:46:39

标签: c# asp.net

查看我的网络应用程序,当它全部编译并准备好部署时,我拥有的文件夹有一堆.ASPX和.ASHX文件。 ASHX文件当然是我为特定实例制作的一些自定义处理程序,它们可能是图像处理程序或其他我不想要整个Page类生命周期的东西。

我注意到.ASPX文件包含所有HTML内容(所有标记)和.aspx.cs文件被编译成.DLL文件(如预期的那样),这些文件只是加载到IIS中。那很好。

但是我也看到.ASHX文件就是它们的样子。所有代码都在我的.ASHX文件中,这是部署到我的服务器的文件夹中完全相同的文件。没有编译的DLL或任何东西。

所以问题是:.ASHX文件执行速度较慢,因为它有点像解释文件?我知道我可能错了,但似乎没有任何编译似乎.ASHX文件和我最初使用它们的速度。或者是由IIS编译一次到内存中的代码并保存在那里供以后使用?或者那可能是IsReusable bool属性是什么?

2 个答案:

答案 0 :(得分:2)

它们已编译,因此性能不会成为问题。

然而,可以像.ashx文件一样使用.aspx文件的代码隐藏等等。在.ashx文件中:

<%@ WebHandler 
    Language="C#" 
    CodeBehind="UserImageHandler.ashx.cs"   
    Class="Namespace.UserImageHandler" %>

然后在代码隐藏中:

using System;
using System.Web;
// more here if you need them...

namespace Namespace
{    
    public class UserImageHandler : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
           // etc. etc.    
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }    
    }
}

如果你有很多代码,那么这样做而不是内联可以让生活更轻松。

答案 1 :(得分:0)

据我了解,ashx文件是一个请求的位置,它只是将请求指向后面的代码(编译为其他所有代码)。

所以是的,一个ashx文件可能会慢一点,这是第一次,因为它是根据请求编译的。但性能损失很小 - 只需重新定向到代码块。