我有一个SSRS报告引用一个dll程序集,其中一个类应调用存储过程但返回此错误。.NET Framework 4.5安全性:SSRS调用C#中的程序集生成错误
请求'System.Data.SqlClient.SqlClientPermission,system.Data,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'类型权限失败。
我不知道C#,但在一些朋友和同事的帮助下一直在徘徊。一个让我补充:
using System.Security.Permissions;
SqlClientPermission oPerm = new SqlClientPermission(PermissionState.Unrestricted);
oPerm.Assert();
到类,我得到这个错误: 无法执行CAS的安全透明的方法
领导让我看看.NET 4.0之后发生了什么变化断言。我删除了SQLClientPermissions位并将其添加到AssemblyInfo中:
[assembly: SecurityRules(SecurityRuleSet.Level2)]
[assembly: SecurityCritical()]
其中返回了原始错误。这是类:
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;
using System.Security;
using System.Security.Permissions;
namespace ClassLibrary1
{
public class Class1
{
public static string logReportAttributes(string ReportName, int GlobalsTotalPages)
{
string retValue = String.Empty;
try
{
long TOCExecutionID = long.Parse(DateTime.Now.ToString("yyyyMMddHHmmss"));
SqlConnection connection = new SqlConnection("Persist Security Info=True;Trusted_Connection=True;initial catalog=InternalApps;data source=DEVSQL1;User ID=xxxxx;password=xxxxx;MultipleActiveResultSets=true;");
using (SqlCommand cmd = new SqlCommand("usp_LogReportAttributes", connection))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@ReportName", ReportName);
cmd.Parameters.AddWithValue("@GlobalsTotalPages", GlobalsTotalPages);
connection.Open();
cmd.ExecuteNonQuery();
}
if (connection.State == ConnectionState.Open || connection.State == ConnectionState.Broken)
{
connection.Close();
}
retValue = "Sent Successfully";
}
catch (Exception ex)
{
retValue = string.Format ("{0} \n\r {1}" , ex.Message != null ? ex.Message : "" , ex.InnerException != null ? ex.InnerException.Message : "");
}
return retValue;
}
}
}
有没有人有任何想法我做错了什么,以及如何获得正确的安全设置呢?谢谢!