Resource.SetResourceAuthorization-Methode
Autorisierungswerte für eine oder mehrere Ressourcen festgelegt.
Namespace: WebSvcResource
Assembly: ProjectServerServices (in ProjectServerServices.dll)
Syntax
'Declaration
<SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/Resource/SetResourceAuthorization", RequestNamespace := "https://schemas.microsoft.com/office/project/server/webservices/Resource/", _
ResponseNamespace := "https://schemas.microsoft.com/office/project/server/webservices/Resource/", _
Use := SoapBindingUse.Literal, ParameterStyle := SoapParameterStyle.Wrapped)> _
Public Sub SetResourceAuthorization ( _
users As ResourceAuthorizationDataSet _
)
'Usage
Dim instance As Resource
Dim users As ResourceAuthorizationDataSet
instance.SetResourceAuthorization(users)
[SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/Resource/SetResourceAuthorization", RequestNamespace = "https://schemas.microsoft.com/office/project/server/webservices/Resource/",
ResponseNamespace = "https://schemas.microsoft.com/office/project/server/webservices/Resource/",
Use = SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Wrapped)]
public void SetResourceAuthorization(
ResourceAuthorizationDataSet users
)
Parameter
users
Typ: WebSvcResource.ResourceAuthorizationDataSetEine ResourceDataSet , die die Autorisierungsdaten enthält.
Hinweise
SetResourceAuthorization legt Informationen zu einer Ressource wie das Benutzeranmeldekonto mit der e-Mail-Adresse.
Project Server-Berechtigungen
Berechtigung |
Beschreibung |
---|---|
Ermöglicht einem Benutzer das Verwalten von Ressourcen, Benutzern und Gruppen. Kategorieberechtigung. |
Beispiele
Dieses Beispiel aktualisiert die Berechtigungen des aktuellen Benutzers und liest die Berechtigungen für den aktuellen Benutzer.
In diesem Beispiel wird eine benutzerdefinierte Berechtigung erstellt. Bevor Sie dieses Beispiel zweimal ausführen können, müssen Sie die Berechtigung zu entfernen, die sie erstellt. Um Ressourcen zu löschen, wechseln Sie zu der Website Project Web AppResource Center, wählen Sie Ihr Konto auswählen und wählen Sie im Menü Aktionen auf Details bearbeiten. Gehen Sie zum Abschnitt Globale Berechtigungen und deaktivieren Sie das Kontrollkästchen neben der Berechtigung Neues Projekt, und klicken Sie auf Speichern.
Please see Prerequisites for Reference Code Samples for critical information on running this code sample.
using System;
using System.Collections.Generic;
using System.Text;
using PSLibrary=Microsoft.Office.Project.Server.Library;
using System.Net;
using System.Data;
using System.Web.Services.Protocols;
using System.Windows.Forms;
namespace Microsoft.SDK.Project.Samples.SetResourceAuthorization
{
class Program
{
[STAThread]
static void Main()
{
try
{
const string PROJECT_SERVER_URI = "https://ServerName/ProjectServerName/";
const string RESOURCE_SERVICE_PATH = "_vti_bin/psi/resource.asmx";
// Set up the Web service objects
SvcResource.Resource resourceSvc = new SvcResource.Resource();
resourceSvc.Url = PROJECT_SERVER_URI + RESOURCE_SERVICE_PATH;
resourceSvc.Credentials = CredentialCache.DefaultCredentials;
// Update your own permissions
Guid resourceUid = resourceSvc.GetCurrentUserUid();
// Read the current permissions
SvcResource.ResourceAuthorizationDataSet authDS = resourceSvc.ReadResourceAuthorization(resourceUid);
Console.WriteLine("Before: ");
WriteTablesToConsole(authDS.Tables);
// add the custom permission
SvcResource.ResourceAuthorizationDataSet.GlobalPermissionsRow globalPermissionsRow = authDS.GlobalPermissions.NewGlobalPermissionsRow();
globalPermissionsRow.RES_UID = resourceUid;
globalPermissionsRow.WSEC_ALLOW = true;
globalPermissionsRow.WSEC_DENY = false;
globalPermissionsRow.WSEC_FEA_ACT_UID = PSLibrary.PSSecurityGlobalPermission.NewProject;
authDS.GlobalPermissions.AddGlobalPermissionsRow(globalPermissionsRow);
resourceSvc.SetResourceAuthorization(authDS);
// Read the permissions again to see the results
authDS = resourceSvc.ReadResourceAuthorization(resourceUid);
Console.WriteLine("After: ");
WriteTablesToConsole(authDS.Tables);
}
catch (SoapException ex)
{
PSLibrary.PSClientError error = new PSLibrary.PSClientError(ex);
PSLibrary.PSErrorInfo[] errors = error.GetAllErrors();
string errMess = "==============================\r\nError: \r\n";
for (int i = 0; i < errors.Length; i++)
{
errMess += "\n" + ex.Message.ToString() + "\r\n";
errMess += "".PadRight(30, '=') + "\r\nPSCLientError Output:\r\n \r\n";
errMess += errors[i].ErrId.ToString() + "\n";
for (int j = 0; j < errors[i].ErrorAttributes.Length; j++)
{
errMess += "\r\n\t" + errors[i].ErrorAttributeNames()[j] + ": " + errors[i].ErrorAttributes[j];
}
errMess += "\r\n".PadRight(30, '=');
}
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(errMess);
}
catch (WebException ex)
{
string errMess = ex.Message.ToString() +
"\n\nLog on, or check the Project Server Queuing Service";
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Error: " + errMess);
}
catch (Exception ex)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Error: " + ex.Message);
}
finally
{
Console.ResetColor();
Console.WriteLine("\r\n\r\nPress any key...");
Console.ReadKey();
}
}
// Writes all table contents to the console in a
// relatively readable way
private static void WriteTablesToConsole(System.Data.DataTableCollection theTables)
{
Console.ForegroundColor = ConsoleColor.DarkGreen;
foreach (System.Data.DataTable table in theTables)
{
int[] columnWidths = new int[table.Columns.Count];
int tableWidth = 0;
string dataString;
Console.WriteLine("Table: " + table.TableName);
// Write out the column names and get their spacing
StringBuilder tableRow = new StringBuilder();
for (int i = 0; i < table.Columns.Count; i++)
{
columnWidths[i] = GetColumnWidth(table.Columns[i]);
tableRow.Append(table.Columns[i].ColumnName.PadRight(columnWidths[i]));
tableWidth += columnWidths[i];
}
// add a space so it won't wrap
tableWidth += 1;
// make the console as wide as the widest table
Console.BufferWidth = (Console.BufferWidth > tableWidth ? Console.BufferWidth : tableWidth);
tableRow.Append("\r\n");
Console.Write(tableRow.ToString());
// Write out the data
foreach (DataRow row in table.Rows)
{
tableRow = new StringBuilder();
for (int i = 0; i < table.Columns.Count; i++)
{
dataString = row[i].ToString();
// truncate output if it is wider than
// the desired column width
if (dataString.Length >= columnWidths[i])
{
dataString = dataString.Substring(0, columnWidths[i] - 1);
}
// add the output to the stringbuilder and pad right to fill
// up to the column width.
tableRow.Append(dataString.PadRight(columnWidths[i]));
}
tableRow.Append("\r\n");
Console.Write(tableRow.ToString());
}
Console.Write("\r\n".PadLeft(tableWidth, '-'));
}
Console.ResetColor();
}
// Helper function for WriteTablesToConsole
private static int GetColumnWidth(DataColumn column)
{
// Note: may not handle byte[]data types well
const int MAX_COL_WIDTH = 40;
int dataWidth = 0;
//return 12 for numbers, 30 for dates, and string width for strings.
switch (column.DataType.UnderlyingSystemType.ToString())
{
case "System.Boolean":
case "System.Byte":
case "System.Byte[]":
case "System.Char":
case "System.Decimal":
case "System.Double":
case "System.Int16":
case "System.Int32":
case "System.Int64":
case "System.SByte":
case "System.Single":
case "System.UInt16":
case "System.UInt32":
case "System.UInt64":
dataWidth = 12;
break;
case "System.DateTime":
case "System.TimeSpan":
dataWidth = 30;
break;
case "System.Guid":
dataWidth = 37;
break;
case "System.String":
// If it has a maxlength, use it
if (column.MaxLength > 0)
{
dataWidth = column.MaxLength;
}
else
{
// Otherwise use the max col width
dataWidth = MAX_COL_WIDTH;
}
break;
default:
dataWidth = column.ColumnName.Length;
break;
}
// truncate if over the max length
if (dataWidth > MAX_COL_WIDTH)
{
dataWidth = MAX_COL_WIDTH;
}
// always be at least as wide as the colum name
return (column.ColumnName.Length > (dataWidth) ? column.ColumnName.Length + 1 : dataWidth);
}
}
}