停止WebPage处理

时间:2011-01-05 14:06:40

标签: asp.net

我构建了一个asp.net页面,返回带有Response.BinaryWrite()的图像。这很好但我有以下问题。

我在Page_PreLoad事件中调用Response.BinaryWrite()。我希望,asp.net继续执行页面的“正常”执行,直到Unload事件,执行许多不再需要的东西,因为所有需要的操作都已完成。我是对的,如果是的话,是否有可能告诉asp.net该页面不再需要进一步处理。

更新

感谢所有答案。正如所建议的那样,我使用了ASHX-Handler,这正是我所需要的。感谢所有和+1这个方向的所有答案。对于所有与我有同样问题的人来说,David Stratton的链接显示了一种非常简单的方法。

5 个答案:

答案 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,以消除页面生命周期的开销,如果这是您真正想要做的事情。

http://support.microsoft.com/kb/308001