Поделиться через


Метод 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;
    }
}

См. также

Справочные материалы

LoginForms класс

Элементы LoginForms

Пространство имен WebSvcLoginForms