Session RavenDB服务会话。查询未返回结果

Session RavenDB服务会话。查询未返回结果,session,oauth,ravendb,Session,Oauth,Ravendb,我在localhost:8080上设置了一个RavenDB服务实例,并使用OAuth插件存储一个简单的用户文档以进行身份验证。我使用guid作为id,用户电子邮件作为名称。以下代码正常运行以存储用户 public AccountUserDocument CreateUser(RegisterModel模型) { 使用(IDocumentSession session=DataDocumentStore.Instance.OpenSession()) { Guid userId=Guid.NewG

我在localhost:8080上设置了一个RavenDB服务实例,并使用OAuth插件存储一个简单的用户文档以进行身份验证。我使用guid作为id,用户电子邮件作为名称。以下代码正常运行以存储用户

public AccountUserDocument CreateUser(RegisterModel模型)
{
使用(IDocumentSession session=DataDocumentStore.Instance.OpenSession())
{
Guid userId=Guid.NewGuid();
session.Store(新AccountUserDocument)
{
Name=model.Email,
Id=String.Format(“Raven/Users/{0}”,userId),
AllowedDatabases=new[]{“*”},
Email=model.Email,
FirstName=model.FirstName,
LastName=model.LastName,
FacebookId=0,
Expires=DateTime.Now.AddMonths(1),
AccessToken=string.Empty
}.SetPassword(model.Password));
session.SaveChanges();
返回会话。加载

如果有人想下载的话


提前感谢。

好吧,我发现您提供的代码示例有很多错误,例如客户端和服务器的版本不匹配。此外,身份验证捆绑包是1.0版的功能,在2.0版中已被弃用,这几乎是最终版本,因此您编写的代码最终将不得不替换

但是为了回答您的问题,您无法从查询中获得结果的具体原因是您选择使用以“Raven/”开头的文档键,这是RavenDB系统文档的惯例,它不会被索引

如果您从id中删除“Raven/”,它将起作用


另外,您不应该使用
.WaitForNonStaleResults()
-这只适用于单元测试,在生产环境中是危险的。如果您确实觉得需要等待,请使用
.waitfornonstaleresultsafow()
-哪个更安全,因为它提供了一个中断。

在您提供的链接中找不到任何相关的代码。链接错误?或者您的repo没有更新?我没有发现任何立即错误的地方,只是小心不要在生产环境中调用
WaitForNonSaleResults()
。另外,通过调用
.Load()
在同一个会话中,您并没有真正从服务器获取它。它被缓存在会话中。因此,经过仔细研究后,我发现我可以将一个简单的文档保存到服务中并进行查询。但是,当我使用身份验证包时,当我按名称查询时,它似乎返回null。我为demons创建了一个简单的项目纠正这种行为。我正在使用992版本的服务器和1.0.960版本的客户端以及身份验证捆绑包,通过nugetThank安装。感谢您的快速回复!我正在学习一个身份验证捆绑包教程,该教程似乎对我有用,我尝试对其进行一些调整。waitForNonSaleResults()作为一个测试,确保我在查询时使用了最新的文档集。但是,我想知道,您是否可以为我提供一个关于不推荐身份验证捆绑包的链接,因为我似乎找不到任何说明此类内容的文章。再次感谢。还没有太多文档记录。我已经添加了更好的文档关于身份验证选项的补充。它在上被删除,并在同一时间发布。您可能想从中查看Asp.Net身份验证提供程序,但它是最近添加的,并且没有很好的文档记录。再次感谢,我非常感谢您的跟进。