【发布时间】:2020-02-27 14:24:10
【问题描述】:
我正在尝试创建一个自定义 SSRS 程序集,该程序集根据 SQL 表的值格式化报告的样式。
我需要能够在本地预览并部署到报告服务器。
这将允许我从一个中心位置对一系列分页报告进行样式更改。
示例表达式:=ProjectName.ClassName.getItemStyle("Header", "Font-Family")
该表达式解析我要查找的值,然后从 SQL 表中返回一个值,在本例中为“Verdana”。
据我所知,我已经通过各种步骤来使其正常工作,现在遇到了权限问题。只要我不尝试连接到 SQL 服务器,程序集就可以正常工作。
在这种情况下,我会收到此错误:
textrun 的值表达式 “Textbox1.Paragraphs[0].TextRuns[0]”包含错误:请求 'System.Data.SqlClient.SqlClientPermission 类型的权限, System.Data,版本=4.0.0.0,文化=中性, PublicKeyToken=b77a5c561934e089' 失败。
我尝试添加程序集权限并编辑 rssrvpolicy 配置文件,但无济于事,但我觉得我遗漏了一些东西,我不太确定我是否了解 Microsoft 文档。
我还签署了程序集并安装了证书。
我用过的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.IO;
using System.Xml;
using System.Security;
[assembly: AllowPartiallyTrustedCallers]
namespace CC_rpt
{
public class lib
{
public static string getItemStyle(string parse)
{
string val;
val = "1";
try
{
using (SqlConnection oConn = new SqlConnection("Data Source=DBServer;Initial Catalog=DBName;Integrated Security=SSPI"))
{
var oCmd = new System.Data.SqlClient.SqlCommand();
oCmd.Connection = oConn;
oCmd.CommandText = "select singleValue FROM Table WHERE Column = @Param";
oCmd.Parameters.AddWithValue("@Param", parse);
val = oCmd.ExecuteScalar().ToString();
}
}
catch (System.Data.SqlClient.SqlException e)
{
val = e.ToString();
}
return val;
}
}
}
操作系统: Windows 7 企业版 6.1(内部版本 7601:Service Pack 1)
Visual Studio: Microsoft Visual Studio Professional 2017 版本 15.9.13
服务器 SSRS 报告服务 2016
已安装的产品:
SQL Server 报告服务 15.0.1528.0 SQL Server 集成服务 15.0.1300.371
我主要尝试使用的.Net 库:System.Data.SqlClient 目标是 .Net Framework:4.6.1
我将 DLL 复制到的路径(通过构建后事件)*:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\MSBuild C:\Program 文件 (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\PrivateAssemblies C:\Program 文件 (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE C:\Program 文件 (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Reporting Services C:\Program Files (x86)\微软视觉 Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\SSRS C:\Program Files\Microsoft SQL Server\MSRS11.MSSQLSERVER\Reporting 服务\ReportServer\bin
程序集安全设置:我已经对程序集进行了签名,创建了字符串密钥文件 (pfx) 并安装了它。
【问题讨论】:
-
我应该补充一点,权限问题不是连接到实际服务器的问题,因为我有权访问 CRUD 并且之前已经对此进行了测试。
-
我不敢相信以前没有人遇到过这种情况?
标签: .net visual-studio reporting-services