使用 ashx 或处理程序的好处是什么?如果我使用 MVC,是否需要它们(为什么不需要)?
框架是否重要(2.0+)?
为什么要使用处理程序?最近有人建议我使用一个来检索图像,但我不知道原因。
谢谢您的时间。
编辑 - 处理程序是否更快?
仅举几个例子:
动态生成图片:您可以编写处理程序,通过创建返回图像数据的ASHX处理程序并在您的标记中使用该URL,来返回数据驱动的图片。例如:<img alt="user's custom icon" src="Icon.ashx?username=bob"></img>
返回基于REST的XML或JSON数据到客户端的AJAX代码。
我相信这项功能从1.0版本就已经可用了。
mywebsite.com/restapi/content/56223
public class JSONContentController : Controller
{
public JsonResult Index(int ContentID)
{
// get Content() by ContentID
//
// return a JSON version
return Content().SerializeToJSON();
}
}
如果你在没有访问IIS的环境下工作,但想要更改类似于CSS、图片、JavaScript等文件的远期到期响应头以优化缓存,那么它们非常有用。
对于图片,你可以进行即时优化,因此你可以请求像image.jpg.ashx?w=180&quality=70这样的图像,然后使用处理程序根据查询字符串中传递的设置提供图像。
aspx继承了实现IRequireSessionState的页面。因此,如果您通过Ajax调用它,则asp.net需要在进一步处理之前锁定会话。
对于ashx文件而言,它是无状态的。 除非您从IRequireSessionState继承来管理状态。
对于所有Ajax调用,请使用ashx,并仅将aspx用于纯粹的asp.net页面。