我已经花了几个小时来解决这个问题,这对我来说毫无意义。
我已经做了一个asp.net mvc 3应用程序,已经实现了表单身份验证。我已经在实现了GetUser(..)
方法和ValidateUser(...)
方法的地方创建了自己的自定义提供程序,其余的实现会引发未实现的异常
我可以在登录页面上将登录信息提供给AccountController,并欢迎使用用户名!
很好,因此该登录似乎有效。
现在我的FooController上有3个动作
指数
FirstAction
SecondAction
具体的实现看起来像这样
[HttpPost]
public JsonResult FirstAction(int param1, string param2, string param3)
{
var userID = (int)Membership.GetUser().ProviderUserKey;
...
}
[HttpPost]
public JsonResult SecondAction(int param1, int param2, string param3)
{
var userID = (int)Membership.GetUser().ProviderUserKey;
...
}
您可能已经猜到了,我正在从
Index
视图中调用jQuery ajax功能的FirstAction和SecondAction。以下行引发null引用异常:
var userID = (int)Membership.GetUser().ProviderUserKey;
奇怪的是,只有在SecondAction中抛出空引用,该调用才能在FirstAction中正常工作。
我试过像这样拆分
var user = Membership.GetUser();
var providerKey = user.ProviderUserKey;
var userID = (int)providerKey.
但是它仍然无法投放。
Membership.GetUser(..)返回的MembershipUser对象具有一个存储在providerUserKey中的整数,而不是常规成员资格实现所具有的Guid。
任何形状或形式的任何帮助,我们将不胜感激。
最佳答案
调试!事情不是您想的那样!
var user = Membership.GetUser();
Debug.Assert(user != null);
var userKey = user.ProviderUserKey;
Debug.Assert(userKey != null);
var userID = (int)userKey;