我很难找到有关如何让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)未经授权." 内部异常:"目标主体名称不正确"
在机器上创建本地用户RavenDB运行并使用您想要的任何凭据.然后为此用户分配/ Data目录(和/ Tenants目录,如果需要)的读/写权限.
如果您将RavenDB作为服务或独立应用程序运行,则远程身份验证应与(Windows)用户凭据一起使用.如果您在IIS上运行,请确保启用了Windows身份验证(默认情况下禁用!).
| 归档时间: |
|
| 查看次数: |
4659 次 |
| 最近记录: |