[英]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.