Поделиться через


Метод Security.DeleteProjectCategories

Удаляет сведения о категории проекта для веб-разрешения безопасности.

Пространство имен:  WebSvcSecurity
Сборка:  ProjectServerServices (в ProjectServerServices.dll)

Синтаксис

'Декларация
<SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/Security/DeleteProjectCategories", RequestNamespace := "https://schemas.microsoft.com/office/project/server/webservices/Security/",  _
    ResponseNamespace := "https://schemas.microsoft.com/office/project/server/webservices/Security/",  _
    Use := SoapBindingUse.Literal, ParameterStyle := SoapParameterStyle.Wrapped)> _
Public Sub DeleteProjectCategories ( _
    projUids As Guid() _
)
'Применение
Dim instance As Security
Dim projUids As Guid()

instance.DeleteProjectCategories(projUids)
[SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/Security/DeleteProjectCategories", RequestNamespace = "https://schemas.microsoft.com/office/project/server/webservices/Security/", 
    ResponseNamespace = "https://schemas.microsoft.com/office/project/server/webservices/Security/", 
    Use = SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Wrapped)]
public void DeleteProjectCategories(
    Guid[] projUids
)

Параметры

  • projUids
    Тип: []

Замечания

Функция разрешения Project позволяет пользователям или группам, которым предоставлено разрешение категории «Управление безопасностью базового проекта» для предоставления доступа пользователей и групп для проектов, которые им принадлежат. Они работают как категории безопасности. Для получения дополнительных сведений см https://blogs.msdn.com/b/project/archive/2010/03/04/project-2010-project-permissions.aspx.

Разрешения Project Server

Разрешение

Описание

Нестандартные

Необходимо иметь глобальное разрешение ManageWorkflow или ChangeWorkflow глобальное разрешение. Если у вас есть разрешения на ChangeWorkflow , необходимо также иметь разрешение категории OpenProject и разрешение категории SaveProject .

Примеры

The example uses the SvcSecurity namespace in the ProjectServerServices.dll proxy assembly. The ConfigureClientEndPoints method uses an app.config file for setting the WCF binding, behavior, and endpoint. For information about creating a PSI proxy assembly and an app.config file, see Необходимые условия для примеров кода на основе WCF в Project 2013.

Примечание

В этом примере предполагается, что проект не имеет какой-либо категории, назначенные ему.

В примере вызывается метод ReadProjectList для получения списка проектов. Затем вызывает CreateProjectCategories для создания ProjectCategoriesDataset и записывает его в файл XML Categories.xml, как показано в следующем коде.

<?xml version="1.0" standalone="yes"?>
<SecurityProjectCategoriesDataSet xmlns="https://schemas.microsoft.com/office/project/server/
webservices/SecurityProjectCategoriesDataSet/">
  <ProjectCategories>
    <WSEC_CAT_UID>
    321f7584-1f8b-4065-a432-a59b9412d8ba</WSEC_CAT_UID>
    <PROJ_UID>ff9c1198-fb7b-4e9d-88a9-1415d46a3443</PROJ_UID>
  </ProjectCategories>
</SecurityProjectCategoriesDataSet>

Метод UpdateProjectCategories вызывается для обновления ProjectCategoriesDataset и обновленного набора данных, записывается в файл UpdatedCategories.xml , как показано в следующем коде.

<?xml version="1.0" standalone="yes"?>
<SecurityProjectCategoriesDataSet xmlns="https://schemas.microsoft.com/office/project/server/
webservices/SecurityProjectCategoriesDataSet/">
  <ProjectCategories>
    <WSEC_CAT_UID>
     8ce0a52b-6218-4670-bf53-8e8df21af590</WSEC_CAT_UID>
    <PROJ_UID>aed0e69b-4470-4ddb-b063-184a9c06c9de</PROJ_UID>
  </ProjectCategories>
</SecurityProjectCategoriesDataSet>

Метод DeleteProjectCategories принимает массив идентификаторов GUID проекта и удаляет записи в ProjectCategoriesDataset. Ниже приведен полный пример кода.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.ServiceModel;

namespace Microsoft.SDK.Project.Samples.Security
{
    class Security
    {
        private const string ENDPOINT_S = "basicHttp_Security";
        private const string ENDPOINT_P = "basicHttp_Project";
        private const string OUTPUT_FILES = @"C:\Projects\Samples\Output\";

        private static string outFilePathCategories;
        private static string outFilePathUpdatedCategories;

        private static SvcSecurity.SecurityClient securityClient;
        private static SvcProject.ProjectClient projectClient;

        static void Main(string[] args)
        {
            // If directory does not exist, create it.
            if (!Directory.Exists(OUTPUT_FILES))
            {
                Directory.CreateDirectory(OUTPUT_FILES);
            }
            // Assign the path where the output XML file will be saved.
            outFilePathCategories = OUTPUT_FILES + "Categories.xml";
            outFilePathUpdatedCategories = OUTPUT_FILES + "UpdatedCategories.xml";

            // Configure the endpoints.
            bool configResult = false;
            configResult = ConfigClientEndpoints(ENDPOINT_P);
            configResult = ConfigClientEndpoints(ENDPOINT_S);

            try
            {
                // Create a project DataSet.
                SvcProject.ProjectDataSet pDS = new SvcProject.ProjectDataSet();
                pDS = projectClient.ReadProjectList();

                // Create a project category.
                SvcSecurity.SecurityProjectCategoriesDataSet projectCategoryDataSet1 = 
                    new SvcSecurity.SecurityProjectCategoriesDataSet();
                SvcSecurity.SecurityProjectCategoriesDataSet.ProjectCategoriesRow row1 = 
                    projectCategoryDataSet1.ProjectCategories.NewProjectCategoriesRow();
                row1.WSEC_CAT_UID = Guid.NewGuid();
                row1.PROJ_UID = pDS.Project[2].PROJ_UID;
                projectCategoryDataSet1.ProjectCategories.AddProjectCategoriesRow(row1);
                securityClient.CreateProjectCategories(projectCategoryDataSet1);

                // Read project category DataSet.
                SvcSecurity.SecurityProjectCategoriesDataSet projectCategoryDataSet = 
                    securityClient.ReadProjectCategory(row1.PROJ_UID);

                // Write the project category DataSet to an XML file.
                Console.WriteLine("\nWriting the ProjectCategoryDataSet to an XML file...");
                projectCategoryDataSet.WriteXml(outFilePathCategories);
                Console.WriteLine("\nSee XML output of ProjectCategoryDataSet at {0}",
                outFilePathCategories);
                Console.Write("\nPress any key to continue: ");
                Console.ReadKey(true);

                // Update project category DataSet.
                SvcSecurity.SecurityProjectCategoriesDataSet projectCategoryDataSet3 = 
                    new SvcSecurity.SecurityProjectCategoriesDataSet();
                SvcSecurity.SecurityProjectCategoriesDataSet.ProjectCategoriesRow row2 = 
                    projectCategoryDataSet3.ProjectCategories.NewProjectCategoriesRow();
                row2.WSEC_CAT_UID = Guid.NewGuid();
                row2.PROJ_UID = pDS.Project[3].PROJ_UID;
                projectCategoryDataSet3.ProjectCategories.AddProjectCategoriesRow(row2);
                securityClient.UpdateProjectCategories(projectCategoryDataSet3);

                // Read project category DataSet.
                SvcSecurity.SecurityProjectCategoriesDataSet updatedPDS = 
                    securityClient.ReadProjectCategory(row2.PROJ_UID);

                // Write the updated project category DataSet to an XML file.
                Console.WriteLine("\nWriting the ProjectCategoryDataSet to an XML file...");
                updatedPDS.WriteXml(outFilePathUpdatedCategories);
                Console.WriteLine("\nSee XML output of ProjectCategoryDataSet at {0}",
                outFilePathUpdatedCategories);
                Console.Write("\nPress any key to continue: ");
                Console.ReadKey(true);

                // Delete project categories.
                Guid[] guidarray = new Guid[2];
                guidarray[0] = row1.PROJ_UID;
                guidarray[1] = row2.PROJ_UID;
                securityClient.DeleteProjectCategories(guidarray);
            }
            catch (CommunicationException e)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine(
                    "\n***System.ServiceModel.CommunicationException:");
                Console.WriteLine(e.ToString());
                Console.ResetColor();
            }
            
        }

        // Configure the PSI client endpoints.
        public static bool ConfigClientEndpoints(string endpt)
        {
            bool result = true;

            switch (endpt)
            {

                case ENDPOINT_P:
                    projectClient = new SvcProject.ProjectClient(endpt);
                    break;
                case ENDPOINT_S:
                    securityClient = new SvcSecurity.SecurityClient(endpt);
                    break;
                default:
                    result = false;
                    Console.WriteLine("Invalid endpoint: {0}", endpt);
                    break;
            }
            return result;
        }
       

    }
}

См. также

Справочные материалы

Security класс

Элементы Security

Пространство имен WebSvcSecurity