C# 返回未经授权的查看结果

C# 返回未经授权的查看结果,c#,asp.net-mvc,C#,Asp.net Mvc,因此,我已将控制器函数上的[Authorize Attribute]替换为函数中的代码,并希望尝试返回与属性相同的结果,这是可能的还是我必须进行进一步更改 我试图从返回viewsult类型的函数返回一个http401 我已经尝试过未经授权返回,但这将不起作用,因为我返回的是ViewResult类型 public ViewResult Function([FromQuery] int? Id) { if (!User.HasRole("GenericRole")) { ret

因此,我已将控制器函数上的
[Authorize Attribute]
替换为函数中的代码,并希望尝试返回与属性相同的结果,这是可能的还是我必须进行进一步更改

我试图从返回viewsult类型的函数返回一个
http401

我已经尝试过未经授权返回,但这将不起作用,因为我返回的是ViewResult类型

public ViewResult Function([FromQuery] int? Id)
{
   if (!User.HasRole("GenericRole"))
   {
     return _____;
   }
}
如果我没有提供足够的信息来制定答案,请道歉

您需要返回

return Unauthorized();
或者您可以抛出异常

throw new HttpResponseException(HttpStatusCode.Unauthorized);

如果您希望此视图可供具有特定角色的任何用户使用,那么您应该这样做

    [Authorize(Roles = "Administrator")]
    public ViewResult Function([FromQuery] int? Id)
    {
        return View();
    }
或者,如果您希望为除一个角色之外的所有角色显示此视图,请按此方式执行

    [Authorize]
    public ActionResult Function([FromQuery] int? Id)
    {
        if (!User.HasRole("GenericRole"))
            return new HttpUnauthorizedResult();

        return View();
    }

根据MVC/WebAPI的版本,可能是这样的:
返回新的HttpUnauthorizedResult()
注意,这将是一个
ActionResult
,而不是
ViewResult
。我假设您正在使用旧的asp.net mvc,查看您的返回类型
ViewResult
可能与我尝试过的“return new HttpUnauthorizedResult();”重复,但得到一个“找不到类型或命名空间名称”-错误?我最终使用了您的第一个解决方案,并切换到返回类型Actionresult