7

シナリオ: Sql Server 2012 データベース サーバーでの認証に SqlRoleProvider を使用する WCF サービス。WCF は IIS7 Web サーバーでホストされています。

このエラーを参照してください:

System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。
System.Web.Security.Roles.GetRolesForUser (文字列のユーザー名) で

RoleManagement が有効になっています。

私のローカル開発マシン (サーバー 2012、iis7) では、これは正常に動作します。ログインしてメソッドを呼び出すと、ロールが取得されます。

他のサーバー(テスト環境)では機能していません。ログインできます (ユーザーはユーザーで認証され、SQL サーバー データベースに対して渡されます) が、そのユーザーのロールを取得しようとすると、nullreferenceexception が発生します。

これはどのように可能ですか?この問題が発生する可能性がある場所につながる人はいますか?

よろしくお願いします。

4

2 に答える 2

14

ぶれ

Stack Overflow で提供されたタグでグーグル検索すると、次のサイトに出会いました

要するに、.net 3.5 と .net 4 の間で何かが壊れたようです。

この問題を解決するには、次のように呼び出します。

string[] roles = Roles.Provider.GetRolesForUser(ServiceSecurityContext.Current.PrimaryIdentity.Name);

それ以外の

string[] roles = Roles.GetRolesForUser(ServiceSecurityContext.Current.PrimaryIdentity.Name);

違いは.Provider、途中で追加された にあります。これを追加した後、うまくいきました。

于 2014-02-07T15:15:29.283 に答える