2013-07-11 47 views
2

可能是一個非常愚蠢的問題,你覺得在愚蠢的日子問。asp.net會話狀態從非瀏覽器請求

用戶通過瀏覽器訪問ASP.net應用程序中的網頁。會話狀態(和ID)在服務器上建立(在proc,db whatever中)。很基本。

現在,如果請求源自非瀏覽器應用程序,例如執行帖子並檢索響應的控制檯應用程序,是否會發生這種情況?

可以說我有一個會話變量設置在母版頁中。任何頁面訪問都將導致設置此會話變量。如果以編程方式發佈請求以獲取頁面響應,會發生什麼情況?此會話變量是否設置,或者控制檯應用程序請求是否可以訪問會話?

根據MSDN,我假設它只適用於瀏覽器請求?

ASP.NET會話狀態使您能夠在用戶在Web應用程序中導航ASP.NET頁面時爲用戶存儲和檢索值。 HTTP是一種無狀態協議。這意味着Web服務器將每個HTTP請求作爲獨立請求處理。服務器不知道以前請求期間使用的變量值。 ASP.NET會話狀態在有限的時間窗口內將來自同一瀏覽器的請求標識爲會話,並提供一種在該會話持續時間內保存變量值的方法。默認情況下,爲所有ASP.NET應用程序啓用ASP.NET會話狀態。

回答

2

如果我理解正確,控制檯應用程序將發送HTTP POST到Web服務器。如果是這種情況,那麼您的控制檯應用程序就像一個Web瀏覽器,並且會話被初始化。但ASP.NET通常使用Cookie發送會話ID,因此瀏覽器(或控制檯應用程序)必須存儲該cookie以在將來的HTTP請求中繼續會話到同一HTTP服務器。

+0

我並不是在問未來的要求。假如頁面請求正在做的事情取決於從母版頁設置的會話,頁面是否可以訪問它?或者換言之,就會話而言,編程請求的行爲就像瀏覽器請求一樣。我想你的答案表明它的確如此。 –

+0

@codernet確實如此。 –

+0

如果它是通過應用程序公開的WCF服務(項目的一部分),那該怎麼辦。考慮到它是應用程序域的一部分,它的請求是否可以訪問會話? –