2017-01-24 3 views
1

ホームページをご覧になるには、最初にスプラッシュランディングページ(ENTER SITE)default-splash.aspxにアクセスする必要があります。なぜ私のbool HttpCookieがスプラッシュページにリダイレクトしても正しく動作しないのですか?

同様に、見た人はそれを無視して、default.aspxのホームページにとどまります。

bool userVisited = false; 
HttpCookie cookie = Request.Cookies["Hoarding"]; 
if (cookie == null) 
{ 
    cookie = new HttpCookie("Hoarding"); 
    cookie.Values.Add("userVisitedSplash", true); 
    cookie.Expires = DateTime.Now.Days(1); 
    cookie.HttpOnly = true; 
    this.Page.Response.AppendCookie(cookie); 
} else{ 
    userVisited = cookie.Values["userVisitedSplash"]; 
} 
if(userVisited){ 
    Response.Redirect("/default.aspx"); 
} else{ 
    Response.Redirect("/default-splash.aspx"); 
} 

私はライン上で、しかしエラーが発生します。

cookie.Values.Add("userVisitedSplash", true); 

CS1502: 'System.Collections.Specialized.NameValueCollection.Add(文字列、文字列)' の最良のオーバーロードされたメソッドの試合を

答えて

0

引数タイプは(string, string)で、("userVisitedSplash", true)を使用すると、エラーが表示されるようになります。エラーメッセージから

1

それはオーバーロードメソッドは、パラメータとして2つの文字列を期待することはかなり明らかだとあなたがstringに渡しているとbool

ので

cookie.Values.Add("userVisitedSplash", "true"); 

cookie.Values.Add("userVisitedSplash", true); 

から変更

それからあなたがそれを読んだときには、stringtrueをに変換してください。

+0

ありがとう@Izzy!しかし、今私は: '暗黙のうちにタイプ '文字列'を 'bool'に変換することはできません:userVisited = cookie.Values [" userVisitedSplash "];' – davvv

1

「System.Collections.Specialized.NameValueCollection.Add(文字列、文字列)」の最良のオーバーロードされたメソッドの試合は、いくつかの無効なarguments`を持って

上記何らの方法はとらないということです言います必要なパラメータ。それはあなたのために働くメソッドのオーバーロードを見つけようとしていますが、それはできません。それが見つかった最も近いものが言及されたものです。

これはパラメータとして2つの文字列を受け取るのに対して、渡す文字列とboolは渡されていることがわかります。

修正するには、boolを文字列に変更する必要があります。

cookie.Values.Add("userVisitedSplash", "true"); 

、その後、あなたはそれを読んでいるとき:ので、代わりにあなたが使用

if (!Boolean.TryParse(cookie.Values["userVisitedSplash"], out userVisited)) 
{ 
    userVisited = false; 
} 

これは、クッキー値を探しboolean型としてそれを解析しようとすると、それはそれをそれを解析するために失敗した場合値をfalseに設定します。

+0

Chris!私は次のようになります:暗黙のうちにタイプ 'string'をここで 'bool'に変換することはできません: 'userVisited = cookie.Values [" userVisitedSplash "];' – davvv

+1

うん、まさにそれ。私の2番目のビットはあなたの行を置き換えることができます – Chris

+0

クリスおかげで。 Firefoxは現在、Firefoxがこのアドレスの要求を完了しないようにリダイレクトしていることを検出しました(私は質問を更新しました)。あなたの助けを本当にありがとう:-) – davvv

関連する問題