del método Security.CreateProjectCategories
Crea categorías de proyectos para la seguridad web.
Espacio de nombres: WebSvcSecurity
Ensamblado: ProjectServerServices (en ProjectServerServices.dll)
Sintaxis
'Declaración
<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 _
)
'Uso
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
)
Parámetros
- categories
Tipo: WebSvcSecurity.SecurityProjectCategoriesDataSet
Comentarios
La característica de permisos del proyecto permite a los usuarios o grupos que se han concedido el permiso de categoría "Administrar la seguridad de proyecto básico" para conceder acceso de usuarios y grupos a los proyectos que son propietarios. Funcionan como las categorías de seguridad. Para obtener más información, vea https://blogs.msdn.com/b/project/archive/2010/03/04/project-2010-project-permissions.aspx
Permisos de Project Server
Permiso |
Descripción |
---|---|
No estándar |
Debe tener el permiso global ManageWorkflow o el permiso global ChangeWorkflow . Si tiene el permiso ChangeWorkflow , también debe tener el permiso de categoría de OpenProject y el permiso de categoría de SaveProject . |
Ejemplos
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 Prerequisites for WCF-Based Code Samples.
Nota
En este ejemplo se supone que el proyecto no tiene ninguna categoría asignada a ella.
En el ejemplo se llama al método de ReadProjectList para obtener la lista de proyectos. A continuación, llama CreateProjectCategories para crear la ProjectCategoriesDataset y, a continuación, escribe en el Categories.xmldel archivo XML, como se muestra en el siguiente código.
<?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>
Se llama al método UpdateProjectCategories para actualizar la ProjectCategoriesDataset. El conjunto de datos actualizado se escribe en el archivo UpdatedCategories.xml , como se muestra en el siguiente fragmento de código.
<?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>
El método DeleteProjectCategories toma una matriz de GUID de proyecto y elimina las entradas de la ProjectCategoriesDataset. A continuación se muestra el código de ejemplo completo.
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;
}
}
}