3

1 つのログインを使用すると機能する WCF サービスがありますが、他のログインでログインしようとすると次のエラーがスローされます。奇妙なことに、パスワードを有効なログインに変更すると、新しいパスワードは機能しませんが、古いパスワードは引き続き機能します。何かをキャッシュしているようなものです。

私が得るエラーはこれです:

複数のユーザー名を使用して、同じユーザーがサーバーまたは共有リソースに複数接続することは許可されていません。サーバーまたは共有リソースへの以前の接続をすべて切断し、再試行してください

エラーの原因となるコードは次のとおりです。

public UserModel Login(string username, string password)
{
    if (username == null || password == null)
        return null;

    using (var pContext = new PrincipalContext(ContextType.Machine))
    { 
        if (pContext.ValidateCredentials(username, password))
        {
            using (var context = new MyEntities())
            {
                // I can tell from a SQL trace that this piece never gets hit
                var user = (from u in context.Users
                            where u.LoginName.ToUpper() == username.ToUpper()
                                  && u.IsActive == true
                            select u).FirstOrDefault();

                if (user == null)
                    return null;

                var userModel = Mapper.Map<User, UserModel>(user);
                userModel.Token = Guid.NewGuid();
                userModel.LastActivity = DateTime.Now;

                authenticatedUsers.Add(userModel);
                sessionTimer.Start();

                return userModel;
            }
        }
    }

    return null;
}

ここに関連する質問が表示されます。これは、問題が にあることを示唆していますPrincipalContextが、回答はありません

アップデート

うまくいきました.....次の1時間以内に重要な人のためにこれを機能させる必要があったため、本番サーバーを再起動しました.再起動して、今のところ機能させるために必要なログインでログインします。再起動後、すべてが完全に機能します。私は昨日のほとんどを遅くまで過ごし、今朝はずっとこれを理解しようとしていました。Webサーバーを再起動することは想定されていませんが、これを機能させることが重要だったので、とにかく再起動しました.今ではすべてが正常に機能しています.

それでも、その問題が何であったかを知りたいです。私の最善の推測は、何かが原因で がPrincipalContext正しく破棄されなかったため、他の資格情報セットでログインできなくなったということです。

4

1 に答える 1

2

サーバーを再起動すると問題は解決しましたが、問題の内容を知りたいと思っています。

私の最善の推測は、何かが原因で がPrincipalContext正しく破棄されなかったため、他の資格情報セットでログインできなくなったということです。

于 2011-10-10T18:30:00.420 に答える