「WebSecurity.InitializeDatabaseConnection」メソッドを呼び出す必要があります.の

2077 ワード

次のコードがあります.
        [Authorize]
        public ActionResult Index()
        {
            ViewBag.ShowList = ShowList.GetShowList(WebSecurity.CurrentUserId);
            return View();
        }

実行すると、エラーが表示されます.

「WebSecurity.InitializeDatabaseConnection」メソッドを呼び出してから、「WebSecurity」クラスの他のメソッドを呼び出す必要があります。この呼び出しは、サイトのルートディレクトリに配置する必要があります。AppStart.cshtmlファイルにあります。

本来は特性を加える
        [Authorize]
        [InitializeSimpleMembership]
        public ActionResult Index()
        {
            ViewBag.ShowList = ShowList.GetShowList(WebSecurity.CurrentUserId);
            return View();
        }

一つ一つACTIONで加えれば、Controllerにも加われます
    [InitializeSimpleMembership]
    public class UserController : Controller
    {
        //
        // GET: /User/
        
        [Authorize]
        public ActionResult Index()
        {
            ViewBag.ShowList = ShowList.GetShowList(WebSecurity.CurrentUserId);
            return View();
        }
}

解決方法1:


各操作の上部ではなく、コントローラに[InitializeSimpleMembership]を追加できます.WebSecurity.GetUserId(User.Identity.Name)を使用できます.
または、
var userId = Membership.GetUser(User.Identity.Name).ProviderUserKey;

参考記事:
http://www.itstrike.cn/Question/6a7fbe3b-f44e-430c-94c6-f760c713063