Asp.net AppHarbor上的MongoDB成员资格提供程序

Asp.net AppHarbor上的MongoDB成员资格提供程序,asp.net,mongodb,asp.net-membership,mongodb-.net-driver,appharbor,Asp.net,Mongodb,Asp.net Membership,Mongodb .net Driver,Appharbor,我在AppHarbor上有一个应用程序,我终于让它运行起来了。不过,有一件事让我难以理解,那就是让我的会员提供商开始工作。我正在使用MongoLab作为我的数据库,它与我的应用程序的其余部分配合得很好。当我尝试使用成员资格时,会出现以下错误: Unable to connect to server localhost:27017: No connection could be made because the target machine actively refused it 127.0.0.

我在AppHarbor上有一个应用程序,我终于让它运行起来了。不过,有一件事让我难以理解,那就是让我的会员提供商开始工作。我正在使用MongoLab作为我的数据库,它与我的应用程序的其余部分配合得很好。当我尝试使用成员资格时,会出现以下错误:

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

中,您可能需要指定连接到的connectionstring的名称。不幸的是,这并没有插入到ConnectionString元素中,而是在appSettings中。您可能应该想办法让提供者从appSettings中读取connectionstring。

正如Frism提到的,您需要一些代码从appSettings中读取connectionstring。谢天谢地,他已经在github上的一个分支中完成了这项工作

您需要下载上面的fork,构建并更改现有的dll引用以使用新的dll

然后

更改您的配置:

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

。。。上面的值将被appharbor/mongolab替换(如果应用程序的其他部分正常工作,那么这是正确的)



因此,在上面的配置中,它具有appSettingsConnectionStringKey参数。自定义提供程序中的代码,读取AppSettingsConnectionsStringKey值“MONGOLAB_URL”,然后使用该值读取ConfigurationManager。AppSettings[“MONGOLAB_URL”]和它显然必须与上面的appsetting密钥名称匹配。

建议将此项目用于您的目的。它支持使用现成的AppHarbor

只需将useAppHarbor=“true”添加到此处编写的提供程序设置中


注意:这是ASP.NET MVC4中提供的新成员资格提供程序的端口,我尝试过,但没有成功,它没有效果。我还尝试手动创建一个connectionString并将提供程序设置为使用它,但同样没有成功。当它失败时,它是否仍会引发异常?请包括stacktrace。您还可以提供当前的MongoDBMembershipProvider配置吗?您下载了哪个版本的MongoDb.Web fork?这是一个配置错误,所以并没有堆栈跟踪。我使用的是最新的MongoDb.Web版本。下面是一个错误的屏幕截图:当你说你正在使用最新的MongoDb.Web版本时,它是不是来自?一定是这把叉子,不是努吉的那把。您的图像告诉我,您的配置设置错误。正如上面的例子和fork详细信息的链接一样,删除connectionStringName=“MONGOHQ_URL”并如上所述添加appSettingsConnectionStringKey=“MONGOHQ_URL”。好的,对不起,我指的是freshlogic的版本。为了便于测试,我将连接字符串复制到web.config中的connectionString中,因此技术上应该是相同的,但我将尝试您的建议。
<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>