Security.CreateProjectCategories 方法
创建 Project web 安全类别。
命名空间: WebSvcSecurity
程序集: ProjectServerServices(位于 ProjectServerServices.dll 中)
语法
声明
<SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/Security/CreateProjectCategories", 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 CreateProjectCategories ( _
categories As SecurityProjectCategoriesDataSet _
)
用法
Dim instance As Security
Dim categories As SecurityProjectCategoriesDataSet
instance.CreateProjectCategories(categories)
[SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/Security/CreateProjectCategories", 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 CreateProjectCategories(
SecurityProjectCategoriesDataSet categories
)
参数
- categories
类型:WebSvcSecurity.SecurityProjectCategoriesDataSet
备注
项目权限功能允许用户或组已授予"管理基本项目安全性"类别权限授予用户和组访问他们所拥有的项目。它们的功能类似安全类别。有关详细信息,请参阅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 Project 2013 中基于 WCF 的代码示例的先决条件.
备注
此示例假定项目没有为其分配任何类别。
该示例调用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;
}
}
}