Доступ К Сети RavenDB

мне трудно найти информацию о том, как заставить RavenDB работать в сети. В той же сети у меня может быть экземпляр моего приложения, и он будет показывать данные из моего RavenDB. Однако, когда я пытаюсь записать данные, я получаю 401 несанкционированное исключение.

Как правильно настроить RavenDB для доступа по сети?

сейчас, у меня есть это Рейвен.Сервер.исполняемый.config, что является лишь краткосрочным решение:

<add key="Raven/AnonymousAccess" value="All" />

чего я не понимаю, так это то, что веб-сайт RavenDB говорит использовать что-то вроде этого:

<connectionStrings>
  <add name="RavenDb" 
       connectionString="Url=http://serverName:8080;user=user;password=password"/>
</connectionStrings>

хорошо, это отлично подходит для запущенного приложения, но как установить сервер RavenDB, чтобы разрешить этому пользователю и паролю? Это просто неправильный способ сделать это (каким-то образом установив файл конфигурации RavenDB, чтобы разрешить эти учетные данные)? Если это неправильно, как я должен определить учетные данные на стороне сервера?

Edit: вот мои попытки и результаты:

я запускаю RavenDB, дважды щелкнув Raven.Сервер.исполняемый.

Сценарий 1

приложение клиента.Config:

  <connectionStrings>
    <add name="RavenDb" connectionString="Url = http://server:8080;domain=Xx;user=Xxuser;password=pw"/>
  </connectionStrings>

Настройка DocumentStore:

DocumentStore documentStore = new DocumentStore();
documentStore.ConnectionStringName = "RavenDb";
documentStore.Initialize();

Сохранить Операции:

Session.Store(objectToSave);

результат: "Удаленный сервер вернул ошибку: (401) Unauthorized."

Сценарий 2

приложение клиента.config:

<add key="databaseUrl" value="http://server:8080"/>

DocumentStore Настройка:

string databaseUrl = ConfigurationManager.AppSettings["databaseUrl"];            
DocumentStore documentStore = new DocumentStore();
documentStore.Url = databaseUrl;
documentStore.Initialize();

Сохранить Операции:

Session.Store(objectToSave);

результат: "Удаленный сервер вернул ошибку: (401) Unauthorized." Внутреннее исключение:"неверное имя целевого участника"

3 ответов


создайте локального пользователя на машине, на которой работает RavenDB, и используйте любые учетные данные. Затем назначьте этому пользователю разрешения на чтение/запись для каталога /Data (и каталога /Tenants, если необходимо).

Если вы используете RavenDB как службу или автономное приложение, удаленная аутентификация должна работать с учетными данными пользователей (windows). Если вы работаете в IIS, убедитесь, что включена проверка подлинности Windows (по умолчанию отключена!).


для меня мне пришлось добавить домен в строку подключения на машине prod,но не при удаленном доступе к той же машине... Не знаю.

примечание: Я создал пользователя windows с именем RAVENDB и назначил ему полные разрешения для каталога данных.

поэтому моя строка подключения, которая работала нормально удаленно, была

<add name="raven" connectionString="Url=http://myserver.com:8080;user=RAVENDB;password=PASS" />

тогда как на самом сервере мне пришлось использовать

<add name="raven" connectionString="Url=http://myserver:8080;DOMAIN=MYSERVERNAME;user=RAVENDB;password=PASS" />

Боб, По умолчанию, RavenDB использует проверку подлинности Windows. Поэтому, если вы создадите пользователя на серверной машине, он примет его. Альтернативой является определение конкретных пользователей ravendb, но многие люди просто используют Windows Auth.