Безопасность доступа к коду / Проблема с выполнением пользовательской сборки из отчета SSRS 2008 - PullRequest
2 голосов
/ 05 января 2010

Я создал dll, состоящий из класса и статической функции для извлечения вложений из базы данных TFS.Ниже приведена статическая функция

 public static List<string> GetAttachments(int workItemId)
        {
            string tfsReportServerUrl = "http://<<ServerName>>:8080/";

            List<String> files = new List<string>();

            // THE BELOW IS WHAT I THINK SHOULD BE ASSERTED. I HAVE VERY LIMITED KNOWLEDGE IN CODE ACCESS SECURITY.

            //PermissionSet ps = new PermissionSet(PermissionState.None);
            //ps.AddPermission(new WebPermission(PermissionState.Unrestricted));
            //ps.AddPermission(new WebPermission(NetworkAccess.Accept, tfsReportServerUrl));
            //ps.AddPermission(new WebPermission(NetworkAccess.Connect, tfsReportServerUrl));
            //ps.AddPermission(new SecurityPermission(SecurityPermissionFlag.UnmanagedCode | SecurityPermissionFlag.Execution));
            //ps.Assert();

            TeamFoundationServer tfsServer = new TeamFoundationServer(tfsReportServerUrl);
            tfsServer.Authenticate();

            WorkItemStore workItemStore = new WorkItemStore(tfsServer);
            WorkItem workItem = workItemStore.GetWorkItem(workItemId);

            if (workItem != null)
            {
                WebClient request = new WebClient();
                request.Credentials = CredentialCache.DefaultCredentials;

                foreach (Attachment attachment in workItem.Attachments)
                {
                    files.Add(attachment.Name);
                    //Save the attachment to a local file
                    //request.DownloadFile(attachment.Uri, Path.Combine(@"C:\Attachments", attachment.Name));
                }
            }

            return files;
        }

Когда я пытаюсь запустить отчет, я получаю «#Error» в отчете.После прочтения нескольких статей я узнал, что эта ошибка вызвана недостаточными разрешениями, и при просмотре отчета в режиме «предварительного просмотра» SSRS отображает «Эта сборка не допускает частично доверенных вызывающих программ».сообщение.

На основе приведенных ниже статей

http://www.devx.com/codemag/Article/33656/1954
http://bryantlikes.com/articles/824.aspx

Я скопировал пользовательскую сборку в расположенные ниже места
C: \ Program Files \ MicrosoftVisual Studio 9.0 \ Common7 \ IDE \ PrivateAssemblies
C: \ Program Files \ Microsoft SQL Server \ MSRS10.MSSQLSERVER \ Службы отчетов \ ReportServer \ местоположения bin.

Также добавлена ​​следующая группа кода в файл rssvrpolicy.config

<CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="FullTrust">
     <IMembershipCondition class="UrlMembershipCondition" version="1" Url="C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\ReportServer\bin\AdvancedTFS.dll" />
</CodeGroup>

Но я не уверен, какие разрешения мне нужно указать в моей пользовательской функции (показанной выше) или как заставить это работать?

Pls.предложить.

Спасибо

...