C# User.IsInRole(“x”)在一个ActionResult中始终为空,在另一个ActionResult中工作。为什么?

C# User.IsInRole(“x”)在一个ActionResult中始终为空,在另一个ActionResult中工作。为什么?,c#,asp.net-mvc,C#,Asp.net Mvc,用户在第二个ActionResult中始终为空,并在第一个ActionResult中正常工作。两者都在同一个控制器中。 我能想到的唯一区别是,第一个页面是一个动态页面,而第二个特殊报告是文件夹中的静态文件 为什么会这样?有办法吗 public ActionResult Page(string it) { MVpage page = new MVpage(it); //some code if (!page.Content.Publi

用户在第二个ActionResult中始终为空,并在第一个ActionResult中正常工作。两者都在同一个控制器中。
我能想到的唯一区别是,第一个
页面
是一个动态页面,而第二个
特殊报告
是文件夹中的静态文件

为什么会这样?有办法吗

public ActionResult Page(string it)
    {
        MVpage page = new MVpage(it);

          //some code

        if (!page.Content.Published && !User.IsInRole("Admin")) //works fine!
        {
            Response.StatusCode = 307; 
            return View("Woops");
        }

        return View(page);
    }
public ActionResult SpecialReports(string name)
    {

        if (!name.Contains("pdf") && !User.IsInRole("Admin"))//Doesn't work! User==null :(
        {
            Response.StatusCode = 307;
            return View("Woops");
        }
        return new FilePathResult("~/x/" + name, y);
    }

用户通常设置有授权和/或身份验证筛选器。你设置正确了吗?@EmrahSüngüI没有设置过滤器,但是没有它,第一个ActionResult可以正常工作。你能链接到一个例子吗?请看一看这个问题:PS:我还认为在你的
页面(string it)
方法
User
null
。你能调试并确认吗?@EmrahSüngü感谢你的链接(以及你的帮助)。用户不为空,请参见屏幕截图您使用的是哪种身份验证类型?饼干?OpenID?OAuth2?还有别的吗?