10

認証にWIFを使用するwcfWebサービスがあります。このWebサービスの責任の一部は、レポートを生成して電子メールで送信することです。データを使用してレポートをレンダリングすると、すべてが正常になります。レポートパラメータ、レポート定数、またはDateTimeだけを含めると、次の例外が発生します。

An error occurred during local report processing.Failed to load expression host assembly. Details: Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed

WIFを使用しないWCFサービスで同じレポートを実行できるため、セキュリティ環境に関する何かが明らかに妨げられています。

私は本当にこの問題を解決する方法を知りません。誰か助けてもらえますか?ありがとう!

4

2 に答える 2

16

これは機能します:

var reportInstance = new LocalReport();
reportInstance.SetBasePermissionsForSandboxAppDomain(new PermissionSet(PermissionState.Unrestricted));

理由がよくわかりません。レポートにWIFから取得できないアクセス許可が付与されていることは理解していますが、それらがどのアクセス許可であるか、またはなぜそれらが必要なのかはわかりません。それで、私の答えは「人に魚を与える」ですが、他の誰かがより深い問題を説明することによって「人に魚を教える」ことができますか?

于 2011-01-25T17:59:19.860 に答える
2

Windows認証を使用するMVC3/WinFormsハイブリッドアプリでも同じ問題に直面していました。レポートを実行するために必要な最小のアクセス許可を決定するために、しばらく時間を費やしました。私にとって、これも機能します:

var permissionSet = new PermissionSet(PermissionState.None);
var flags = SecurityPermissionFlag.Execution | 
            SecurityPermissionFlag.ControlPrincipal;
var permission = new SecurityPermission(flags);
permissionSet.AddPermission(permission);

ReportViewer.LocalReport.SetBasePermissionsForSandboxAppDomain(permissionSet);

あなたがどれほど妄想的であるかに応じて、もう少しロックダウンされた許可セットを使用すると、より安全に感じるかもしれません。

残念ながら、これらの特定の権限が必要な理由については説明がなく、さまざまな状況で他の権限が必要かどうかもわかりませんが、これがお役に立てば幸いです。

于 2012-03-20T08:40:07.640 に答える