5

できれば助けてください。

WCFRESTサービス内から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>

ありがとうございました、

4

2 に答える 2

4

セッションを再隠蔽するには、キーを提供する必要があります。通常のasp.netアプリケーションでは、そのキーはcookieまたはurlパラメーターのいずれかを介してユーザーによって提供されます。

そのキーをRESTクライアントからどのように取得する予定ですか?それらのクライアントは、認証後に最初にそのキーをどのように取得しますか?彼らはどこに鍵を保管しますか?

これが、ほとんどのRESTベースのサービスがすべてのリクエストに署名するためにAPIアクセスキーと別のキーを使用する理由です。

IMHOセッションは、RESTベースの設計には関係ありません。

于 2010-12-28T13:54:40.590 に答える
1

この質問はずっと前に行われたことは知っていますが、これはasp.netアプリケーション内でwcf restfulサービスをホストし、サービスクラスの先頭に次の属性を追加することで実現できます。

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]

これにより、次のような多くのことが可能になります。

HttpContext:ASP.NET互換モードで実行されているWCFサービスは、現在およびそれに関連付けられた状態にアクセスできます。

詳細については、こちらを参照してください:AspNetCompatibilityRequirementsは実際にはどういう意味ですか?

于 2016-08-03T11:13:01.950 に答える