【发布时间】:2018-05-08 02:38:54
【问题描述】:
我的 MVC 应用程序有以下 global.asax。每次请求开始时,我都会在Application_BeginRequest() 中的每个请求中添加ApplicationContext(其中包含一些对象,例如用于处理身份验证的Tokenfactory 等)。尽管ApplicationContext 在Application_Start() 中被正确实例化,但每次调用Application_BeginRequest() 时它都是空的。
public class MvcApplication : HttpApplication {
/// <summary>
/// Application context which can be accessed server wide. It contains Tokenfactory etc.
/// </summary>
public ApplicationContext ApplicationContext { get; private set; }
/// <summary>
/// Runs once when application starts.
/// </summary>
protected void Application_Start() {
//STUFF...
//........
InitializeContext();
}
private void InitializeContext() {
ApplicationContext = new ApplicationContext();
}
protected void Application_BeginRequest() {
Context.Items.Add("TokenFactory", ApplicationContext.tokenFactory);
}
}
额外信息:
如果我将此行更改为
public ApplicationContext ApplicationContext { get; private set; }
这个➡(当然删除InitializeContext(); :P)
public ApplicationContext ApplicationContext { get; } = new ApplicationContext();
它没有问题!这种行为的原因是什么?
【问题讨论】:
标签: c# asp.net global-asax