簡體   English   中英

c#如何將此數據轉換為cookie?

[英]c# how do I turn this data into a cookie?

我正在為一個論壇API做一個包裝器,一個函數返回這個,這意味着為你提供足夠的信息來設置一個cookie來記錄用戶:

<?xml version="1.0" encoding="utf-8" ?>    
<ApiResponse>    
 <ErrorCode>0</ErrorCode>    
 <ErrorDescription/>    
 <ResultData recordcount="1">    
  <Record>  
   <Username>Gullanian</Username>    
   <UserID>4</UserID>    
   <CookieName>WWF9sLID</CookieName>    
   <CookieKey>UID</CookieKey>    
   <CookieData>Gullanian-CD45-ZCB-D72Z-AAC6</CookieData>    
   <CookiePath>/scirranew/forum/</CookiePath>
   <ForumPath>http://127.0.0.1/scirranew/Forum/</ForumPath> 
  </Record>    
 </ResultData>    
</ApiResponse>

我已經達到了這個目的:

public class WebWizCookie
{
    public string Username { get; set; }
    public int UserID { get; set; }
    public string CookieName { get; set; }
    public string CookieKey { get; set; }
    public string CookieData { get; set; }
    public string CookiePath { get; set; }
    public string ForumPath { get; set; }

    /// <summary>
    /// Loads this cookie so user is logged in with this cookie data.
    /// </summary>
    public void LoadCookie(double MinutesExpiry)
    {
        HttpCookie Cookie = new HttpCookie(this.CookieName);
        Cookie[this.CookieKey] = this.CookieData;
        Cookie.Domain = this.CookiePath;
        Cookie.Expires = DateTime.Now.AddMinutes(MinutesExpiry);

        HttpContext.Current.Response.Cookies.Add(Cookie);
    }

它正在返回所有值,但是當我調用此函數時,我沒有登錄到站點。 有誰知道我在這里做錯了什么? 忘記設置某些內容,或者設置錯誤?

編輯,打印出值

設置cookie后,如果我打印出值:

HttpContext.Current.Response.Write("Cookie[" + this.CookieKey + "] = " + this.CookieData + "<br />");
HttpContext.Current.Response.Write("Cookie.Domain = " + ConfigurationSettings.AppSettings["MasterDomainRoot"] + "<br />");

我明白了:

Cookie[UID] = Gullanian2-4B9B-9D5-27E2-A413
Cookie.Domain = http://localhost/ScirraNew
UID

在谷歌瀏覽器中,開發人員工具說有一個cookie:

在此輸入圖像描述

第一步是確定cookie是否正確創建。 你檢查過嗎? (您可以使用Firefox的Web開發人員工具欄執行此操作)。

你的Cookie.Domain是錯誤的。 請參閱MSDN上的HttpCookie.Domain - 它應該只包含域(例如“localhost”)而不是完整路徑(“http:// localhost / ScirraNew”)。 如果您想將cookie限制為僅限於網站的某些部分,則會有一個Path屬性,但這是一個很少使用的功能(我從來沒有遇到過這樣做的理由)。

順便說一句,您不需要設置Domain屬性 - 默認情況下,Cookie由同一域中的所有頁面共享。 如果你必須在不同的子域之間共享cookie,你真的只需要設置它(例如www.mysite.com和secure.mysite.com,你需要將Domain設置為“mysite.com”)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM