2

さて、私はこの例に従って、Cristian Darie による「Beginning ASP.NET in E-Commerce」という本を読んでいます。この例では、BalloonShop というオンライン ショップを作成します。このエラーが原因でサイトが起動しなくなった17章あたりまで、私はぐるぐる回っています。

Object reference not set to an instance of an object

Line 27:             HttpContext context = HttpContext.Current;
Line 28:             // try to retrieve the cart ID from the user cookie
Line 29:             string cartId = context.Request.Cookies["BalloonShop_CartID"].Value;
Line 30:             // if the cart ID isn't in the cookie...
Line 31:             {

説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

例外の詳細: System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。

私のスタックトレースは次のとおりです。

[NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。] f:\TheGate\App_Code\ShoppingCartAccess.cs:29 の ShoppingCartAccess.get_shoppingCartId() f:\TheGate\App_Code\ShoppingCartAccess.cs の ShoppingCartAccess.GetItems(): 188 UserControls_CartSummary.PopulateControls() in f:\TheGate\UserControls\CartSummary.ascx.cs:25 UserControls_CartSummary.Page_PreRender(オブジェクト送信者、EventArgs e) in f:\TheGate\UserControls\CartSummary.ascx.cs:18 System.Web. Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, オブジェクト o, オブジェクト t, >EventArgs e) +14 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(オブジェクト送信者, EventArgs e) +35 System.Web.UI.Control.OnPreRender(EventArgs e) +8998946 System.Web.UI.Control.PreRenderRecursiveInternal() +103 System.Web.UI.Control.PreRenderRecursiveInternal() +175 System.Web.UI.Control.PreRenderRecursiveInternal() +175 System.Web.UI.Control.PreRenderRecursiveInternal() +175 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2496

私のコードは、私の限られた知識では問題ないようです (次のように、私の ShoppingCartAccess.cs クラスから):

    private static string shoppingCartId
{
    get
    {

        // get the current HttpContext
        HttpContext context = HttpContext.Current;
        // try to retrieve the cart ID from the user cookie
        string cartId = context.Request.Cookies["BalloonShop_CartID"].Value;
        // if the cart ID isn't in the cookie...
        {
            // check if the cart ID exists as a cookie
            if (context.Request.Cookies["BalloonShop_CartID"] != null)
            {
                // return the id
                return cartId;
            }
            else
            // if the cart ID doesn't exist in the cookie as well, generate a new ID
            {
                // generate a new GUID
                cartId = Guid.NewGuid().ToString();
                // create the cookie object and set its value
                HttpCookie cookie = new HttpCookie("BalloonShop_CartID", cartId);
                // set the cookie's expiration date
                int howManyDays = TheGateConfiguration.CartPersistDays;
                DateTime currentDate = DateTime.Now;
                TimeSpan timeSpan = new TimeSpan(howManyDays, 0, 0, 0);
                DateTime expirationDate = currentDate.Add(timeSpan);
                cookie.Expires = expirationDate;
                // set the cookie on the client's browser
                context.Response.Cookies.Add(cookie);
                // return the CartID
                return cartId.ToString();
            }
        }
    }
}

プログラミング学習のこの段階では、私はかなり無力です。私が知る限り、私のプログラムは Cookie を探しています。Cookie が見つからない場合は、Cookie を作成しますが、どういうわけかすべてがつまずいています。16章までは順調だったのですが、今は直し方がわからず困っています。何か案は?ありがとう!!

4

2 に答える 2