RavenDB网络接入

RavenDB网络接入,ravendb,Ravendb,我很难找到关于如何让RavenDB在网络上工作的信息。在同一个网络中,我可以运行我的应用程序的一个实例,它将显示来自我的RavenDB的数据。但是,当我尝试写入数据时,会出现401未经授权的异常 设置要通过网络访问的RavenDB的正确方法是什么 现在,我在Raven.Server.exe.config中有这个,这只是一个短期解决方案: 我不明白的是,RavenDB网站说要使用这样的东西: 好的,这对于正在运行的应用程序来说非常好,但是如何设置RavenDB服务器以允许该用户和密码?这是

我很难找到关于如何让RavenDB在网络上工作的信息。在同一个网络中,我可以运行我的应用程序的一个实例,它将显示来自我的RavenDB的数据。但是,当我尝试写入数据时,会出现401未经授权的异常

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

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


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


好的,这对于正在运行的应用程序来说非常好,但是如何设置RavenDB服务器以允许该用户和密码?这是错误的做法吗(不知何故设置RavenDB配置文件以允许这些凭据)?如果这是错误的,我应该如何在服务器端定义凭据

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

我正在双击Raven.Server.exe运行RavenDB

情景1

客户端app.Config:


DocumentStore设置:

DocumentStore documentStore = new DocumentStore();
documentStore.ConnectionStringName = "RavenDb";
documentStore.Initialize();
string databaseUrl = ConfigurationManager.AppSettings["databaseUrl"];            
DocumentStore documentStore = new DocumentStore();
documentStore.Url = databaseUrl;
documentStore.Initialize();
保存操作:

Session.Store(objectToSave);
Session.Store(objectToSave);
结果: “远程服务器返回错误:(401)未经授权。”

场景2

客户端app.config:


DocumentStore设置:

DocumentStore documentStore = new DocumentStore();
documentStore.ConnectionStringName = "RavenDb";
documentStore.Initialize();
string databaseUrl = ConfigurationManager.AppSettings["databaseUrl"];            
DocumentStore documentStore = new DocumentStore();
documentStore.Url = databaseUrl;
documentStore.Initialize();
保存操作:

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

在RavenDB运行的计算机上创建本地用户,并使用您想要的任何凭据。然后将/Data目录(以及/Tenants目录,如果需要)的读/写权限分配给该用户

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

Bob, 默认情况下,RavenDB使用Windows身份验证。因此,如果您在服务器计算机上创建用户,它将接受它。
另一种方法是定义特定于ravendb的用户,但许多人只使用Windows Auth。

对我来说,我必须在prod机器上的连接字符串中添加域,但在远程访问同一台机器时不能这样做。。。我不知道

注意:我创建了一个名为RAVENDB的windows用户,并为其分配了数据目录的完全权限

所以我的远程连接字符串工作正常

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


ahhhh。。。所以这只是对数据文件夹的授权。我不需要在服务器配置中指定用户。客户端连接可以在配置中指定用户,只要该用户有权访问数据文件夹。。。我试试看。试过两种方法。请参见上面的场景/编辑。我错过了什么?你的第一个方案应该可以。刚刚在我的两台机器上试过。但它不适用于域用户。相反,我需要创建一个本地用户并相应地分配权限。作为客户机上的用户名,我提供了“machineName\username”-不需要另外提供域名。我只是不断尝试不同的东西,一次又一次,最终它成功了。实际上,我必须在连接字符串中将机器名指定为域。这是伪造/临时数据,因此我不介意显示刚刚工作的连接字符串:>根据Ayende,在数据文件夹级别设置权限没有任何作用,因为服务器在访问数据文件时不会模拟经过身份验证的用户。这里是链接:尝试了两种方法。请参见上面的场景/编辑。我错过了什么?