14

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

框架重要吗(2.0+)?

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

感谢您的时间。

编辑 - 处理程序更快吗?

4

4 回答 4

17

仅举几个例子:

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

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

  3. 自定义 HTML:当 ASP.NET Web 窗体或 MVC 框架过于严格时,为页面返回完全自定义的 HTML

我相信这从 1.0 开始就可用

于 2009-03-06T17:36:18.187 回答
3

非 MVC 项目中处理程序的目的是在 HTML 之外提供某种类型的编码响应。通常,处理程序将返回 XML(rss、RESTful 等)、用于 jQuery 或其他 Javascript 的 JSON,或者有时仅返回纯数据,例如文件二进制下载。我使用处理程序甚至返回要在客户端执行的特殊 javascript,作为延迟加载大型二进制文件或“仅需求”方法的要求的一种方式。或多或少,处理程序将用于返回“除 HTML 之外的任何内容”。

在 MVC 中,您将远离处理程序并利用控制器返回您喜欢的任何数据。所以,在这样的方法中:

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();
  }
}
于 2009-03-06T17:34:26.473 回答
2

如果您在无法访问 IIS 但想要更改诸如未来到期响应标头之类的内容以优化 css、图像、JavaScript 等文件的缓存的环境中工作,它们将非常有用

对于图像,您可以执行动态优化之类的操作,因此您可以请求 image.jpg.ashx?w=180&quality=70 之类的图像,然后使用处理程序根据查询字符串中传递的设置传递图像

于 2009-03-06T17:30:43.033 回答
0

aspx 继承了实现 IRequireSessionState 的页面。因此,如果您通过 Ajax 调用它,那么 asp.net 需要在进一步处理之前锁定会话。

对于 ashx 文件,它是无状态的。除非你从 IRequireSessionState 继承它来管理状态。

对所有 Ajax 调用使用 ashx,对纯 asp.net 页面使用 aspx。

于 2014-03-11T22:53:51.757 回答