2017-03-21 12 views
0

.net v100のESRIランタイムSDKを使用してESRI Arcgisのクッキーをオンラインに設定しようとしています。ARCGISに設定したCookieの値を取得しようとしましたが、値が戻ってこないのですか?

 var cookie = new CookieHeaderValue("customCookie", cred.Token);    
     var response = Request.CreateResponse(HttpStatusCode.OK, new { 
                      token = cred.Token, 
                      expires = cred.ExpirationDate 
                     }); 
     response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");    
     response.Headers.AddCookies(new CookieHeaderValue[] { cookie }); 
     return response; 

これ以降のリクエストでそのCookieを後で取得しようとすると、nullが返されます。

CookieHeaderValue cookie = context.Request.Headers.GetCookies("customCookie").FirstOrDefault(); 

私は戻って設定されたCookieを取得するための別の方法がある場合、私は疑問に思って?

答えて

1

v100を使用していますか?

はい場合は、次のコードを試すことができます。

 ArcGISHttpClientHandler.HttpRequestBegin += (sender, request) => 
     { 
      var cookieContainer = ((System.Net.Http.HttpClientHandler)sender).CookieContainer; 
      var cookies = cookieContainer.GetCookies(request.RequestUri); 
      var customCookie = new Cookie("customCookie", "someValue") { Domain = request.RequestUri.Host }; 
      bool foundCookie = false; 
      foreach (Cookie cookie in cookies) 
      { 
       if (cookie.Name == customCookie.Name) 
       { 
        foundCookie = true; 
        break; 
       } 
      } 
      if (!foundCookie) 
       cookieContainer.Add(customCookie); 

     }; 

ArcGISHttpClientHandlerは、リクエストごとに呼び出されるイベントHttpRequestBeginを持っています。 CookieContainer.GetCookiesとAddを使用してCookieを取得/追加できます。

+0

はい、私はv100を使用しています。 –

+0

ありがとうございました。これはうまくいくようですが、疑問があります。これを自分のレスポンスオブジェクトにどのように追加しますか? –

+0

この時点では、発信要求にヘッダを追加することしかできません。おそらく、達成しようとしていることについてもう少し詳しく話すことができますか? – dotMorten

関連する問題