Share via


LoginWindows.Login Method

Log on the specified user with Windows authentication.

Namespace:  WebSvcLoginWindows
Assembly:  ProjectServerWebServices (in ProjectServerWebServices.dll)

Syntax

'Declaration
<SoapDocumentMethodAttribute("http://schemas.microsoft.com/office/project/server/webservices/LoginWindows/Login", RequestNamespace := "http://schemas.microsoft.com/office/project/server/webservices/LoginWindows/",  _
    ResponseNamespace := "http://schemas.microsoft.com/office/project/server/webservices/LoginWindows/",  _
    Use := SoapBindingUse.Literal, ParameterStyle := SoapParameterStyle.Wrapped)> _
Public Function Login As Boolean
'Usage
Dim instance As LoginWindows
Dim returnValue As Boolean

returnValue = instance.Login()
[SoapDocumentMethodAttribute("http://schemas.microsoft.com/office/project/server/webservices/LoginWindows/Login", RequestNamespace = "http://schemas.microsoft.com/office/project/server/webservices/LoginWindows/", 
    ResponseNamespace = "http://schemas.microsoft.com/office/project/server/webservices/LoginWindows/", 
    Use = SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Wrapped)]
public bool Login()

Return Value

Type: System.Boolean
Returns true for a successful logon to Project Server.

Remarks

After a successful logon, set the Credentials property to the user's default Windows credentials for other PSI Web service objects in the same application. For more information, see How to: Log on to Project Server Programmatically.

Examples

The LogonPS method in the following example handles logon and the LogoffPS method handles logoff for both Project Server authentication and Windows authentication.

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 LoginWindowsWebSvc.LoginWindows loginWindows =
            new LoginWindowsWebSvc.LoginWindows();
        private static LoginFormsWebSvc.LoginForms loginForms =
            new LoginFormsWebSvc.LoginForms();
        private CookieContainer cookies = new CookieContainer();

        private string baseUrl; // Example: http://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;
        }
    }
}

The following code instantiates and uses the LoginUtils class for Windows authentication. The project object is an example that shows how to add the user context for a PSI Web service.

private bool windowsAuth = true;  // Use Windows authentication
private string baseUrl; // Example: http://ServerName/ProjectServerName/ 
private const string PROJECTWEBSERVICE = "_vti_bin/PSI/Project.asmx";

private static LoginUtils loginUtils = new LoginUtils();
public static ProjectWebSvc.Project project = 
    new ProjectWebSvc.Project();
. . .
// Add the URL, and the user credentials or logon cookie to each PSI Web service object.
public void AddContextInfo(string baseUrl)
{
    // Add the Url property first.
    project.Url = baseUrl + PROJECTWEBSERVICE;

    if (windowsAuth)   // Add Windows credentials
    {
        project.Credentials = CredentialCache.DefaultCredentials;
    }
    else            // Add Project Server logon cookie
    {
        project.CookieContainer = loginUtils.Cookies;
    }
}

See Also

Reference

LoginWindows Class

LoginWindows Members

WebSvcLoginWindows Namespace