标签: asynccontroller

ASP.NET MVC2从jQuery调用AsyncController方法?

我正在尝试学习如何在MVC2中使用AsyncController,但是那里的文档/教程很少.我正在寻找一种普通的控制器方法,它对第三方服务的导出非常慢,并将其转换为异步方法.

原始控制器方法:

public JsonResult SaveSalesInvoice(SalesInvoice invoice)
{
    SaveInvoiceToDatabase(invoice); // this is very quick 
    ExportTo3rdParty(invoice); // this is very slow and should be async
}
Run Code Online (Sandbox Code Playgroud)

所以我创建了一个继承自AsyncController的新控制器:

public class BackgroundController : AsyncController
{
    public void ExportAysnc(int id)
    {
        SalesInvoice invoice = _salesService.GetById(id);
        ExportTo3rdParty(invoice);
    }

    public void ExportCompleted(int id)
    {
         // I dont care about the return value right now, 
         // because the ExportTo3rdParty() method
         // logs the result to a table
    }

    public void Hello(int id)
    {            
    }
}
Run Code Online (Sandbox Code Playgroud)

然后从jQuery调用Export方法:

function Export() …
Run Code Online (Sandbox Code Playgroud)

c# jquery asynccontroller asp.net-mvc-2

2
推荐指数
1
解决办法
2551
查看次数

ASP.NET MVC2可以通过AsyncController访问HttpContext.Current吗?

我正在尝试将此方法转换ExportTo3rdParty()为使用AsyncController:

public JsonResult SaveSalesInvoice(SalesInvoice invoice)
{
    SaveInvoiceToDatabase(invoice); // this is very quick 
    ExportTo3rdParty(invoice); // this is very slow and should be async
}
Run Code Online (Sandbox Code Playgroud)

但是ExportTo3rdParty()方法在多个地方使用HttpContext.Current(太多不能改变 - 原始编码器没有使用足够的依赖注入).例如,它调用GetDefaultCurrency().当通过AsyncController调用ExportTo3rdParty()时,这仍然有用吗?

public Currency GetDefaultCurrency()
{
    Currency currency;
    string key = string.Format("DefaultCurrency_{0}", 
                                HttpContext.Current.User.Identity.Name);
    currency = HttpRuntime.Cache.Get(key) as Currency;
    if (currency == null)
    {
        currency = LookupDefaultCurrency();
        HttpRuntime.Cache[key] = currency;
    }
} 
Run Code Online (Sandbox Code Playgroud)

我知道如果我使用Thread.Start,我无法访问HttpContext.Current.但是AsyncController怎么样?

c# jquery asynccontroller asp.net-mvc-2

2
推荐指数
1
解决办法
1150
查看次数

同一控制器中的异步和同步动作方法

可以在一个中使用异步和同步动作方法AsyncController吗?这样做有什么缺点吗?

原因是异步操作对于耗时的操作有意义,但是在HTML中返回表单没有意义.

例如,我有一个生成文件的页面.返回带有输入的表单的操作方法几乎没有逻辑,但是接收POST,将其发送到另一个Web服务并中继响应的操作方法需要一些时间,因此异步执行它是有意义的.

我可以将这些方法放在分离的控制器中,一个是同步的,另一个是同步的,但我想把它们放在一起.

干杯.

asp.net-mvc controller asynccontroller asp.net-mvc-3

2
推荐指数
1
解决办法
1595
查看次数

用于从Entity Framework进行异步加载的MVC3异步控制器

为了提高MVC3应用程序的性能,我们希望将一些Controller标记为AsyncController.我们使用EF 4.x(最新的稳定版),需要一些建议,链接如何以适当的方式对EF进行异步调用.如何处置实体等

如果它可能,并且有意义.谢谢.

asynchronous asynccontroller entity-framework-4.1 asp.net-mvc-3

2
推荐指数
1
解决办法
1569
查看次数

在asp.net mvc AsyncController中找不到资源

我刚刚将我的控制器转换为asp.net mvc 2中的asyncController.(即:分割动作方法关于AboutAsync和AboutCompleted).但是,我收到资源未找到错误.

我的路线表没有变化,我能想到的唯一原因是因为我是mvcextension项目.既然它是自己的controllerFactory接线并从IoC容器创建实例,它是否需要连接AsyncHttpHandler呢?任何人都可以放弃一些提示吗?

提前致谢.

c# asynccontroller asp.net-mvc-2

1
推荐指数
1
解决办法
970
查看次数

ASP.NET 4中的异步控制器有意义吗?

Asp.net 2默认有12个线程

现在Asp.Net 4有5000.我们还需要异步控制器吗?

asp.net-mvc threadpool asynccontroller asp.net-mvc-3

1
推荐指数
1
解决办法
561
查看次数

C#异步MVC方法返回ContentResult System.Threading.Tasks.Task`1 [System.Web.Mvc.JsonResult]

我正在尝试将一些方法转换为异步,并从我正在修改的控制器中的一个简单示例开始:

public class MyAPIController : AsyncController
{
    public async Task<JsonResult> List()
    {
        return Json(123456, JsonRequestBehavior.AllowGet);
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

当我测试方法而不是Json结果时,我得到字符串值"System.Threading.Tasks.Task`1 [System.Web.Mvc.JsonResult]",我已经通过Fiddler和浏览验证了这一点.

该项目已手动升级到.NET45.搜索表明这可能是组件版本不正确的问题,但检查项目文件和Process视图表明在运行时引用和加载了正确的类型.

有人有任何调试技巧吗?

谢谢.

c# asp.net-mvc asynchronous asynccontroller asp.net-mvc-4

1
推荐指数
1
解决办法
2528
查看次数

使用AsyncController帮助增加旧版ASP.NET MVC 3项目的并发性

我们现在有一个与并发用户斗争的网站.

以下是该项目的高级背景:

  • 旧版ASP.NET MVC 3项目(.NET 4)
  • 无法对核心代码进行任何重大改写
  • 占用时间最长的主要入口点是控制器SubmitSearch上的操作Search.平均响应时间为5-10秒.

因此,如第二点所述,我们不希望在此项目上花费太多时间来重写大部分内容.但是,我们希望尝试增加并发用户.我们不打算改变其他任何东西或提高性能,因为它需要更多的工作.

我们看到的是,随着越来越多的人受到打击SubmitSearch,网站总体上变慢了.这很可能是由于所有IIS线程被锁定执行搜索.

我们正在寻求实现AsyncControllerSubmitSearch在正常的CLR线程上执行操作.以下是我们想要实现它的方式:

假设这是原始SubmitSearch方法:

/// <summary>
/// Submits a search for execution.
/// </summary>
/// <param name="searchData">The search data</param>
/// <returns></returns>
public virtual ActionResult SubmitSearch(SearchFormModel searchData)
{
    //our search code
}
Run Code Online (Sandbox Code Playgroud)

我们希望转换为最快的方法AsyncController是简单地执行此操作:

/// <summary>
/// Submits a search for execution.
/// </summary>
/// <param name="searchData">The search data</param>
/// <returns></returns>
protected virtual ActionResult SubmitSearch(SearchFormModel searchData)
{
    //our search code …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc multithreading asynccontroller

0
推荐指数
1
解决办法
610
查看次数