查看我的网络应用程序,当它全部编译并准备好部署时,我拥有的文件夹有一堆.ASPX和.ASHX文件。 ASHX文件当然是我为特定实例制作的一些自定义处理程序,它们可能是图像处理程序或其他我不想要整个Page类生命周期的东西。
我注意到.ASPX文件包含所有HTML内容(所有标记)和.aspx.cs文件被编译成.DLL文件(如预期的那样),这些文件只是加载到IIS中。那很好。
但是我也看到.ASHX文件就是它们的样子。所有代码都在我的.ASHX文件中,这是部署到我的服务器的文件夹中完全相同的文件。没有编译的DLL或任何东西。
所以问题是:.ASHX文件执行速度较慢,因为它有点像解释文件?我知道我可能错了,但似乎没有任何编译似乎.ASHX文件和我最初使用它们的速度。或者是由IIS编译一次到内存中的代码并保存在那里供以后使用?或者那可能是IsReusable bool属性是什么?
答案 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文件可能会慢一点,这是第一次,因为它是根据请求编译的。但性能损失很小 - 只需重新定向到代码块。