Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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 User.Identity.GetUserId()返回null_Asp.net Mvc_Asp.net Identity - Fatal编程技术网

Asp.net mvc User.Identity.GetUserId()返回null

Asp.net mvc User.Identity.GetUserId()返回null,asp.net-mvc,asp.net-identity,Asp.net Mvc,Asp.net Identity,基于和本教程相关的github中的源代码,我试图实现一个mvc应用程序,其中用户拥有独立的资源 我的控制器上有authorize属性,如果我没有登录,我将被重定向到登录页面。我可以在页面顶部看到我的用户名,所以我认为一切正常。但随后我在另一个控制器上尝试创建操作,发现currentUser为null 这似乎是随机发生的,这让人非常沮丧。但最近只是失败了 这可能与数据库的创建有关吗?我先用代码 [Authorize] public class ShopsController : Controll

基于和本教程相关的github中的源代码,我试图实现一个mvc应用程序,其中用户拥有独立的资源

我的控制器上有authorize属性,如果我没有登录,我将被重定向到登录页面。我可以在页面顶部看到我的用户名,所以我认为一切正常。但随后我在另一个控制器上尝试创建操作,发现currentUser为null

这似乎是随机发生的,这让人非常沮丧。但最近只是失败了

这可能与数据库的创建有关吗?我先用代码

 [Authorize]
public class ShopsController : Controller
{
    private ApplicationDbContext db;
    private UserManager<ApplicationUser> manager;

    public ShopsController()
    {
        db = new ApplicationDbContext();
        manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(db));

    }


    // GET: Shops
    public ActionResult Index()
    {
        var currentUser = manager.FindById(User.Identity.GetUserId());
        var shops = db.Shops.ToList().Where(shop => shop.Owner.Id == currentUser.Id);
        return View(shops);
    }
[授权]
公共类ShopController:控制器
{
私有应用程序上下文数据库;
私人用户管理器;
公共商店控制员()
{
db=新的ApplicationDbContext();
manager=newusermanager(newuserstore(db));
}
//获取:商店
公共行动结果索引()
{
var currentUser=manager.FindById(User.Identity.GetUserId());
var shops=db.shops.ToList(),其中(shop=>shop.Owner.Id==currentUser.Id);
返回视图(商店);
}
尝试此代码(注意:转换为字符串):

User.Identity.GetUserId()

因为数据库中我的ID列是ID nvarchar(128),not null没有强制转换时,我收到了null,但强制转换后它给了我预期的GUID

嗯,我想知道您的模型是否与数据库不同步。您在更新实体模型时是否收到此消息?另外,如果您只在下一次查询中使用ID,为什么要调用manager.FindById并返回用户实体?看起来像无意义的db调用…我通常可以通过确保我注销、关闭解决方案、删除数据库来让它工作。我发现我每次都在initilizer中删除数据库。我将此更改为DropCreateDatabaseIfModelChanges。关于其他注释,我没有考虑到这一点,只需使用示例代码,让事情正常工作,然后就可以了我不明白。
 User.Identity.GetUserId<string>()