使用 ashx 或处理程序有什么好处?另外,如果我使用 MVC,我是否需要它们(为什么不需要)?

框架重要吗(2.0+)?

我为什么要使用处理程序?最近有人建议我使用它来检索图像,但我不知道为什么。

感谢您的时间。

编辑 - 处理程序更快吗?

有帮助吗?

解决方案

仅举几例:

  1. 动态图像生成:您可以通过创建返回图像数据然后在标记中使用该URL的ASHX处理程序来编写返回数据驱动图像的处理程序。例如<img alt="user's custom icon" src="Icon.ashx?username=bob"></img>

  2. 将基于REST的XML或JSON数据返回给客户端上的AJAX代码。

  3. 自定义HTML :当ASP.NET Web窗体或MVC框架过于严格时,返回页面的完全自定义HTML
  4. 我相信自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页面。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top