Admin.ReadDepartments - Méthode
Lit la liste des services qui sont définis dans une instance de Project Web App.
Espace de noms : WebSvcAdmin
Assembly : ProjectServerServices (dans ProjectServerServices.dll)
Syntaxe
'Déclaration
<SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/Admin/ReadDepartments", RequestNamespace := "https://schemas.microsoft.com/office/project/server/webservices/Admin/", _
ResponseNamespace := "https://schemas.microsoft.com/office/project/server/webservices/Admin/", _
Use := SoapBindingUse.Literal, ParameterStyle := SoapParameterStyle.Wrapped)> _
Public Function ReadDepartments ( _
language As Integer _
) As DepartmentsDataSet
'Utilisation
Dim instance As Admin
Dim language As Integer
Dim returnValue As DepartmentsDataSet
returnValue = instance.ReadDepartments(language)
[SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/Admin/ReadDepartments", RequestNamespace = "https://schemas.microsoft.com/office/project/server/webservices/Admin/",
ResponseNamespace = "https://schemas.microsoft.com/office/project/server/webservices/Admin/",
Use = SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Wrapped)]
public DepartmentsDataSet ReadDepartments(
int language
)
Paramètres
language
Type : System.Int32Spécifie l'identificateur de langue principale (LCID) qui indique la langue de votre pays ou région.
Valeur renvoyée
Type : WebSvcAdmin.DepartmentsDataSet
Remarques
Vous pouvez définir des départements dans la table de choix département, dans la page d'entreprise au Tables de choix et champs des personnalisé dans Project Web App (https://ServerName/ProjectServerName/_layouts/pwa/Admin/CustomizeFields.aspx).
Autorisations Project Server
Autorisation |
Description |
---|---|
Permet à un utilisateur de charger le modèle global d'entreprise. Autorisation globale. |
|
Autorise un utilisateur à ajouter, modifier ou supprimer des utilisateurs et gérer les groupes de sécurité Project Server. Autorisation globale. |
|
Permet à un utilisateur d'accéder au centre de projets. Autorisation globale. |
|
Permet à un utilisateur d'accéder au centre de ressources. Autorisation globale. |
|
Permet à un utilisateur de modifier les définitions des champs personnalisés d'entreprise et les valeurs de table de choix. Autorisation globale. |
|
Permet à un utilisateur Ajouter un nouveau projet à la base de données Project Server. Autorisation globale. |
Exemples
L'exemple suivant illustre l'utilisation de la méthode ReadDepartments . L'exemple utilise l'espace de noms SvcAdmin dans l'assembly de proxy ProjectServerServices.dll. Le code qui utilise ReadDepartments renvoie une DepartmentsDataSet; l'application écrit les résultats dans un fichier XML.
Notes
The ConfigClientEndpoints 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.
using System;
using System.Text;
using System.ServiceModel;
using System.Xml;
using PSLibrary = Microsoft.Office.Project.Server.Library;
namespace Microsoft.SDK.Project.Samples.TestAdmin
{
class Program
{
private const string ENDPOINT_ADMIN = "basicHttp_Admin";
// Change the output directory to match the output directory of your computer.
private const string OUTPUT_FILES = @"E:\Project\Samples\Output\";
private static SvcAdmin.AdminClient adminClient;
private static string outFilePath;
static void Main(string[] args)
{
outFilePath = OUTPUT_FILES + "DepartmentsDataSet.xml";
ConfigClientEndpoints(ENDPOINT_ADMIN);
int lcid = 1033; // The Department lookup table is in English.
try
{
// Here is the thing that we are trying to do.
SvcAdmin.DepartmentsDataSet deptDS = adminClient.ReadDepartments(lcid);
deptDS.WriteXml(outFilePath);
}
catch(FaultException fault)
{
// Use the WCF FaultException, because the ASMX SoapException does not
// exist in a WCF-based application.
WriteFaultOutput(fault);
}
Console.Write("\nPress any key to exit... ");
Console.ReadKey();
}
// Extract a PSClientError object from the WCF FaultException object, and
// then display the exception details and each error in the PSClientError stack.
private static void WriteFaultOutput(FaultException fault)
{
string errAttributeName;
string errAttribute;
string errOut;
string errMess = "".PadRight(30, '=') + "\r\n"
+ "Error details: " + "\r\n";
PSLibrary.PSClientError error = Helpers.GetPSClientError(fault, out errOut);
errMess += errOut;
PSLibrary.PSErrorInfo[] errors = error.GetAllErrors();
PSLibrary.PSErrorInfo thisError;
for (int i = 0; i < errors.Length; i++)
{
thisError = errors[i];
errMess += "\r\n".PadRight(30, '=') + "\r\nPSClientError output:\r\n";
errMess += thisError.ErrId.ToString() + "\n";
for (int j = 0; j < thisError.ErrorAttributes.Length; j++)
{
errAttributeName = thisError.ErrorAttributeNames()[j];
errAttribute = thisError.ErrorAttributes[j];
errMess += "\r\n\t" + errAttributeName
+ ": " + errAttribute;
}
}
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(errMess);
Console.ResetColor();
}
// Use the endpoints that are defined in app.config to configure the client.
public static void ConfigClientEndpoints(string endpt)
{
if (endpt == ENDPOINT_ADMIN)
adminClient = new SvcAdmin.AdminClient(ENDPOINT_ADMIN);
}
}
// Helper method: GetPSClientError.
class Helpers
{
/// <summary>
/// Extract a PSClientError object from the ServiceModel.FaultException,
/// for use in output of the GetPSClientError stack of errors.
/// </summary>
/// <param name="e"></param>
/// <param name="errOut">Shows that FaultException has more information
/// about the errors than PSClientError has. FaultException can also contain
/// other types of errors, such as failure to connect to the server.</param>
/// <returns>PSClientError object, for enumerating errors.</returns>
public static PSLibrary.PSClientError GetPSClientError(FaultException e,
out string errOut)
{
const string PREFIX = "GetPSClientError() returns null: ";
errOut = string.Empty;
PSLibrary.PSClientError psClientError = null;
if (e == null)
{
errOut = PREFIX + "Null parameter (FaultException e) passed in.";
psClientError = null;
}
else
{
// Get a ServiceModel.MessageFault object.
var messageFault = e.CreateMessageFault();
if (messageFault.HasDetail)
{
using (var xmlReader = messageFault.GetReaderAtDetailContents())
{
var xml = new XmlDocument();
xml.Load(xmlReader);
var serverExecutionFault = xml["ServerExecutionFault"];
if (serverExecutionFault != null)
{
var exceptionDetails = serverExecutionFault["ExceptionDetails"];
if (exceptionDetails != null)
{
try
{
errOut = exceptionDetails.InnerXml + "\r\n";
psClientError =
new PSLibrary.PSClientError(exceptionDetails.InnerXml);
}
catch (InvalidOperationException ex)
{
errOut = PREFIX + "Unable to convert fault exception info ";
errOut += "a valid Project Server error message. Message: \n\t";
errOut += ex.Message;
psClientError = null;
}
}
else
{
errOut = PREFIX + "The FaultException e is a ServerExecutionFault, "
+ "but does not have ExceptionDetails.";
}
}
else
{
errOut = PREFIX + "The FaultException e is not a ServerExecutionFault.";
}
}
}
else // No detail in the MessageFault.
{
errOut = PREFIX + "The FaultException e does not have any detail.";
}
}
errOut += "\r\n" + e.ToString() + "\r\n";
return psClientError;
}
}
}
Voici un exemple du fichier de sortie DepartmentsDataSet.xml qui enregistre l'exemple d'application.
Notes
Les noms de service qui sont retournés dans l'exemple sont spécifiques à des services qui sont définis dans l'instance de Project Web App.
<?xml version="1.0" standalone="yes"?>
<DepartmentsDataSet xmlns="https://schemas.microsoft.com/office/project/server/webservices/DepartmentsDataSet/">
<Departments>
<DEPARTMENT_UID>83125fbf-5c09-4b93-800a-09681bbf7612</DEPARTMENT_UID>
<DEPARTMENT_NAME>Marketing</DEPARTMENT_NAME>
<DEPARTMENT_FULLNAME>Marketing</DEPARTMENT_FULLNAME>
</Departments>
<Departments>
<DEPARTMENT_UID>a47930d6-b89d-4f3a-b4e3-522015fe82a1</DEPARTMENT_UID>
<DEPARTMENT_NAME>Testing</DEPARTMENT_NAME>
<DEPARTMENT_FULLNAME>Testing</DEPARTMENT_FULLNAME>
</Departments>
<Departments>
<DEPARTMENT_UID>cca85763-9376-4ef7-b4f2-a2b661b9846b</DEPARTMENT_UID>
<DEPARTMENT_NAME>UA</DEPARTMENT_NAME>
<DEPARTMENT_FULLNAME>UA</DEPARTMENT_FULLNAME>
</Departments>
<Departments>
<DEPARTMENT_UID>41d056ca-497f-4e4a-8855-e118b667fcc8</DEPARTMENT_UID>
<DEPARTMENT_NAME>Planning</DEPARTMENT_NAME>
<DEPARTMENT_FULLNAME>Planning</DEPARTMENT_FULLNAME>
</Departments>
<Departments>
<DEPARTMENT_UID>96e4522f-2d4e-4026-9ec0-ede9c182dda8</DEPARTMENT_UID>
<DEPARTMENT_NAME>Development</DEPARTMENT_NAME>
<DEPARTMENT_FULLNAME>Development</DEPARTMENT_FULLNAME>
</Departments>
</DepartmentsDataSet>