0

UserNameまたは(できれば)ユーザーIDのいずれかを使用して、アプリケーションにログインしている特定のユーザーを判別しようとしています。私の意図は、ユーザーに基づいて自分のサイトにアップロードできるコンテンツの量を制限することです。ユーザーがドキュメントをアップロードしようとするたびに、現在アップロードしているすべてのドキュメントの数を取得したいと思います。テスト実行として、クエリを作成する前にユーザーを識別できるように、フォームにラベルを追加しました。

// validate user. If they are not authenticated, do not let them upload files
if (!HttpContext.Current.User.Identity.IsAuthenticated || !HttpContext.Current.User.IsInRole("Administrator"))
{
    uploadLabel.Visible = false;
    user.Text = Membership.GetUser().UserName; // this line should output the username
    mapUpload.Visible = false;
    uploadButton.Visible = false;
}

ログイン時に他のすべてのフィールドが表示されないため、認証ロジックが機能することはわかっています。さらに、Membership.GetUser()。UserNameには、ユーザーがIsAuthenticatedの場合にのみ値があります。そうしないと、nullポインタ例外が発生します。コードが呼び出されると、Membership.GetUser()。UserNameがラベルを空のテキスト文字列に設定しているように見えます。

現在ログインしているユーザーの情報を取得する別の方法はありますか?前述のように、私の最終的な目標は、次の情報を使用してクエリを記述できるようにすることです。

SELECT COUNT(DocumentID) FROM Documents WHERE UserID=@UserID

よろしくお願いします。

ビック

4

2 に答える 2

1

現在ログインしているユーザーを取得するためにイベントを使用する必要はありません。ページでこのように定義するだけMembershipUserで、現在ログインしているユーザーを取得する別の簡単な方法があります。username

string userName = Page.User.Identity.Name;
于 2013-02-19T04:08:07.450 に答える
0

交換できません

user.Text = Membership.GetUser().UserName;

user.Text= User.Identity.Name

于 2013-02-19T04:07:29.957 に答える