2017-07-07 8 views
1

これはWebサービスメソッドであるコードにCookieを保存する方法です。私はクッキーの有効期限を変更しようとしましたが、まだそれは私のために働いていません。クッキーを書くのにContext.Responseの問題はありますか?それを読むにはContext.Requestですか?次のページでRequest.Cookies ["cookieName"]はWebサービスメソッドでnullです

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = false)] 
public FormRootObject getDataFromCookie() 
{ 
    FormRootObject form = new FormRootObject(); 
    List<formFielddata> lstFormFieldData = new List<formFielddata>(); 

    var getCookie=Context.Request.Cookies["UserData"]; 
    if (getCookie != null) 
    { 
     if (getCookie.Values.Count > 0) 
     { 
      foreach (var val in getCookie.Values) 
      { 
       formFielddata document = new formFielddata(); 

       if (val.ToString() != "formid") 
       { 
        document.id = val.ToString(); 
        document.value = getCookie[val.ToString()]; 
        lstFormFieldData.Add(document); 
       } 
       else { 
        form.formid = getCookie[val.ToString()]; 
       } 
      } 

      form.fielddata = lstFormFieldData; 
     } 
    } 

    return form; 
} 

をこのクッキーを取得するための

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = false)] 
public void SaveInDraft(FormRootObject _forms) 
{ 
    HttpCookie formCookie = new HttpCookie("UserData"); 

    formCookie.Values.Add("formid", _forms.formid); 

    foreach (var item in _forms.fielddata) 
    { 
     formCookie.Values.Add(item.id, item.value); 
    } 

    formCookie.Expires = DateTime.Now.AddYears(1); 
    Context.Response.Cookies.Add(formCookie); 

} 

が、私のオブジェクトgetCookieは常にnull

答えて

0

var getCookie=HttpContext.Current.Request.Cookies["UserData"]; 
+0

ですが、これは私にとってはうまくいったのですが、要件のユーザーがクッキーを保存してインターネット接続なしでそれらを取り戻すことができるはずですので、javascriptを使用してクッキーを保存する方がいいです。 ](https://stackoverflow.com/questions/14573223/set-cookie-and-get-cookie-with-javascript) –

0

ラジェッシュで、フォームはWebアプリケーションにのみ存在しています。サービスを作成するためにプレーンなWeb APIを使用している場合、サービスクライアントにはフォームは提示されません。

クッキーを作成するには var resp = new HttpResponseMessage();クッキーを消費する

var cookie = new CookieHeaderValue("session-id", "12345"); 
cookie.Expires = DateTimeOffset.Now.AddDays(1); 
cookie.Domain = Request.RequestUri.Host; 
cookie.Path = "/"; 

resp.Headers.AddCookies(new CookieHeaderValue[] { cookie }); 
return resp; 

CookieHeaderValue cookie = Request.Headers.GetCookies("session-id") 
+0

として

HttpContext.Current.Response.Cookies.Add(formCookie); 

そして、これを読んで、それが役に立てば幸いとして、私はクッキーを格納することによって、これを得た:) –

+0

ませんIこのためにWeb APIを使用していません。 .asmx Webサービスで、ここのフォームは私のクラスオブジェクト –

関連する問題