RavenDB网络访问

Bob*_*orn 14 ravendb

我很难找到有关如何让RavenDB在网络上工作的信息.在同一个网络中,我可以运行我的应用程序实例,它将显示来自我的RavenDB的数据.但是,当我尝试写入数据时,我收到了401 Unauthorized异常.

设置要通过网络访问的RavenDB的正确方法是什么?

现在,我在Raven.Server.exe.config中有这个,这只是一个短期解决方案:

<add key="Raven/AnonymousAccess" value="All" />
Run Code Online (Sandbox Code Playgroud)

我不明白的是,RavenDB网站说使用这样的东西:

<connectionStrings>
  <add name="RavenDb" 
       connectionString="Url=http://serverName:8080;user=user;password=password"/>
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)

好的,这对正在运行的应用程序很有用,但是如何设置RavenDB服务器以允许该用户和密码?这是错误的做法(以某种方式设置RavenDB配置文件以允许这些凭据)?如果这是错的,我应该如何在服务器端定义凭据?

编辑:以下是我的尝试和结果:

我通过双击Raven.Server.exe来运行RavenDB.

场景1

客户端app.Config:

  <connectionStrings>
    <add name="RavenDb" connectionString="Url = http://server:8080;domain=Xx;user=Xx\user;password=pw"/>
  </connectionStrings>
Run Code Online (Sandbox Code Playgroud)

DocumentStore设置:

DocumentStore documentStore = new DocumentStore();
documentStore.ConnectionStringName = "RavenDb";
documentStore.Initialize();
Run Code Online (Sandbox Code Playgroud)

保存操作:

Session.Store(objectToSave);
Run Code Online (Sandbox Code Playgroud)

结果:"远程服务器返回错误:(401)未经授权."

情景2

客户端app.config:

<add key="databaseUrl" value="http://server:8080"/>
Run Code Online (Sandbox Code Playgroud)

DocumentStore设置:

string databaseUrl = ConfigurationManager.AppSettings["databaseUrl"];            
DocumentStore documentStore = new DocumentStore();
documentStore.Url = databaseUrl;
documentStore.Initialize();
Run Code Online (Sandbox Code Playgroud)

保存操作:

Session.Store(objectToSave);
Run Code Online (Sandbox Code Playgroud)

结果:"远程服务器返回错误:(401)未经授权." 内部异常:"目标主体名称不正确"

Dan*_*ang 7

在机器上创建本地用户RavenDB运行并使用您想要的任何凭据.然后为此用户分配/ Data目录(和/ Tenants目录,如果需要)的读/写权限.

如果您将RavenDB作为服务或独立应用程序运行,则远程身份验证应与(Windows)用户凭据一起使用.如果您在IIS上运行,请确保启用了Windows身份验证(默认情况下禁用!).

  • 我只是一遍又一遍地尝试不同的事情,而且*最终*只是起作用了.我实际上必须将机器名称指定为连接字符串中的域.这是虚假/临时数据,所以我不介意显示刚刚起作用的连接字符串:<add name ="RavenDb"connectionString ="Url = http:// server1:8080; domain = server1; user = PrestoDatabaseUser; password = XYZ123" /> (3认同)