0

次のようなリポジトリ クラスを作成します。

public class ProfileRepository : IProfileRepository
    {

        private Guid _userIdentifier = (Guid)Membership.GetUser().ProviderUserKey;
        ....
    }

サイトにログインせずに[Authorize]フィルタリングされたページに移動しようとすると、次Object reference not set to an instance of an object.のリポジトリ クラスでエラー ( )がスローされます。private Guid _userIdentifier = (Guid)Membership.GetUser().ProviderUserKey;

filter 属性は、ユーザーが認証されていないという事実をキャッチしません。ProviderUserKeyリポジトリクラス全体で使用できるように、リポジトリクラス内で現在ログインしているユーザーを取得できる最善の方法は何でしょうか?

4

1 に答える 1

-1

コントロールの反転をお願いします。

ユーザー識別子を探すのはリポジトリの責任ではありません。とにかく、実際には宣言スペースのプライベートメンバーに値を割り当てています。C# でこれができることは知っていますが、このコードが隠れてコンパイルされる方法を確認し、そのようにコーディングする習慣を身につけてください。結局、宣言は宣言であるべきです。

さらに支援するには、呼び出しコードを確認する必要があります。また、メンバーシップ プロバイダーの種類についても言及していません。

于 2013-01-15T03:20:34.697 に答える