2008-09-26 80 views
10

我剛剛寫了我的第一個Web服務,因此我們假設我的Web服務知識不存在。我想嘗試從Web服務調用dbClass函數。不過,我需要一些參與會議的參數。有什麼辦法可以讓這些從webservice調用這些會話變量?會話變量和Web服務

回答

20

如果您正在使用ASP.NET Web服務,你想有保持你的會話環境,需要用它說明你需要一個會話屬性,美化您的Web服務方法。

[WebMethod(EnableSession = true)] 
public void MyWebService() 
{ 
    Foo foo; 
    Session["MyObjectName"] = new Foo(); 
    foo = Session["MyObjectName"] as Foo; 
} 

一旦你做到了這一點,你可以訪問會話對象相似的aspx。

地鐵。

+0

這看起來太棒了。然而,我的理解是,Web服務客戶端需要傳遞一個cookie或者能夠通過重定向來響應302 Found的消息。 – froggythefrog 2013-02-17 05:03:13

+0

您可以創建一個cookie容器並將其連接到您的Web服務代理。然後它將保存返回的所有cookie,包括ASP.net會話cookie。如果您有其他代理將在同一個會話中運行,您也可以與他們共享cookie容器。 – Metro 2013-03-24 17:02:56

0

也許這將工作HttpContext.Current.Session [「名稱] 否則你可能不得不採取一些參數或將其存儲在數據庫

3

通常,Web服務不應該依賴會話數據。把它們想象成普通的方法:參數進入並且答案出來。

0

你的問題有點含糊,但我會盡我所能來回答。

我假設你的會話變量存在於進行web服務調用的服務器上,而不是在承載web服務的服務器上。在這種情況下,您需要傳遞必要的值作爲Web服務方法的參數。

5

您應該避免增加添加會話變量的服務層的複雜性。正如有人以前指出的那樣,將Web服務視爲一種孤立的方法,可以從參數列表中完成所需的所有任務。

1

如果你不得不想要Session [「username」]。ToString();在後面的aspx其他C#的頁面,那麼你應該只需更換[的WebMethod]以上的WebService法[的WebMethod(EnableSession =真)]

感謝:)地鐵

0

要在Web服務使用會話,我們必須遵循2個步驟 -

  1. 在該方法上使用[WebMethod(EnableSession = true)]屬性。
  2. Session [「Name」] = 50(你想要保存什麼) 請檢查以下示例。
 
[WebMethod(EnableSession = true)] 
public void saveName(string pname) 
{ 
    Session["Name"] = pname; 

}