Visual Studio 2008中的权限报告

3

我已成功添加了一个自定义程序集,并使用AddTrustedCodeModuleInCurrentAppDomain将其添加到报表中。我正在当前应用程序域中执行该报表。

当我尝试访问 SQL 时,我会遇到报告服务System.Data.SqlClient.SqlClientPermission failed.的问题。我尝试像上面那样将System.Data添加到可信程序集中,但没有帮助。

我如何确保拥有这个权限?

3个回答

1

从错误信息来看,您的登录凭据似乎丢失了。您使用的是什么类型的授权方式?

如果您使用的是 Windows 授权,可能会丢失您的 "you"ness。由于您正在从当前应用程序域中调用,这听起来不太可能。您可以尝试更改连接字符串以指定用户名和密码。无论如何,这都应该有助于调试。

祝您好运!


1

这个有办法了吗?

我正在使用Visual Studio 2008中的ReportViewer控件,在本地模式下使用对象作为数据源。我的类映射到数据库中的数据表中。在对象中,它会根据需要加载相关的对象。所以它将引用保留为空,直到您尝试使用该属性,然后它会自动从数据库中加载它。这些类使用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();

1
我已经找到了解决方案。您需要指定执行程序集(或具有足够权限的程序集)的 System.Security.Policy.Evidence,以便在执行期间将其用于 LocalReport。
reportViewer.LocalReport.ExecuteReportInCurrentAppDomain(System.Reflection.Assembly.GetExecutingAssembly().Evidence);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接