我是新來的asp.net 4.5異步,並在異步方法中調用response.redirect運行到以下。問題在於響應只是「掛起」其他人是否遇到過嘗試使用異步重定向的類似問題?此代碼可用於全新項目,但不適用於現有代碼中的新頁面。我確保把我能從web.config中取出的所有東西都拿出來,並刪除了我們的母版頁。打磚牆......有什麼想法?謝謝!Asp.net異步Response.Redirect問題
protected void Page_Load(object sender, EventArgs e)
{
RegisterAsyncTask(new PageAsyncTask(PageLoadAsync));
}
private async Task PageLoadAsync()
{
var data = await GetData();
if (data == HttpStatusCode.OK)
Response.Redirect("http://www.google.com");
}
private async Task<HttpStatusCode> GetData()
{
using (var client = new HttpClient())
{
var response = await client.GetAsync("https://www.google.com");
return response.StatusCode;
}
}
我不認爲你可以在異步線程上執行'Redirect' –
我不明白你爲什麼需要異步,你仍然需要等待HttpClient在完成加載/渲染頁面之前做出響應。而且你並沒有同時做多件事情。順便說一句:如果你有互聯網連接,谷歌將始終工作;) –
他需要異步,因爲他正在做一個I/O密集型任務(發送HTTP請求到遠程資源)。想象一下,這個資源需要很長時間才能做出迴應。在此期間,您將危害您的ASP.NET工作線程。現在想象一下,這個端點被200個用戶同時擊中=>您的站點將會死掉,因爲沒有任何工作線程可用於服務請求。這就是爲什麼在這種情況下使用異步非常重要。 –