Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我是否可以在ASP.NET MVC应用程序中的应用程序_AuthenticateRequest之外设置HttpContext.Current.User?_Asp.net_Lifecycle - Fatal编程技术网

我是否可以在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
)。我希望他们在每个步骤中使用不同的不可变类,这样可以避免像这样的混淆。