结束异步 Webforms 执行
Ending Async Webforms execution
我继承了大量的WebForms页面,也充当了自己的JSONAPI。根据发送给他们的参数,这些页面要么:
- Return 一个成熟的 HTML 页面。
- Return 一个 JSON 响应并使用可怕的终止页面
Response.End()
.
现在,我必须在这些遗留 JSON API 中调用一些异步代码,我使用 RegisterAsyncTask
来调用这些代码。
修改后,我们注意到即使在 Response.End() 之后,aspx 页面的执行现在仍在继续。这会导致大量崩溃报告,因为页面 'Model' 在返回 JSON.
时未加载且应该加载
我认为这是由于 Response.End() 调用 Thread.CurrentThread.Abort
来停止进程,而异步并不总是 运行 在 UI 线程上。
在 ASP.NET 中是否有除 Response.End 以外的其他方法来防止在发送响应时执行 .aspx?
你没有显示任何代码,所以我不知道你在哪里注册任务,但你可以:
在 PreRenderComplete 调用 Response.End()。
注册任务后调用ExecuteRegisteredAsyncTasks
我继承了大量的WebForms页面,也充当了自己的JSONAPI。根据发送给他们的参数,这些页面要么:
- Return 一个成熟的 HTML 页面。
- Return 一个 JSON 响应并使用可怕的终止页面
Response.End()
.
现在,我必须在这些遗留 JSON API 中调用一些异步代码,我使用 RegisterAsyncTask
来调用这些代码。
修改后,我们注意到即使在 Response.End() 之后,aspx 页面的执行现在仍在继续。这会导致大量崩溃报告,因为页面 'Model' 在返回 JSON.
时未加载且应该加载我认为这是由于 Response.End() 调用 Thread.CurrentThread.Abort
来停止进程,而异步并不总是 运行 在 UI 线程上。
在 ASP.NET 中是否有除 Response.End 以外的其他方法来防止在发送响应时执行 .aspx?
你没有显示任何代码,所以我不知道你在哪里注册任务,但你可以:
在 PreRenderComplete 调用 Response.End()。
注册任务后调用ExecuteRegisteredAsyncTasks