异步方法在app启动时导致404错误

时间:2014-10-18 04:01:58

标签: c# asp.net asp.net-mvc asynchronous async-await

我在global.asax文件中使用async方法,遇到了问题。

即使async方法正常运行,当我在Application_Start()中触发它时,我的应用启动时会出现404错误,直到它完成,当它不应该出现时#39} ;完成直到完成。

这是我的global.asax中的代码:

public class MvcApplication : System.Web.HttpApplication
{
    protected async void Application_Start()
    {
        var Init = new Init();
        await Init.LoadAsync();

        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
    }
}

我在思考,因为Application_Start()必须async允许await命令,所以当应用启动时,Application_Start()函数本身不会被等待。因此,有必要找出如何await Application_Start()函数或其他方法来触发方法而无需Application_Start() async方法(后者将是首选。)

1 个答案:

答案 0 :(得分:1)

ASP.NET似乎不允许app_Start使用aysnc。但是,您可以使用HttpApplication.AddOnBeginRequestAsync(BeginEventHandler, EndEventHandler)为BeginRequest使用async。有一个标志来指示是否已调用Init.LoadAsync,以便您只在第一个请求时触发初始化。

然后设置应用程序初始化模块以创建第一个请求。

http://msdn.microsoft.com/en-us/library/System.Web.HttpApplication_methods%28v=vs.110%29.aspx