2011-11-10 25 views
0

問題設置應用程序的名稱。 它在這樣MongoDB的asp.net會話提供:</p> <p>我有一個自定義的MongoDB會議提供商:如何在web.config中

<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,其中set什麼也不做,並且返回「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. 如果您的mongodb安裝沒有--auth,您可以從連接字符串admin(admin):[email protected]中取出auth信息。
  3. 此提供程序沒有清除過期的會話(需要運行一些後臺任務來完成)
  4. 您可以向我直接報告任何可能發現的錯誤。
+0

正確,我對連接字符串進行了硬編碼,因爲我必須更新很多,並且不想處理可能錯誤的連接字符串。 –

+0

@Quandary:我不確定你想說什麼。什麼不適合你? –

+0

只是應用程序的名稱。會話提供程序將信息存儲在db [strApplicationName]中,如果strApplicationName爲='/',則會引發異常。我不得不改變會話提供者源代碼來實際讀取applicationName屬性。之後,它運行良好。 –

相關問題