【发布时间】:2011-05-31 13:27:01
【问题描述】:
如果可以的话,请帮忙。
我一直在尝试从 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>
谢谢,
【问题讨论】:
-
WCF 和 ASP.NET 是两种完全不同的技术。请澄清你的问题。它不清楚你试图完成什么。 ASP.NET 会话独立于您可能在(ASP.NET Web?)应用程序中托管的任何 WCF 服务会话。
-
尝试从blogs.msdn.com/b/wenlong/archive/2010/02/21/… 下载示例应用程序并尝试找出您缺少什么。
-
您是从应用程序还是从浏览器调用服务?您是否尝试检查传输的 cookie? ASP.NET 中的会话由 cookie 标识。如果 cookie 未随服务请求一起传输,则创建新会话。顺便提一句。 REST 服务应该是无状态的 = 没有任何会话。
-
对于 ashx,您需要“实施”IReadOnlySessionState,也许这也有帮助?
标签: .net asp.net wcf sessionid