У меня есть отчет 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 Утверждает в безопасности прозрачных методов
Leading меня посмотреть, что изменилось после того, как .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;
}
}
}
Кто-нибудь есть идея, что я делаю неправильно и как получить правильную безопасность настроить для этого? Спасибо!