ストアドプロシージャを呼び出す必要があるが、このエラーを返すクラスが1つのdllアセンブリを参照するSSRSレポートがあります。.NET Framework 4.5セキュリティ:C#でエラーが発生するとSSRSが呼び出される
'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;
}
}
}
私が間違っていることを知っている人はいますか、これに対して正しいセキュリティを設定する方法はありますか?ありがとうございました!