ASP.NET中的REST WCF服务和会话

Moh*_*lam 5 .net asp.net wcf sessionid

如果可以的话请帮忙.

我一直在尝试从WCF REST服务中访问asp.net应用程序的当前会话对象.

根本没有成功.从服务访问的会话对象与aspx页面中的对象不同.

所以,这是我的问题:是否可以通过HttpContext.Current.Session 访问REST WCF服务中的当前会话?

代码有以下几点:

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

在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>
Run Code Online (Sandbox Code Playgroud)

谢谢,

cha*_*dmk 4

为了重新恢复会话,您需要提供密钥。在普通的 ASP.NET 应用程序中,该密钥由用户通过 cookie 或 url 参数提供。

您打算如何从 REST 客户端获取该密钥?这些客户端在身份验证后最初如何获取该密钥?他们把钥匙存放在哪里?

这就是为什么大多数基于 REST 的服务都采用 API 访问密钥和另一个密钥来签署每个请求。

恕我直言,会话与基于 REST 的设计无关。