2

RavenDB Service インスタンスを localhost:8080 にセットアップし、OAuth プラグインを使用して認証用の単純なユーザー ドキュメントを保存しています。ID に GUID を使用し、ユーザーの電子メールを名前として使用しています。次のコードは、ユーザーを保存するために適切に機能しています

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();

私は何も得ません。1 週間前までは機能していましたが、現在は機能していません。RavenDB スタジオを開くと、ユーザーが表示され、入力した名前とまったく同じ名前が表示されます (コピーしてテキスト フィールドに貼り付けることもできます)。

ここに画像の説明を入力

問題が解決することを期待して、サービスを停止して再起動しようとしましたが、解決しませんでした。

ここで何が起こっているのかをデバッグする方法について、誰かが私を指摘できるかどうか疑問に思っていました。完全なコード リポジトリはここにあります。

https://github.com/jamesamuir/MVC_Facebook_Auth

誰かがそれをダウンロードする傾向がある場合。

前もって感謝します。

4

1 に答える 1

1

クライアントとサーバーのバージョンの不一致など、提供されたコード サンプルには多くの問題があります。また、Authentication Bundle は 1.0 の機能であり、2.0 で廃止されました。これはほぼ最終的なものです。そのため、最終的には置き換えが必要になるコードを記述しています。

しかし、あなたの質問に答えるために、クエリから結果を取得できない具体的な理由は、"Raven/" で始まるドキュメント キーを使用することを選択したことです。これは、インデックスが作成されない RavenDB システム ドキュメントの規則です。 .

ID から「Raven/」を削除すると機能します。

また、使用しないでください。これ.WaitForNonStaleResults()は単体テスト専用であり、本番環境では危険です。本当に待つ必要があると感じ.WaitForNonStaleResultsAsOfNow()た場合は、カットオフが提供されるため、より安全な - を使用してください。

于 2012-12-31T00:39:24.470 に答える