2011-12-02 34 views
1

我有一個web服務,'.aspx.cs中的.aspx(而不是)實現的'AHandyWebService'。在.aspx(代碼隱藏)中的w-s試圖設置cookie,但不能?

我試圖在調用Web服務時在客戶端上設置一個cookie。

我不確定這是不是內在的不可能或者是否與我做過的事情有關。

因爲實現w-s的方法是靜態的,所以我不得不實現一個'page'的本地實例,我不太確定它應該如何。

方法是這樣的:

[WebMethod] 
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json, XmlSerializeString = false)] 
public static SomeObj AHandyWebService() 
{ 
    SomeObj mySomeObj; 
    try 
    { 
     mySomeObj = getSomeObj(); 
     System.Web.UI.Page p = new Page(); 
     HttpCookie appCookie = new HttpCookie("FOOAPP"); 
     appCookie.Value = String.Format("Written: {0:yyyy-MM-dd}", System.DateTime.Now.ToUniversalTime()); 
     appCookie.Expires = System.DateTime.Now.ToUniversalTime().AddMinutes(1); 
     appCookie.Path = "/FOO"; 
     p.Response.Cookies.Add(appCookie); 

    } 
    catch (Exception ex) 
    { 
     throw; 
    } 

    return mySomeObj; 

} 

順便說這裏沒有跨域問題 - 在W-S是由同一個域作爲W-S方頁面從端上來提供。

將歡迎您的建議/意見。

回答

0

好吧,這有點尷尬。經過很多嘗試不同的事情之後,我發現支持w-s的方法實際上並不是我認爲的方法! ...因此沒有送達餅乾!

與此同時在其他新聞中,我遇到了這個StackOverflow question,它提供了我認爲更適合從靜態方法訪問Response對象的更爲理智的方法,所以我已經實現了它,現在它應該可以正常工作。

如果它在這裏的一些使用的是現在的工作方法的副本:

[WebMethod] 
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json, XmlSerializeString = false)] 
public static SomeObj AHandyWebService() 
{ 

    SomeObj mySomeObj; 

    try 
    { 
     mySomeObj = getSomeObj(); 
     HttpCookie appCookie = new HttpCookie("FOOAPP"); 
     appCookie.Value = String.Format("Written: {0:yyyy-MM-dd}", System.DateTime.Now.ToUniversalTime()); 
     appCookie.Expires = System.DateTime.Now.ToUniversalTime().AddMinutes(1); 
     appCookie.Path = HttpContext.Current.Request.ApplicationPath; 
     HttpContext.Current.Response.Cookies.Add(appCookie); 
    } 
    catch (Exception ex) 
    { 
     throw; 
    } 
    return mySomeObj; 
} 
相關問題