2011-11-10 5 views
0

質問:mongodb asp.netセッションプロバイダ:web.configでアプリケーション名を設定する方法

私はカスタムMongoDBセッションプロバイダを持っています。 それは、この

<sessionState cookieless="false" timeout="20" regenerateExpiredSessionId="true" mode="Custom" customProvider="MongoSessionStoreProvider"> 
     <providers> 
     <add name="MongoSessionStoreProvider" type="MongoSessionStore.MongoSessionStoreProvider" writeExceptionsToEventLog="true"/> 
     </providers> 
</sessionState> 

などのweb.configファイルで構成されますが、アプリケーション名が「/」であるため、それが例外をスローしています
私はアプリケーション名を設定するにはどうすればよい ?
メンバーシッププロバイダを定義していないため、すぐに定義するつもりはありません。

答えて

1

source codeを見ると、applicationName属性がどうなることが表示されます:

<add name="MongoSessionStoreProvider" applicationName="myapplicationname" 
    type="MongoSessionStore.MongoSessionStoreProvider" 
    writeExceptionsToEventLog="true"/> 
+0

いいえ、私は前にそれを試しましたが、そうではありません。私はまた、変数applicationNameをプロパティで置き換えました。セットは何もせず、 "myapplication"を返しますが、それはどちらも動作しません。何かがアプリケーション名を上書きし続けます。 –

+0

@Quandary - mongo設定ファイルはありますか? – Oded

+0

これははるかに優れています。密接に見ると、ファイルMongoSessionStoreProvider.csのInitializeで変数configのプロバイダ設定情報が得られることがわかります。しかし、それは決してアプリケーション名を設定しないので、それは "/"で、これは私の設定を上書きする仮想パスです...なぜこれが今まで働いたのだろう... –

0

あなたは、同様のMongoDBするだけでなく、アプリケーション名が、接続文字列を指定するのを忘れていました。

<sessionState cookieless="false" timeout="20" regenerateExpiredSessionId="true" 
       mode="Custom" customProvider="MongoSessionStoreProvider"> 
    <providers> 
     <add name="MongoSessionStoreProvider" 
      connectionString="mongodb://admin(admin):[email protected]:27020/" 
      applicationName="ApplicationName" 
      type="MongoSessionStore.MongoSessionStoreProvider" 
      writeExceptionsToEventLog="false" /> 
     </providers> 
    </sessionState> 

いくつかの注意:

  1. アプリケーション名は、MongoDBの中で、コレクションの名前になります完全な構成は次のようになります必要があります。 (データベース名はAspSessionStage
  2. --authを使用せずにmongodbをインストールした場合は、接続文字列admin(admin):[email protected]から認証情報を取り出すことができます。
  3. このプロバイダは期限切れのセッションをクリアしません(バックグラウンドジョブを実行する必要があります)
  4. 私に直接気づいたバグを報告することができます。
+0

正しく、私はひどくたくさん更新しなければならなかったので、私は接続文字列をハードコードしました。おそらく間違った接続文字列にも対処する必要はありませんでした。 –

+0

@Quandary:何を言っているのか分かりません。何があなたにはうまくいかないのですか? –

+0

アプリケーション名だけです。セッションプロバイダは情報をdb [strApplicationName]に格納します。strApplicationNameが '/'の場合は例外をスローします。実際にapplicationNameプロパティを読み取るには、セッションプロバイダのソースコードを変更する必要がありました。その後、正常に動作しました。 –

関連する問題