2012-07-14 60 views
1

我需要將保留類型對象從一個主域傳遞到子域,其中是安裝了ssl的頁面。所以它需要有發送所有的價值觀和消費有/如何將複雜類型對象從一個域傳遞到子域

我累了創建具有以下方法

[WebMethod] 
    public List<Reservation> getReservation() 
    { 
     if (HttpContext.Current.Session["reservation"] != null) 
     { 
      return (List<Reservation>)HttpContext.Current.Session["reservation"]; 
     } 
     else 
     { 
      List<Reservation> objres = new List<Reservation>(); 
      return objres; 
     } 


    } 

,所以我可以消耗下面的代碼在子域名頁面

是Web服務的Web服務寫在ssl啓用頁上

string FullUrl = "http://localhost/goldlinetravel/webservice.asmx/getReservation"; 
      HttpWebRequest request = WebRequest.Create(FullUrl.ToString()) as HttpWebRequest; 
      request.ContentType = "text/xml; charset=UTF-8"; 
      request.Accept = "application/xml"; 
      request.Method = "POST"; 
      request.ContentLength = 0; 
      DataSet dsReservation = new DataSet(); 
      using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) 
      { 
       response.GetResponseStream(); 

       dsReservation.ReadXml(response.GetResponseStream()); 
      } 

其投擲錯誤500服務器錯誤。

存在Web服務的另一種方法

[WebMethod] 
    public string HelloWorld() { 
     return "Hello World"; 
    } 

當我消耗與下面的代碼此Web服務沒有錯誤

string FullUrl = "http://localhost/goldlinetravel/webservice.asmx/HelloWorld"; 
      HttpWebRequest request = WebRequest.Create(FullUrl.ToString()) as HttpWebRequest; 
      request.ContentType = "application/x-www-form-urlencoded"; 
      request.Accept = "application/xml"; 
      request.Method = "POST"; 
      request.ContentLength = 0; 
      DataSet dsReservation = new DataSet(); 
      using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) 
      { 
       response.GetResponseStream(); 

       dsReservation.ReadXml(response.GetResponseStream()); 
      } 

我沒有得到什麼是錯的,我getReservation方法

回答

1

如果您打算使用它,請確保您在Web服務中啓用了會話:

[WebMethod(EnableSession = true)] 
public List<Reservation> getReservation() 
{ 
    ... 
} 

顯然現在您已啓用會話,這並不意味着HttpContext.Current.Session["reservation"]會給你以外的東西null。您必須首先將某些內容存儲到會話中。這應該在同一個Web服務中完成,而不是從外部完成。您不能在ASP.NET應用程序之間共享會話。

+0

你是對的沒有錯誤,但仍然會議空。那麼如何在Web服務中使用酒店頁面預留對象。因此,在另一個域上的預訂頁面可以使用該Web服務並獲取對象 – rahularyansharma 2012-07-14 12:34:20

+0

問題仍未解答,如果我正在使用wromg方法,請給我指示以完成此任務 – rahularyansharma 2012-07-17 18:56:48

+0

ASP.NET會話由cookie進行跟蹤。誰在爲會話寫入價值?它是ASP.NET應用程序還是其他Web方法?您需要將會話cookie與請求一起發送。但我不會詳細討論這個問題,因爲在Web服務中使用會話是錯誤的。您應該傳遞服務所需的信息,或者讓服務從後面的某個後端獲取信息,而不是會話。 – 2012-07-18 05:25:28

相關問題