4

我在AppHarbor上有一個應用程序,我終於得到它的工作。有一件事沒有讓我的會員提供商工作。我爲我的數據庫使用MongoLab,並且與我的應用程序的其餘部分無關。當我我嘗試使用會員,我得到這個錯誤:AppHarbor上的MongoDB成員資格提供程序

Unable to connect to server localhost:27017: No connection could be made because the target machine actively refused it 127.0.0.1:27017. 

而且那一行是在web.config中:

<add name="MongoDBMembershipProvider" type="MongoDB.Web.Providers.MongoDBMembershipProvider".... 

可能有人請闡明我的情況有些輕?

回答

4

隨着friism的提及,您需要一些代碼來從appSetting中讀取connectionString。謝天謝地osuritz已經在github上的MongoDB.Web的分支上完成了這項工作。

您需要下載上面的分支,構建&更改您現有的dll引用以使用新的dll。

則...

改變你的配置:

<appSettings> 
    <add key="MONGOLAB_URL" value="mongodb://localhost/ASPNETDB"/>  
</appSettings> 

...上面的值將appharbor/mongolab被替換(如果你有工作,該應用程序的其他部分,然後這是正確的)

<providers> 
    <clear /> 
    <add name="MongoDBMembershipProvider" type="MongoDB.Web.Providers.MongoDBMembershipProvider" 
    applicationName="/" appSettingsConnectionStringKey="MONGOLAB_URL" collection="Users" 
     enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" 
     maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" /> 
</providers> 

所以在上面的配置中,它有appSettingsConnectionStringKey參數。自定義提供程序中的代碼讀取appSettingsConnectionStringKey值'MONGOLAB_URL',然後使用它讀取ConfigurationManager.AppSettings [「MONGOLAB_URL」],顯然,它必須與上面的應用程序密鑰名稱匹配。

+0

我已經試過了與沒有成功,它沒有效果。我也嘗試手動創建一個connectionString並設置提供者使用它,同樣失敗。 – edobry 2012-03-25 16:00:18

+0

當它失敗時,它是否仍然拋出異常?請包括堆棧跟蹤。你還可以提供你當前的MongoDBMembershipProvider配置嗎?你下載了什麼版本的MongoDb.Web分支? – 2012-03-26 05:47:31

+0

這是一個配置錯誤,所以沒有堆棧跟蹤。我正在使用最新的MongoDb.Web版本。下面是錯誤的截圖:http://i.imgur.com/PQ8zS.png – edobry 2012-03-27 04:22:26

1

<membership defaultProvider="MongoMember"><providers><add connectionStringName="foo">中,您可能需要指定具有MongoLab連接的連接字符串的名稱。不幸的是,這並沒有插入到connectionstrings元素中,而是在appSettings中。您應該想出一些方法讓提供者讀取appSettings中的連接字符串。

相關問題