2011-01-25 16 views
10

私は、認証にWIFを使用するwcf webserviceを持っています。このWebサービスの責任の一部は、レポートを生成して電子メールで送信することです。レポートでデータをレンダリングすれば、すべてが正常です。Reporting Services LocalReportとWIF

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サービスで同じレポート、そんなにはっきり何かを実行することができます:私は、任意のレポートパラメータ、レポート定数、あるいは単にDateTime.Now私は次の例外を取得が含まれている場合セキュリティ環境が重視されます。

私は実際にこの問題を解決する方法を知りません。誰も助けることができますか? ありがとう!

答えて

16

これは動作します:

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

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

2

Windows認証を使用したMVC 3/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); 

は、あなたがもう少しロックダウンされたアクセス許可セットでより安全に感じるかもしれません。

悲しいことに、私はこれらの特定のアクセス許可がなぜ必要なのか説明しておらず、別の状況下で他のものが必要かどうかわかりませんが、これは役に立ちます。