Метод LoginForms.Logoff
Выйдите из системы текущего пользователя Project Server, войти в систему с проверкой подлинности форм.
Пространство имен: WebSvcLoginForms
Сборка: ProjectServerServices (в ProjectServerServices.dll)
Синтаксис
'Декларация
<SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/LoginForms/Logoff", RequestNamespace := "https://schemas.microsoft.com/office/project/server/webservices/LoginForms/", _
ResponseNamespace := "https://schemas.microsoft.com/office/project/server/webservices/LoginForms/", _
Use := SoapBindingUse.Literal, ParameterStyle := SoapParameterStyle.Wrapped)> _
Public Sub Logoff
'Применение
Dim instance As LoginForms
instance.Logoff()
[SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/LoginForms/Logoff", RequestNamespace = "https://schemas.microsoft.com/office/project/server/webservices/LoginForms/",
ResponseNamespace = "https://schemas.microsoft.com/office/project/server/webservices/LoginForms/",
Use = SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Wrapped)]
public void Logoff()
Замечания
После успешного выхода задайте свойство CookieContainer для пустая ссылка (Nothing в Visual Basic) для других объектов службы PSI веб в том же приложении.
Примеры
Следующий пример обрабатывает входе в метод LogonPS и метод LogoffPS выполняет выход из системы для проверки подлинности форм.
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
namespace LoginDemo
{
class LoginUtils
{
const string LOGINWINDOWS = "_vti_bin/PSI/LoginWindows.asmx";
const string LOGINFORMS = "_vti_bin/PSI/LoginForms.asmx";
private static SvcLoginWindows.LoginWindows loginWindows =
new SvcLoginWindows.LoginWindows();
private static SvcLoginForms.LoginForms loginForms =
new SvcLoginForms.LoginForms();
private CookieContainer cookies = new CookieContainer();
private string baseUrl; // Example: https://ServerName/ProjectServer/
public LoginUtils()
{
}
public string BaseUrl
{
get
{
return baseUrl;
}
}
public CookieContainer Cookies
{
get
{
return loginForms.CookieContainer;
}
}
// Log on Project Server.
// Returns true for successful logon.
public bool LogonPS(bool useWinLogon, string bUrl,
string userName, string password)
{
bool logonSucceeded = false;
baseUrl = bUrl;
if (useWinLogon)
{
loginWindows.Url = baseUrl + LOGINWINDOWS;
loginWindows.Credentials = CredentialCache.DefaultCredentials;
if (loginWindows.Login()) logonSucceeded = true;
}
else // Use LoginForms
{
loginForms.Url = baseUrl + LOGINFORMS;
loginForms.CookieContainer = cookies;
if (loginForms.Login(userName, password)) logonSucceeded = true;
}
return logonSucceeded;
}
// Log off Project Server.
// Returns true for successful logoff.
public bool LogoffPS(bool useWinLogon)
{
bool loggedOff = true;
if (useWinLogon)
{
loginWindows.Logoff();
}
else
{
loginForms.Logoff();
}
return loggedOff;
}
}
}
Следующий код создает экземпляр и использует класс LoginUtils для проверки подлинности форм. Объект project приведен пример, который показывает, как удалить контекст пользователя для PSI веб-службы.
private bool windowsAuth = false; // Use Project Server authentication
private static LoginUtils loginUtils = new LoginUtils();
public static SvcProject.Project project =
new SvcProject.Project();
. . .
private void LogOff()
{
bool loggedOff = false;
string errMess = "";
try
{
loggedOff = loginUtils.LogoffPS(windowsAuth);
}
catch (SoapException ex)
{
errMess = ex.Message.ToString();
}
catch (WebException ex)
{
errMess = ex.Message.ToString();
}
if (loggedOff)
{
RemoveContextInfo();
}
else
{
MessageBox.Show(errMess, "Logoff Error", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
/// <summary>
/// Remove the user credentials or logon cookie from each PSI Web service object.
/// </summary>
public void RemoveContextInfo()
{
if (windowsAuth)
{
project.Credentials = null;
}
else
{
project.CookieContainer = null;
}
}