2010-12-28 33 views
5

できるだけお手伝いをしてください。ASP.NETのREST WCFサービスとセッション

私は、WCF RESTサービス内からasp.netアプリケーションの現在のセッションオブジェクトにアクセスしようとしています。

全く成功していません。サービスからアクセスされるセッションオブジェクトは、aspxページのセッションオブジェクトと同じではありません。

私の質問は次のとおりです。REST WCFサービスで現在のセッションにHttpContext.Current.Session経由でアクセスすることは可能ですか? web.configファイルで

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

コードは、以下の点がある

<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> 

がrehidratedするセッションためには、

+1

WCF ANS ASP.NETには、2つの完全に異なる技術です。あなたの質問を明確にしてください。あなたが達成しようとするものは明確ではありません。 ASP.NETセッションは、(ASP.NET Web?)アプリケーションでホストできるWCFサービスセッションとは独立しています。 – Jan

+0

サンプルアプリケーションをhttp://blogs.msdn.com/b/wenlong/archive/2010/02/21/using-asp-net-sessions-from-wcf.aspxからダウンロードし、紛失しているものを見つけようとしてください。 – decyclone

+0

あなたのアプリケーションまたはブラウザからサービスを呼び出しますか?転送されたCookieをチェックしようとしましたか? ASP.NETのセッションはCookieによって識別されます。クッキーがサービスリクエストで転送されない場合、新しいセッションが作成されます。 Btw。 RESTサービスは、セッションなしでステートレスでなければなりません。 –

答えて

4

ありがとうを、あなたが提供する必要がありますかぎ。通常のasp.netアプリケーションでは、キーはcookieまたはurlのいずれかのパラメータを使用してユーザーから提供されます。

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

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

IMHOセッションは、RESTベースのデザインでは関係ありません。

+0

私はこの投稿の感想に同意します。私は彼の建築に別の要素を加える必要があると思う。 – jcolebrand

+0

@ user6130:この回答ありがとうございます。私の質問と同じように:私はクッキー(私は5分のスライディングの有効期限を設定してログイン時に設定した)にユーザーIDを追加し、そのユーザーIDがデータにアクセスできる場合は、彼は要求しようとする。それは良い練習と見なされますか?ありがとう! :) – Flo

1

私はこの質問は長い時間前に頼まれたが、これは、asp.netアプリケーション内でWCF RESTfulなサービスをホストすることによって実現して、あなたのサービスクラスの最上部に次の属性を追加することができます知っている:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] 

これは、以下を含む多くのことができます:

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

詳細はこちらをご覧ください:What does AspNetCompatibilityRequirements really mean?

関連する問題