4

У меня есть приложение на AppHarbor, и я, наконец, получил его на работу. Одна вещь, которая ускользала от меня, хотя и заставила моего провайдера членства работать. Я использую MongoLab для своей базы данных, и он отлично работает с остальной частью моего приложения. Когда я пытаюсь использовать членство, я получаю эту ошибку:Поставщик членства MongoDB на AppHarbor

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, вам нужен код для чтения connectionString из приложения appSetting. К счастью 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.

+0

Я попробовал, что с нет успеха, он не имеет никакого эффекта. Я также попытался создать connectionString вручную и установить, чтобы провайдер использовал это, равно как и безуспешно. – edobry

+0

, когда он терпит неудачу, делает ли он все же исключение? PLS включают stacktrace. можете ли вы также предоставить текущую конфигурацию MongoDBMembershipProvider? Какую версию загружала версия MongoDb.Web? –

+0

Это ошибка конфигурации, поэтому нет трассировки стека. Я использую самую последнюю версию MongoDb.Web. Вот скриншот об ошибке: http://i.imgur.com/PQ8zS.png – edobry

1

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

0

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

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

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

Смежные вопросы