我已经花了几个小时来解决这个问题,这对我来说毫无意义。

我已经做了一个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;

08-08 01:47