gpt4 book ai didi

asp.net - 使用 Response.End(false) 与 ApplicationInstance.CompleteRequest() 之间/用例之间的区别是什么

转载 作者:行者123 更新时间:2023-12-02 00:13:02 40 4
gpt4 key购买 nike

我遇到了一个讨论 ApplicationInstance.CompleteRequest() 用法的 SO 问题避免 ThreadAbortExceptionResponse.End() 时被抛出被称为。

过去,为了避免我上面提到的异常错误,我使用了这个重载:Response.End(false) .

我想了解这两种方法之间的区别。为什么我会选择使用 ApplicationInstance.CompleteRequest()代替 Response.End(false)

编辑:

我明白 ApplicationInstance.CompleteRequest()是更正确的做事方式,但调用 Response.End(true) 的一个功能缺少的是处理后面的其余代码。有时,我们不想继续处理,而是想当场结束执行。

也许在这里回答我自己的问题,但也许正确的做事方式是编写代码,以便在结束响应(而不是中止线程)时,没有更多的代码行要处理。

一个例子:

[DO SOME WORK]
if ([SOME CONDITION])
{
ApplicationInstance.CompleteRequest();
}
else
{
//continue processing request
}

这可能行得通,但似乎我们在这里编码是为了处理该方法的局限性。并可能导致一些困惑的代码。

我是不是漏掉了什么?

最佳答案

http://weblogs.asp.net/hajan/archive/2010/09/26/why-not-to-use-httpresponse-close-and-httpresponse-end.aspx

来自文章:“与其使用 HttpResponse.End 和 HttpResponse.Close 方法,不如使用 HttpApplication.CompleteRequest 方法,这样缓冲在服务器、客户端或两者之间的响应数据就可以了'被丢弃。”

protected void Page_Load(object sender, EventArgs e)
{
Response.Write("Hello Hajan");
Response.End();
Response.Write("<br />Goodbye Hajan");
}
Output: Hello Hajan

protected void Page_Load(object sender, EventArgs e)
{
Response.Write("Hello Hajan");
this.Context.ApplicationInstance.CompleteRequest();
Response.Write("<br />Goodbye Hajan");
}

Output: Hello Hajan
Goodbye Hajan

http://blogs.msdn.com/b/aspnetue/archive/2010/05/25/response-end-response-close-and-how-customer-feedback-helps-us-improve-msdn-documentation.aspx

来自文章:“HttpApplication.CompleteRequest 是结束请求的更好方式。”

关于asp.net - 使用 Response.End(false) 与 ApplicationInstance.CompleteRequest() 之间/用例之间的区别是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14590812/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com