Я взял образец отчета SSRS из http://gotreportviewer.com/. В отчете отображаются некоторые данные о клиентах и параметр "Город". В отчете также используется параметр «Город» для фильтрации данных. Этот отчет работает нормально, если я не включил пользовательский RoleProvider через web.config. Я установил точки останова во всех методах моего пользовательского подкласса RoleProvider, и я создал UserDecorator, чтобы обернуть пользовательский контекст по умолчанию, чтобы я мог также установить точку останова там.
Когда пользовательский RoleProvider включен, отчет не может правильно отображаться, но событие ReportError не вызывается. Кроме того, ни один из методов в RoleProvider или пользовательском IPrincipal не вызывается. Ниже приведен отладочный вывод из окна вывода:
Первое случайное исключение типа «System.Security.SecurityException» произошло в mscorlib.dll
Первое случайное исключение типа «System.Security.SecurityException» произошло в Microsoft.ReportViewer.ProcessingObjectModel.dll
Первое случайное исключение типа «System.Security.SecurityException» произошло в Microsoft.ReportViewer.Common.dll
Первое случайное исключение типа «Microsoft.ReportingServices.ReportProcessing.ReportProcessingException» произошло в Microsoft.ReportViewer.Common.dll
Первое случайное исключение типа «Microsoft.ReportingServices.ReportProcessing.ReportProcessingException» произошло в Microsoft.ReportViewer.Common.dll
Первое случайное исключение типа «Microsoft.ReportingServices.ReportProcessing.ProcessingAbortedException» произошло в Microsoft.ReportViewer.Common.dll
Насколько я понимаю, Code Access Security в .NET 4.0 устарела, поэтому я немного озадачен тем, каким может быть исключение ReportProcessingException. Я не думаю, что это проблема доверия, потому что отчет выполняется очень хорошо, когда не используется пользовательский RoleProvider. Я не понимаю, почему RoleProvider влияет на что-либо, поскольку ни один из его методов никогда не вызывается.
Требуется, чтобы проект использовал собственный RoleProvider.
Вот ссылка на демонстрационный проект: http://cid -7c1d9f1e46206d43.office.live.com / self.aspx / Public / Blog% 20Solutions / ReportViewerDemo.zip
Включить или отключить RoleProvider через web.config
Может кто-нибудь объяснить, почему это происходит? И что такое обходной путь?
Спасибо!