Поставщик членства MongoDB в AppHarbor - PullRequest
4 голосов
/ 24 марта 2012

У меня есть приложение на 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"....

Может кто-нибудь пролить свет на мою ситуацию?

Ответы [ 3 ]

4 голосов
/ 25 марта 2012

Как упоминает friism, вам нужен код для чтения строки соединения из набора приложений.К счастью, osuritz уже выполнил работу на развилке MongoDB.Web на github.

Вам нужно будет скачать вышеуказанный разветвитель, собрать и изменить существующую 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"], и он, очевидно, ДОЛЖЕН совпадать с именем ключа appsetting, приведенным выше.

1 голос
/ 24 марта 2012

В <membership defaultProvider="MongoMember"><providers><add connectionStringName="foo"> вам, вероятно, нужно указать имя строки подключения, к которой у вас есть подключение MongoLab. К сожалению, это не вставлено в элемент connectionstrings, это в appSettings. Вы, вероятно, должны найти какой-нибудь способ заставить провайдера читать строку соединения из appSettings.

0 голосов
/ 26 июля 2013

Предложил бы использовать этот проект для ваших целей http://extmongomembership.codeplex.com/. Он поддерживает использование AppHarbor "из коробки".

Просто нужно добавить useAppHarbor = "true" в настройки провайдера, как написано здесь https://extmongomembership.codeplex.com/wikipage?title=AppHarbor%20Integration&referringTitle=Documentation

Примечание. Это порт нового провайдера членства, который был представлен в ASP.NET MVC4

...