题
使用 ashx 或处理程序有什么好处?另外,如果我使用 MVC,我是否需要它们(为什么不需要)?
框架重要吗(2.0+)?
我为什么要使用处理程序?最近有人建议我使用它来检索图像,但我不知道为什么。
感谢您的时间。
编辑 - 处理程序更快吗?
解决方案
仅举几例:
-
动态图像生成:您可以通过创建返回图像数据然后在标记中使用该URL的ASHX处理程序来编写返回数据驱动图像的处理程序。例如
<img alt="user's custom icon" src="Icon.ashx?username=bob"></img>
-
将基于REST的XML或JSON数据返回给客户端上的AJAX代码。
- 自定义HTML :当ASP.NET Web窗体或MVC框架过于严格时,返回页面的完全自定义HTML 醇>
我相信自1.0以来一直可以使用。
其他提示
非MVC项目中处理程序的目的是在HTML之外提供某种类型的编码响应。通常,处理程序将返回XML(rss,RESTful等),jQuery或其他Javascript的JSON,或者有时只返回文件二进制下载等纯数据。我已经使用处理程序甚至返回特殊的javascript来在客户端上执行,作为一种延迟加载大型二进制文件或者需求的方式<!> quot; demand-only <!> quot;做法。或多或少,处理程序将用于返回<!>“除HTML <!>”之外的任何内容。
在MVC中,您将远离处理程序并利用Controller返回您喜欢的任何数据。所以,在像这样的方法:
mywebsite.com/restapi/content/56223
你RestfulContentController会有一个Index()方法,它不会返回View(),而是返回纯XML或JSON。
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继承它来管理状态。
将ashx用于所有Ajax调用,并将aspx用于纯粹的asp.net页面。