我有一个在localhost:8080上设置的RavenDB服务实例,并且使用OAuth插件来存储简单的用户文档进行身份验证。我使用的是id和用户电子邮件的名称。以下代码正常运行以存储用户RavenDB服务Session.Query不返回结果
public AccountUserDocument CreateUser(RegisterModel model)
{
using (IDocumentSession session = DataDocumentStore.Instance.OpenSession())
{
Guid userId = Guid.NewGuid();
session.Store(new 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();
return session.Load<AccountUserDocument>
(String.Format("Raven/Users/{0}", userId));
}
}
并返回一个有效的用户对象。然而,当我打电话
return session.Query<AccountUserDocument>()
.Customize(x => x.WaitForNonStaleResults())
.Where(x => x.Name == email)
.SingleOrDefault();
我什么也没得到。它一周前一直在工作,但现在它没有。如果我打开RavenDB工作室,我可以看到用户和名称正是我如何进入它(我甚至复制并粘贴到文本字段)。
我曾尝试停止和重新启动服务希望能解决这个问题,但事实并非如此。
我想知道如果有人能指出我如何调试这里发生的事情。完整的代码库可以在这里
https://github.com/jamesamuir/MVC_Facebook_Auth
发现,如果有人倾向于下载。
在此先感谢。
在您提供的链接中找不到任何相关的代码。错误的链接?或者你的回购没有更新?我没有看到任何错误,除非要小心,不要在生产中调用'WaitForNonStaleResults()'。另外,通过在同一个会话中调用'.Load()',你并不真正从服务器获取它。它会缓存在会话中。 –
因此,在挖掘了一下后,我发现我可以将一个简单的文档保存到服务中并查询它。但是,当我使用Authentication Bundle时,它似乎在我按名称查询时返回null。我创建了一个简单的项目来演示这种行为。它可以在https://github.com/jamesamuir/RavenConnTest.git 找到我使用的服务器的992构建 和1.0.960的客户端和身份验证包,通过nuget安装 – jamesamuir