我在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
方法(后者将是首选。)
答案 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