我构建了一个asp.net页面,返回带有Response.BinaryWrite()
的图像。这很好但我有以下问题。
我在Page_PreLoad事件中调用Response.BinaryWrite()
。我希望,asp.net继续执行页面的“正常”执行,直到Unload
事件,执行许多不再需要的东西,因为所有需要的操作都已完成。我是对的,如果是的话,是否有可能告诉asp.net该页面不再需要进一步处理。
更新
感谢所有答案。正如所建议的那样,我使用了ASHX-Handler,这正是我所需要的。感谢所有和+1这个方向的所有答案。对于所有与我有同样问题的人来说,David Stratton的链接显示了一种非常简单的方法。
答案 0 :(得分:10)
Application.CompleteRequest()
会为你做到这一点。
使ASP.NET绕过所有事件并在HTTP管道执行链中进行过滤,并直接执行EndRequest事件。
可以通过以下方式从Page
类访问:
Context.ApplicationInstance.CompleteRequest();
但是,如果您只想返回一个图像,那么您应该创建一个HTTP处理程序(实现IHttpHandler
的类)并且不使用Page
。请参阅this MSDN有关创建HTTP处理程序的文章。
答案 1 :(得分:2)
你是对的。但是你不应该使用Page
来返回图像。请改用HttpHandler。
答案 2 :(得分:2)
使用IHttpHandler代替页面
答案 3 :(得分:1)
您正在寻找Response.End()
但是,由于您没有使用ASPX功能集,因此您应该将代码移动到ASHX处理程序,该处理程序不会执行您首先要避免的任何操作。
然后你不需要Response.End
,你也会得到更好的表现。
答案 4 :(得分:1)
这不是您问题的直接答案,但您可以将页面更改为ashx http handler,以消除页面生命周期的开销,如果这是您真正想要做的事情。