2016-04-27 2 views
3

私はasp.netコアmvc​​にWebフォームアプリケーションを変換しています。私のWebフォームアプリケーションでは、応答クッキーをいくつか設定した後に、他のコードが設定されているかどうかを確認し、そうであればクッキーのプロパティ(値、Expires、Secure、http)にアクセスする必要があります。 WebフォームとMVC 5では、それはクッキーを反復ので、(私が知っている古い学校)のような任意の特定のクッキーを返すことが可能ですAsp.net Core MVC(別名Asp.Net 5 RC1)の応答Cookieを確認するにはどうすればよいですか?

 for(int i = 0; i < cookies.Count; i++) { 
      if(cookies[i].Name == cookieName) { 
       return cookies[i]; 
      } 
     } 

しかし、asp.netコアMVCで応答クッキーにアクセスするためのインタフェースは、次のようになります。

私は、応答クッキーが存在するかどうかを確認する方法を参照してください、それがプロパティだ入手していない、このインターフェイスに基づいて

response cookies interface

。しかし、それを行うにはいくつかの方法がありますか?

アクションメソッドでは、レスポンスオブジェクトに2つのCookieを設定してから、すぐにアクセスしようとしました。しかし、インテリセンスが、私はそれらにアクセスすることを可能にする任意のメソッド、プロパティまたはインデクサが表示されない:

enter image description here

瞬間のために、私は多分、私がResponse.Cookies.ToString();を使用して、ちょうど私のクッキーを見つけるための情報を解析できると考えましたinfo、しかし、ああ、ToString()呼び出しは、オブジェクトが既定の実装をオーバーライドしないため、 "Microsoft.AspNet.Http.Internal.ResponseCookies"を返します。

私はGitHubの現在のdevブランチをチェックして、RC1以降のインターフェースが変更されているかどうかを確認しましたが、変更されていません。だから、このインターフェースを考えると、どのようにしてレスポンスクッキーの存在をチェックし、そのプロパティを取得するのですか?私は、応答ヘッダーコレクションを介してハックしようとしたことについて考えましたが、それはかなり不自由なようです。

+0

アクションメソッドで 'Response.Cookies'を試しましたか? –

+0

私は持っていますか?それを示すために質問を更新します。 –

+0

ああ、申し訳ありません。私は 'Request.Cookies'を意味した、私の間違い! –

答えて

1

回答からクッキーのvalueを取得する方法は次のとおりです。このようなものは、必要に応じてクッキー全体を取得するために使用できます:

string GetCookieValueFromResponse(HttpResponse response, string cookieName) 
{ 
    foreach (var headers in response.Headers.Values) 
    foreach (var header in headers) 
     if (header.StartsWith(cookieName)) 
     { 
     var p1 = header.IndexOf('='); 
     var p2 = header.IndexOf(';'); 
     return header.Substring(p1 + 1, p2 - p1 - 1); 
     } 
    return null; 
} 
関連する問題