Как разрешить исключение System.Security.SecurityException с помощью пользовательского кода в SSRS? - PullRequest
13 голосов
/ 28 августа 2008

Я создал сборку и сослался на нее в своем отчете служб Reporting Services. Я протестировал отчет локально (работает), а затем загрузил отчет на сервер отчетов (не работает).

Вот ошибка, которую выдает пользовательский код, который я написал.

System.Security.SecurityException: Запрос разрешения типа «System.Security.Permissions.SecurityPermission, mscorlib, версия = 2.0.0.0, Culture = нейтрально, PublicKeyToken = b77a5c561934e089' не удалось. в System.Security.CodeAccessSecurityEngine.CheckNReturnSO (PermissionToken permToken, CodeAccessPermission спрос, StackCrawlMark & ​​stackMark, Int32 неограниченное переопределение, Int32 создать) в System.Security.CodeAccessSecurityEngine.Assert (CodeAccessPermission cap, StackCrawlMark и stackMark) в System.Security.CodeAccessPermission.Assert () в [Имя метода Snipped] в ReportExprHostImpl.CustomCodeProxy. [Snipped Method Name] Сбой действия: Спрос Тип первый Неудачное разрешение было: System.Security.Permissions.SecurityPermission Зона сборки, которая не удалась был: MyComputer

Этот проект - то, что я унаследовал, и я не очень хорошо знаком с ним. Хотя у меня есть код (сейчас), поэтому я могу по крайней мере работать с ним:)

Я считаю, что код, который не работает, таков:

    Dim fio As System.Security.Permissions.FileIOPermission = New System.Security.Permissions.FileIOPermission(Security.Permissions.PermissionState.Unrestricted)
    fio.Assert()

Тем не менее, подобные вещи есть везде:

Private Declare Function CryptHashData Lib "advapi32.dll" (ByVal hhash As Integer, ByVal pbData As String, ByVal dwDataLen As Integer, ByVal dwFlags As Integer) As Integer

Я вижу что-то из того, что Reporting Services не может вместить сразу после установки.

Ответы [ 4 ]

18 голосов
/ 01 апреля 2011
<system.web>

<trust level="Full"/>

</system.web>

попробуйте это в web.config

8 голосов
/ 01 сентября 2008

Вот как мне удалось решить проблему:

  • настоятельно подписать заказную сборку в вопросе
  • изменить файл rssrvpolicy.config, чтобы добавить разрешения для сборки

                        <CodeGroup
                            class="UnionCodeGroup"
                            version="1"
                            PermissionSetName="FullTrust"
                            Name="Test"
                            Description="This code group grants the Test code full trust. ">
                            <IMembershipCondition
                                    class="StrongNameMembershipCondition"
                                    version="1"
                                    PublicKeyBlob="0024000004800000940100000602000000240000575341310004000001000100ab4b135615ca6dfd586aa0c5807b3e07fa7a02b3f376c131e0442607de792a346e64710e82c833b42c672680732f16193ba90b2819a77fa22ac6d41559724b9c253358614c270c651fad5afe9a0f8cbd1e5e79f35e0f04cb3e3b020162ac86f633cf0d205263280e3400d1a5b5781bf6bd12f97917dcdde3c8d03ee61ccba2c0"
                                />
                        </CodeGroup>
    

Примечание: вот отличный способ получить блоб открытого ключа вашей сборки VS трюк для получения токена открытого ключа и большого двоичного объекта подписанной сборки .

0 голосов
/ 22 февраля 2019
 <CodeGroup class="FirstMatchCodeGroup" version="1" PermissionSetName="FullTrust">

Для меня решение было изменить вышеупомянутую строку в rssrvpolicy.config с "None" на "FullTrust".

0 голосов
/ 28 апреля 2015

Запустите свой сервис в режиме администратора

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...