1
我的web應用程序中的認證像SO一樣工作。用戶登錄時,會向第3個網站啓動後臺請求以獲取用戶信息。像這樣:AsyncController處理一定數量的請求
public AccountController : AsyncController
{
public void LogonAsync()
{
using(WebClient client = new WebClient())
{
client.DownloadDataCompleted += (sender, args) =>
{
//do something
AsyncManager.OutstandingOperations.Decrement();
};
AsyncManager.OutstandingOperations.Increment();
client.DownloadDataAsync(new Uri(theUrlToValidate));
}
}
public ActionResult LogonCompleted()
{
//do something
}
}
它看起來是正確的。但是,當Web應用程序聯機時,從性能監視器可以看到,排隊的請求越來越大,然後應用程序池關閉。我修改的動作,返回常量字符串:
public ActionResult Logon()
{
return Content("hello");
}
但還是不能阻止應用程序的要求日益破碎。現在我想知道:(1)我的異步控制器是否正確實現?崩潰不是因爲錯誤的代碼,而是請求的數量,對不對? (2)如何提高大量請求時的性能?目前我有兩臺帶有WIN SERVER 2003的Web服務器,Web應用程序建立在MongoDB/ASP.NET MVC 3上。也許在SO工作的開發人員可以告訴我如何處理這個問題。
在你發佈的例子中,'AccountController'不是從任何東西派生。我猜這是一個錯字。同樣當你說'返回內容(「你好」)''也是有問題的,好吧,這很難相信。像這樣的控制器操作可以處理許多請求。當我說很多時,我的意思是**很多**。所以問題在別的地方。 –
@Darin Dimitrov:是的,這是一個錯字,我編輯了這篇文章。感謝您的提示。 –