RavenDB网络访问

时间:2011-12-29 19:06:12

标签: ravendb

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

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

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

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

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

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

好的,这对正在运行的应用程序很有用,但是如何设置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>

DocumentStore设置:

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

保存操作:

Session.Store(objectToSave);

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

场景2

客户端app.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)未经授权。” 内部异常:“目标主体名称不正确”

3 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:4)

对我来说,我必须将域添加到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" />

答案 2 :(得分:3)

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