2013-05-02 65 views
0

我正在設計一個ASP.net MVC4應用程序,我需要獲取當前的用戶ID,以便將它作爲組的所有者ID保存在我的數據庫的表中。獲取userId的登錄用戶返回null

這是我使用的代碼:

public ActionResult CreateGroup(string groupName, string description) 
{ 
     if (Request.IsAuthenticated) 
     { 
      Group group = new Group(); 
      Random random = new Random(); 
      int groupId = random.Next(1, 2147483647); 

      using (CodeShareEntities conn = new CodeShareEntities()) 
      { 
       try 
       { 
         int ownerId = (int) Membership.GetUser(System.Web.HttpContext.Current.User.Identity.Name).ProviderUserKey; 

         group.GroupId = groupId; 
         group.GroupName = groupName; 
         group.Description = description; 
         group.OwnerId = ownerId; 

         conn.Group.Add(group); 
         conn.SaveChanges(); 
        } 
        catch (Exception e) 
        { 
         ModelState.AddModelError("", e.Message); 
        } 
       } 

       return View("ThisGroup"); 
      } 
      else 
      { 
      return View("../Shared/NotLoggedIn"); 
    } 

我得到一個NullReferenceException在這條線:

雖然用戶名是否正確返回。可能是什麼問題?我對web應用程序仍然很陌生,我真的無法弄清楚這一點!

感謝

回答

0

除非你使用的是自定義的成員資格提供,我相信ProvidersUserKey是一個GUID。

(Guid) Membership.GetUser(System.Web.HttpContext.Current.User.Identity.Name).ProviderUserKey; 
+0

什麼是Guid?以及如何將其轉換爲整數,以便我可以將其保存在數據庫中?感謝您的回答 – Bernice 2013-05-02 19:04:13

+0

嘗試與Guid,但仍然沒有工作..同樣的例外:/ – Bernice 2013-05-02 19:10:08

0

試試這個code.it是工作,如果你使用aspnet會員提供。

MembershipUser user = Membership.GetUser(HttpContext.User.Identity.Name); 
    Guid guid = (Guid)user.ProviderUserKey; 
0

這是檢索當前登錄用戶ID的助手方法。

請注意,ASP.Net會員使用Guid作爲ID(而不是整數)。

public static Guid? UserId 
{ 
    get 
    { 
     try 
     { 
      Guid? userId = null; 
      if (HttpContext.Current != null && 
       HttpContext.Current.User.Identity.IsAuthenticated) 
      { 
       MembershipUser currentUser = Membership.GetUser(); 
       userId = (Guid)currentUser.ProviderUserKey; 
      } 
      return userId; 
     } 
     catch 
     { 
      return null; 
     } 
    } 
} 

注:要檢查返回UserIdnullgroup.OwnerIdGuid過;否則,你的保存語句將失敗。

+0

感謝您的答案:) ..所以沒有辦法將guid轉換爲整數?我的數據庫字段OwnerId是int類型,sql server沒有guid類型 – Bernice 2013-05-04 10:02:12

+0

如果您想將OwnerId作爲Users表的UserId的外鍵,則OwnerId必須是Guid。否則,你不能在它們之間建立關係。這裏是示例http://stackoverflow.com/a/15745316/296861 – Win 2013-05-04 18:37:30