2013-05-26 2 views
0

장바구니가있는 웹 사이트를 구축 중입니다.
모든 장바구니의 상품이 마스터 페이지에 표시되기를 원합니다. ASP.NET " 'Session'이 'System.NullReferenceException'"마스터 페이지의 예외를 던졌습니다.

내 SiteMaster.Master.cs입니다 :

protected void Page_Load(object sender, EventArgs e) 
    { 
     System.Web.Security.MembershipUser user = System.Web.Security.Membership.GetUser(); 

     IBLClient b = new FrontEnd(); 
     if (user != null) 
      Session["UserID"] = b.GetUserIDByUsername(user.UserName); 

     if (Session["Cart"] == null) 
     { 
      Session["Cart"] = new List<string>(); 
     } 

     if (!(Roles.IsUserInRole("Admin") || Roles.IsUserInRole("Seller"))) 
     { 
      ManagePage.Visible = false; 

     } 

    } 


    public BindingList<Product> GetProductsCart() 
    { 
     IBLClient b = new FrontEnd(); 
     BindingList<Product> ProductsList = new BindingList<Product>(); 


     if (Session["Cart"] != null) 
     { 
      foreach (string ProductId in (List<string>)Session["Cart"]) 
      { 
       ProductsList.Add(b.GetProduct(int.Parse(ProductId))); 
      } 
     } 

     return ProductsList; 
    } 

그리고 이것은 내 소스 코드입니다

enter image description here

: 페이지가이 같이의로드 할 때

<asp:DataList ID="ProductsList" runat="server" CellPadding="4" DataSourceID="ProductsListObjectDataSource" ForeColor="#333333"> 
            <AlternatingItemStyle BackColor="White" /> 
            <ItemTemplate> 
            </ItemTemplate> 
            <SelectedItemStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" /> 
           </asp:DataList> 
           <asp:ObjectDataSource ID="ProductsListObjectDataSource" runat="server" SelectMethod="GetProductsCart" TypeName="WebGUI.SiteMaster"></asp:ObjectDataSource> 

그러나 ObjectDataSource의이후 0 GetProductsCart() 함수에서이 예외가 발생하여 this이 변경되었습니다.

enter image description here

이 일어나는 이유는 어떤 생각?
이를 피하려면 어떻게해야합니까?

+0

여기서 문제는 해당 세션에서 해당 세션 호출 기능을 사용할 수 없거나 아직 준비가되지 않았거나 해당 통화 내에서 세션을 찾을 수없는 경우입니다. – Aristos

답변

0

내가해야 할 일 context.Session 이것이 문제입니다!

관련 문제