Лучшая практика для генерации WSP с политикой доступа кода

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/81379

  •  10-12-2019
  •  | 
  •  

Вопрос

Я использую SharePoint 2007 и Visual Studio 2008. Я изменил какой-то пользовательский код в существующем решении.Теперь я закончил разработку и попытаюсь генерировать файл WSP.Есть только 1 проблема.Мне нужно создать файл WSP с помощью политики CAS, а не в GAC.Человек, который создал это решение, делал это с этим сценарием:

1) изменил путь вывода сборки на «80 \ bin».

2) Выполнить сбор выпуска

3) Создайте WSP с помощью WSP Builder

4) Измените расширение сгенерированного файла WSP в .cab

5) Извлеките файл CAB

6) Найти и отредактируйте манифест .xml

7) Измените элемент:

<CodeAccessSecurity>
    <PolicyItem>
      <PermissionSet class="NamedPermissionSet" version="1" Description="WSPBuilder generated permissionSet" Name="MyCompany.MyCustomer.SharePoint.MySolutionNamed20708d8-8d7f-448d-ae19-52e93e729cc5">
    <IPermission class="AspNetHostingPermission" version="1" Level="Minimal" />
    <IPermission class="SecurityPermission" version="1" Flags="Assertion, Execution, ControlThread, ControlPrincipal" />
    <IPermission class="Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security,  version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" version="1" ObjectModel="True"  UnsafeSaveOnGet="True" Unrestricted="True"/>
</PermissionSet>
      <Assemblies>
        <Assembly Name="MyCompany.MyCustomer.SharePoint.MySolutionName" Version="1.0.0.0" PublicKeyBlob="002400000480000094000000060200000024000052534131000400000100010061501CE5D2B707D9EE7AFE461FC262A07CD83D417AE9AC31B142586832A038C385DF5A19C4974B39E0EE5F166B4F9C1707987030522B7B5808D910E6C749BAC97EE79976273BA06516AD5D7DB9DD7C53D8A47B038479E627BB0B2AAE299D6F0C392AF7C00CE42D6A3FB25F391AAC36C5217AE98FBBD18AFE3736905FFF0058A4" />
      </Assemblies>
    </PolicyItem>
  </CodeAccessSecurity>
.

8) Сохранить файл

9) Создать файл CAB

10) Создать файл wsp

Кто-то сказал мне, что это неприятный раствор для этого.Это должно быть возможно с WSPBuilder в командной строке.Может кто-нибудь сказать мне, как это сделать?

Это было полезно?

Решение

Добавьте это чуть выше файла публичного класса!

[SharePointPermissionAttribute(System.Security.Permissions.SecurityAction.Demand, Impersonate = true)] 

[SharePointPermissionAttribute(System.Security.Permissions.SecurityAction.Demand, ObjectModel = true)]
.

Тогда позволяйте WSPBuilder сделать остальное для вас, так как он построит файл XML для вас в файле манифеста!

Редактировать

Код, который следует за вызовом метода спроса, будет выполнен Только если все абоненты в стеке вызовов предоставляются разрешение Для доступа к модели объекта SharePoint. Обратите внимание, что это требование безопасности не влияет на код, который приходит до вызова спроса метод. Ситуация будет отличаться, если бы вы использовали декларативный синтаксис безопасности, чтобы аннотировать MyMethod с Атрибут метаданных Metadata SharePointerPermissionattribute:

   [SharePointPermission(SecurityAction.Demand, ObjectModel=true, Unrestricted=true)]
public void MyMethod()
{
   ...
   SPWeb site = SPContext.Current.Web;
   ...
}
.

В вашем случае его основной класс, который содержит метод Create Create Create Controls, в качестве примера:

using System;
using System.ComponentModel;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;

namespace test    {

    [SharePointPermissionAttribute(System.Security.Permissions.SecurityAction.Demand, Impersonate = true)] 
    [SharePointPermissionAttribute(System.Security.Permissions.SecurityAction.Demand, ObjectModel = true)]
    [ToolboxItemAttribute(false)]
    public class VisualWebPart1 : WebPart
    {
        // Visual Studio might automatically update this path when you change the Visual Web Part project item.
        private const string _ascxPath = @"~/_CONTROLTEMPLATES/test/VisualWebPart1UserControl.ascx";

        protected override void CreateChildControls()
        {
            Control control = Page.LoadControl(_ascxPath);
            Controls.Add(control);
        }
    }
}
.

Также это зависит от того, что вы хотите видно для политики? Как отмечается внутри блока комментариев. Для моего понимания это просто главный класс, который нуждается в политике, а не каждый класс в рамках проекта!

http://msdn.microsoft.com /en-us/library/gg427711(v=office.12).aspx

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top