3

カスタム アセンブリを正常に追加し、 を使用してレポートに追加しましたAddTrustedCodeModuleInCurrentAppDomain。現在の appdomain でレポートを実行しています。

SQL にアクセスしようとすると、上記のように信頼されたアセンブリにSystem.Data.SqlClient.SqlClientPermission failed.追加しようとしたレポート サービスSystem.Dataが表示されますが、役に立ちません。

この許可が存在することを確認するにはどうすればよいですか?

4

3 に答える 3

1

エラーから、ログイン資格情報が失われているように聞こえます。どのような認証を使用していますか?

Windows認証を使用している場合は、「あなた」の能力を失っている可能性があります。現在のアプリドメインから電話をかけているため、聞こえない可能性があります。接続文字列を変更して、ユーザー名とパスワードを指定することもできます。他に何もなければ、デバッグに役立つはずです。

幸運を!

于 2008-09-26T17:12:41.107 に答える
1

これで運がいいですか?

オブジェクトをデータ ソースとしてローカル モードで Visual Studio 2008 の ReportViewer コントロールを使用しています。私のクラスは、データベースのデータ テーブルにマップされています。オブジェクトでは、必要に応じて関連オブジェクトをロードします。そのため、プロパティを使用しようとするまで参照を null のままにし、その後、データベースから自動的にロードしようとします。クラスは System.Data.SqlClient 名前空間を使用します。

Windows フォーム アプリケーションでオブジェクトを操作すると、すべてが期待どおりに機能します。しかし、レポート データ ソースとして使用するオブジェクトを渡すと、関連するオブジェクトを自動的に読み込もうとすると失敗します。コードは SqlConnection オブジェクトを作成し、それに対して GetCommand() を呼び出すと、次の例外がスローされます。

[System.Security.SecurityException] {
"Request for the permission of type 'System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed."
} System.Security.SecurityException 

エラーを検索しようとしましたが、表示されるすべての結果は、SQL Server または ASP.Net で実行されている CLR アセンブリに関するものです。SqlConnection オブジェクトを作成する前に、(検索結果で提案されているように) コードに次の呼び出しを追加しようとしましたが、明らかに何もしませんでした:

System.Data.SqlClient.SqlClientPermission(System.Security.Permissions.PermissionState.Unrestricted).Assert();
于 2008-11-04T21:42:48.237 に答える
1

私は解決策を見つけました。実行中に使用する LocalReport に対して、アセンブリを実行している System.Security.Policy.Evidence (または十分な権限を持つもの) を指定します。

reportViewer.LocalReport.ExecuteReportInCurrentAppDomain(System.Reflection.Assembly.GetExecutingAssembly().Evidence);
于 2008-11-26T18:28:38.130 に答える