首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于处理大量请求的AsyncController

用于处理大量请求的AsyncController
EN

Stack Overflow用户
提问于 2011-08-29 14:47:56
回答 1查看 233关注 0票数 1

我的web应用程序中的身份验证是这样工作的。当用户登录时,一个后台请求被启动到第三个网站以获取用户的信息。如下所示:

代码语言:javascript
复制
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应用程序在线时,我可以从性能监视器中看到,排队的请求越来越多,然后应用程序池就会关闭。我修改了动作,返回常量字符串:

代码语言:javascript
复制
public ActionResult Logon()
{
    return Content("hello");
}

但它仍然不能阻止应用程序因不断增长的请求而崩溃。现在我想知道:(1)我的异步控制器实现正确了吗?崩溃不是因为错误的代码,而是请求的数量,对吧?(2)当有大量请求时,如何提高性能?目前我有两个WIN SERVER 2003的web服务器,web应用程序是建立在MongoDB/ASP.NET MVC 3上的。也许为SO工作的开发人员可以告诉我如何处理这个问题。

EN

回答 1

Stack Overflow用户

发布于 2011-12-21 02:11:51

我不是很确定,但是你会不会有问题,因为你在实际完成下载之前就处理了webclient实例?我认为.Dispose web客户端的代码应该移到下载完成处理程序中,或者完全忽略它,因为它会被垃圾收集清理掉。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7226975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档