我是否可以在ASP.NET MVC应用程序中的应用程序_AuthenticateRequest之外设置HttpContext.Current.User?
在谷歌上搜索之后,我发现(自然)意见不同。下面是:我是否可以在ASP.NET MVC应用程序中的应用程序_AuthenticateRequest之外设置HttpContext.Current.User?,asp.net,lifecycle,Asp.net,Lifecycle,在谷歌上搜索之后,我发现(自然)意见不同。下面是: 设置HttpContext.Current.User不在AuthenticateRequest事件处理程序内,而是在其他地方(如BeginRequest或任何其他事件处理程序)可以吗?回答我自己的问题,将Current.User设置在AuthenticateRequest之外的某个位置会导致IIS 7.0下出现各种难以捉摸的错误。这些很难确定,但是IIS/ASP.NET支持的各种身份验证方法加上集成与经典管道模式加上.NET版本的并置。。。总而
设置
HttpContext.Current.User
不在AuthenticateRequest
事件处理程序内,而是在其他地方(如BeginRequest
或任何其他事件处理程序)可以吗?回答我自己的问题,将Current.User
设置在AuthenticateRequest
之外的某个位置会导致IIS 7.0下出现各种难以捉摸的错误。这些很难确定,但是IIS/ASP.NET支持的各种身份验证方法加上集成与经典管道模式加上.NET版本的并置。。。总而言之,这是个坏主意。+1得出这样的结论“总而言之,这是个坏主意”是让优秀程序员变得更好的原因,而不是一开始就坚持/强迫一个容易出现错误的想法。如果不在系统中引入这种风险(称为“难以捉摸的bug”),您将节省大量的时间、金钱和麻烦。令人恼火的是,ASP.NET在ASP.NET请求生命周期的所有步骤中使用了一个HttpContext
类,该类充满了公开的可变状态(例如User
)。我希望他们在每个步骤中使用不同的不可变类,这样可以避免像这样的混淆。