asp.net 中的 ASHX 处理程序文件有什么好处?

发布于 2024-07-15 02:07:25 字数 174 浏览 11 评论 0原文

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

框架重要吗(2.0+)?

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

感谢您的时间。

编辑 - 处理程序更快吗?

What are the benefits of using an ashx, or handler? Also, do I need them if I use MVC (and why not)?

Does the framework matter (2.0+)?

Why would I want to use a handler? I was recently recommended to use one for retrieving an image but I don't know why.

Thank you for your time.

Edit - is a handler faster?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

看轻我的陪伴 2024-07-22 02:07:25

仅举几个示例:

  1. 动态图像生成:您可以编写返回数据驱动图像的处理程序,方法是创建返回图像数据的 ASSX 处理程序,然后在标记中使用该 URL。 例如 用户自定义图标

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

  3. 自定义 HTML:当 ASP.NET Web Forms 或 MVC 框架限制太多时,返回页面的完全自定义 HTML

我相信这从 1.0 开始就可用

Just a few examples:

  1. Dynamic image generation: You can write handlers that return data driven images by creating an ASHX handler that returns image data and then using that URL in your tags. e.g. <img alt="user's custom icon" src="Icon.ashx?username=bob"></img>

  2. Returning REST-based XML or JSON data to AJAX code on the client.

  3. Custom HTML: Return totally custom HTML for a page when the ASP.NET Web Forms or MVC framework is too restrictive

I believe this has been available since 1.0

弃爱 2024-07-22 02:07:25

非 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();
  }
}

The purpose of handlers in non-MVC projects is to provide some type of encoded response, outside of HTML. Typically, a handler would return XML (rss, RESTful, etc), JSON for jQuery or other Javascript, or sometimes just pure data such as file binary downloads. I've used handlers to even return special javascript to be excuted on the client, as a way of lazy-loading large binary or requirements on a "demand-only" approach. More or less, a handler would be used to return "anything but HTML".

In MVC, you would move away from handlers and utilize the Controller to return whatever data you like. So, in the method like:

mywebsite.com/restapi/content/56223

You RestfulContentController would have a method for Index(), that would NOT return a View(), but instead pure XML or JSON.

public class JSONContentController : Controller
{
  public JsonResult Index(int ContentID)
  {
    // get Content() by ContentID
    //

    // return a JSON version
    return Content().SerializeToJSON();
  }
}
遗失的美好 2024-07-22 02:07:25

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

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

They're very useful if your working in an environment where you do not have access to IIS but want to change things like far-future expiry response headers to optimize caching for files like css, images, JavaScript

For images you can do stuff like on the fly optimization so you can request images like image.jpg.ashx?w=180&quality=70 and then use the handler to deliver the image based on the settings passed in the querystring

撩人痒 2024-07-22 02:07:25

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

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

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

aspx inherits page which implements IRequireSessionState. So if you call it via Ajax then asp.net needs to lock the session before further processing.

For ashx file it is stateless.
Unless you inherit it from IRequireSessionState to manage state.

Use ashx for all Ajax calls and use aspx for purely asp.net page.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文