我正在Microsoft SQL Server报表服务版本11.0.2100.60上运行的Microsoft SQL Server Report Builder 3.0中创建报表。
我想从我的DataSet中解析存储在某些字段中的JSON值。下面是我的报告预览,显示原始JSON值。
我期望的表达式(虽然没有添加)将如下所示
=Newtonsoft.Json.Linq.JArray.Parse(Fields!MyFieldName.Value).ToString()
由于我需要从任何表达式调用add custom or embedded code to my report,所以我必须add an Assembly Reference to a Report。参考:Using Custom Assemblies with Reports
因此,在我的报告属性中,添加了对Json.net(Newtonsoft.Json.4.5.6)程序集的引用,如下所述。
程序集的路径为C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Packages\Newtonsoft.Json.4.5.6\lib\net40\Newtonsoft.Json.dll
。
我还尝试将程序集添加到C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies\
以及C:\Program Files\Microsoft SQL Server\MSRS10_50.SQL2008\Reporting Services\ReportServer\bin\
并更改对路径的引用但无效。
还提到了the assembly has no dependency。
到目前为止,我刚刚添加了程序集引用,并且没有任何更改。但是,一旦我切换到预览我的报告,错误就会显示如下:
System.Web.Services.Protocols.SoapException: Error while loading code module: ‘Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed’. Details: Could not load file or assembly 'Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The system cannot find the file specified.
at Microsoft.ReportingServices.Library.ReportingService2010Impl.CreateReportEditSession(String Report, String Parent, Byte[] Definition, String& EditSessionID, Warning[]& Warnings)
at Microsoft.ReportingServices.WebServer.ReportingService2010.CreateReportEditSession(String Report, String Parent, Byte[] Definition, String& EditSessionID, Warning[]& Warnings)
是否因为程序集中缺少权限属性AllowPartiallyTrustedCallers()
?根据引用here并不能解决我的问题,因为我的案例中的汇编不是自定义构建的,也没有其他问题找到here和教程here。
我做错了什么?或者是否有任何解析SSRS报告中的JSON的工作示例?
任何帮助都会有很大的帮助。
答案 0 :(得分:0)
我可能在这里简化了,但是程序集ddl位于客户端上的报表服务器或两者,正如我在过去发现的那样,除非我在客户端和服务器上都有程序集我得到奇怪的错误消息。在将ddl添加到bin目录之后,我的如下(C:\ Program Files \ Microsoft SQL Server \ MSRS12.MSSQLSERVER \ Reporting Services \ ReportServer \ bin)需要重新报告服务器服务以获取程序集
答案 1 :(得分:0)
错误说明它可以找到Version 4.5.0.0
;您显示的图像是Version 4.5.6
这些图像不可互换,除非明确指定。
所以你有两个选择:
删除当前对NewtonSoft.Json.dll的引用;从该DLL的所有版本中清除您的文件夹并重新开始。
在机器级别指定assemblyBinding
- machine.config
。这是你如何做到的< assemblyBinding > Element for < runtime >。专注于第一个例子。 bindingRedirect
就是你要找的。 p>