我有一个控制器:AdminController,其中有一个具有此声明的方法:
string user = HttpContext.User.Identity.Name.ToUpper();
它为我提供了一个未设置为对象错误实例的对象引用...
但是,我有另一个控制器(BatchesController),我在其中执行此操作:
Regex.Match(HttpContext.User.Identity.Name, @"([^\\]+$)").Groups[0].Value
工作正常......
我还有另一个使用它的控制器:
public class AuthoriseUser : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
string username = httpContext.User.Identity.Name.ToString().ToUpper();
List<string> a = GetAll();
Boolean authorise = false;
if (httpContext == null)
{
throw new ArgumentNullException("httpContext");
}
IPrincipal user = httpContext.User;
if (!user.Identity.IsAuthenticated)
{
authorise = true;
}
很抱歉,这只是一个片段。但它确实有效。
为什么它在那个地方失败了?如果您需要更多情况,请告诉我。
答案 0 :(得分:0)
问题是我正在创建一个新的AdminController对象:
AdminController ac = new AdminController();
相反,我将用户存储在变量中并将其传递而不是使用&#39;用户&#39;变量