自定义交付UI扩展生成“无效类名”;错误
本文关键字:无效类名 错误 无效 UI 交付 扩展 自定义 | 更新日期: 2023-09-27 17:51:06
除了编译样例SSRS交付扩展并按照说明将其部署到服务器之外,我什么也没做。当我调用ReportService2010 ListExtensions
web服务方法时,扩展显示在结果列表中。但是,当我在报表管理器中创建订阅时,只要我从可用的交付扩展名的下拉列表中选择Printer Delivery Sample,我就会得到这个错误:
无效的类名
我在Windows Server 2012 R2上运行SSRS 2012 SP2 (11.0.5569.0)
编辑:我在日志中发现了这个
结果是ReportManager (ASP。. NET UI) 将日志发送到C:'Program Files'Microsoft SQL Server'MSRSxx.MSSQLSERVER'Reporting Services'LogFiles
目录。我最初在这些文件中只看到与订阅(即服务)相关的事件,并假设如果ReportManager确实记录了日志,那么这些文件一定在其他地方。
是的,我觉得有点傻。好了,现在我该怎么处理这些信息呢?是时候再温习一下代码访问安全性了extensionfactory ReportManager_0-3 ! 53 c !06/02/2015: 16:27:40:: e错误:异常捕获实例化打印机交付示例报表服务器扩展:
System.Security.SecurityException: Request for the permission of type 'System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
at System.Reflection.Assembly._GetType(String name, Boolean throwOnError, Boolean ignoreCase) at System.Reflection.Assembly.GetType(String name, Boolean throwOnError) at Microsoft.ReportingServices.Diagnostics.ExtensionClassFactory.<>c__DisplayClass9.<GetExtensionLocalizedName>b__6() at Microsoft.ReportingServices.Diagnostics.RevertImpersonationContext.<>c__DisplayClass1.<Run>b__0(Object state) at System.Security.SecurityContext.runTryCode(Object userData) at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) at System.Security.SecurityContext.Run(SecurityContext securityContext, ContextCallback callback, Object state) at Microsoft.ReportingServices.Diagnostics.RevertImpersonationContext.Run(ContextBody callback) at Microsoft.ReportingServices.Diagnostics.ExtensionClassFactory.GetExtensionLocalizedName(Extension extConfig, Boolean removeFailuresAndContinue)
失败的操作是:
InheritanceDemand
第一个失败的权限类型是:
System.Web.AspNetHostingPermission
第一个失败的权限是:
<IPermission class="System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Level="Minimal"/>
需求是:
<PermissionSet class="System.Security.PermissionSet" version="1"> <IPermission class="System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Level="Minimal"/> </PermissionSet>
失败程序集的授权集为:
<PermissionSet class="System.Security.PermissionSet" version="1"> <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Execution"/> <IPermission class="System.Security.Permissions.StrongNameIdentityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" PublicKeyBlob="00240000048000009400000006020000002400005253413100040000010001009D92F3DD932D20261ADD96F81554DD22E89D6C820CE81177D791891A9415FE8499B0A22270329D737DD29FCF15784BCE44B876E2099FA06B113712581C764E7B033E3F487EA8774CB78CB79FA5951A501F4FA61496F0E07AB2A48020A99435C0F2DE60282540E72CCCB63F05ECEFB90BD542E30EE34AA8005C51F2EC0BF606C0" Name="Microsoft.Samples.ReportingServices.PrinterDeliverySample" AssemblyVersion="1.0.5627.17054"/> <IPermission class="System.Security.Permissions.UrlIdentityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Url="file:///C:/Program Files/Microsoft SQL Server/MSRS11.MSSQLSERVER/Reporting Services/ReportManager/bin/Microsoft.Samples.ReportingServices.PrinterDeliverySample.DLL"/> <IPermission class="System.Security.Permissions.ZoneIdentityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Zone="MyComputer"/> </PermissionSet>
程序集或AppDomain失败是:
Microsoft.Samples.ReportingServices.PrinterDeliverySample, Version=1.0.5627.17054, Culture=neutral, PublicKeyToken=f0209f2bcebc8576
失败的程序集的Zone为:
MyComputer
失败的程序集的Url为:
file:///C:/Program Files/Microsoft SQL Server/MSRS11.MSSQLSERVER/Reporting Services/ReportManager/bin/Microsoft.Samples.ReportingServices.PrinterDeliverySample.DLL
看看这个:
http://blogs.msdn.com/b/friis/archive/2010/06/09/system-security-securityexception-request-for-the-permission-of-type-system-web-aspnethostingpermission-failed.aspx尝试将应用程序池标识切换到网络服务。另外,检查您的DLL,看看是否需要解封,这在那篇文章中也提到了。
请确认您失败的程序集可用/注册在C:'windows'assembly of reportserver machine。如果它没有注册,那么尝试在GAC"将程序集安装到全局程序集缓存"中安装它
全局程序集缓存