簡體   English   中英

REST WCF服務和ASP.NET中的Session

[英]REST WCF service and Session‏ in ASP.NET

如果可以的話請幫忙。

我一直試圖從WCF REST服務中訪問asp.net應用程序的當前會話對象。

根本沒有成功。 從服務訪問的會話對象與aspx頁面中的對象不同。

所以,這是我的問題:是否可以通過HttpContext.Current.Session在REST WCF服務中訪問當前會話?

該代碼具有以下幾點:

 [AspNetCompatibilityRequirements
(RequirementsMode = 
AspNetCompatibilityRequirementsMode.Allowed)] // I have also tried Required
public class DataService : IDataService

在web.config中:

<system.serviceModel>
  <behaviors>
   <endpointBehaviors>
    <behavior name="ClosedRoom.DataServiceBehavior">
     <enableWebScript />
    </behavior>
   </endpointBehaviors>
  </behaviors>
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true" >
  <baseAddressPrefixFilters>
        <add prefix="http://localhost:63399"/>
      </baseAddressPrefixFilters>
    </serviceHostingEnvironment>

  <services>
    <service name="ClosedRoom.DataService">
      <endpoint address="" behaviorConfiguration="ClosedRoom.DataServiceBehavior"
        binding="webHttpBinding" contract="ClosedRoom.IDataService" />
    </service>
  </services>
</system.serviceModel>

謝謝,

為了重新隱藏會話,您需要提供一個密鑰。 在普通的asp.net應用程序中,密鑰是由用戶通過Cookie或url參數提供的。

您打算如何從REST客戶端獲取該密鑰? 身份驗證后,這些客戶端最初如何獲得該密鑰? 他們在哪里存儲密鑰?

這就是為什么大多數基於REST的服務都使用api訪問密鑰以及另一個對每個請求進行簽名的密鑰的原因。

IMHO會話與基於REST的設計無關。

我知道這個問題是很久以前問過的,但是可以通過將wcf restful服務托管在asp.net應用程序中,然后在服務類的頂部添加以下屬性來實現:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]

這使許多事情包括:

HttpContext:以ASP.NET兼容模式運行的WCF服務可以訪問Current及其關聯狀態。

有關更多信息,請參見此處: AspNetCompatibilityRequirements的真正含義是什么?

暫無
暫無

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

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