1
根據this article和與本教程相關的github中的源代碼,我試圖實現一個mvc應用程序,其中用戶擁有單獨的資源。User.Identity.GetUserId()返回null
我有我的控制器的授權屬性,如果我沒有登錄,我將被重定向到登錄頁面。我可以在頁面的頂部看到我的用戶名,所以我認爲事情沒有問題。但後來我嘗試在另一個控制器上創建一個動作,並發現currentUser爲空。
這似乎發生在一個隨機的方式,這使得它非常沮喪。但最近才失敗。
它可能是創建數據庫的東西嗎?我使用Code First。
[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);
}
嗯我不知道你的模型是不同步的數據庫。當你更新實體模型時你會得到這個嗎? – heymega
另外,如果你只打算在下一個查詢中使用ID,爲什麼要調用manager.FindById並返回用戶實體?似乎毫無意義的數據庫調用... – heymega
我通常可以通過確保我註銷,關閉解決方案,刪除數據庫來工作。我發現我每次都在initiliazer中刪除數據庫。這我改爲DropCreateDatabaseIfModelChanges。關於其他評論,沒有想過,只是使用示例代碼,讓事情發揮作用,然後希望理解它。 – Jepzen