簡體   English   中英

Microsoft Project Server 2010的ReadProjectList

[英]ReadProjectList from microsoft project server 2010

我想使用.net中的PSI Web服務讀取項目列表。 我不知道這是什么問題,在請求Web方法時,總是會出現“發生未處理的通信錯誤”異常。

有人可以幫我解決這個問題嗎?

我正在使用VS 2010

  1. 使用Web參考添加並使用以下代碼,(給出了實際的用戶名和密碼)Web參考url:servername / ProjectServerName / _vti_bin / PSI / project.asmx?wsdl

    svcProject.Project prj2 =新的svcProject.Project(); prj2.Credentials = new NetworkCredential(“ testuser”,“ testpassword”); svcProject.ProjectDataSet lst2 = prj2.ReadProjectList();

  2. 我也嘗試使用WCF參考和下面的代碼

    ProjectSoapClient.ProjectSoapClient prj =新的ProjectSoapClient.ProjectSoapClient(); prj.ClientCredentials.Windows.ClientCredential = new NetworkCredential(“ testuser”,“ testpassword”,“ SDP”); prj.ClientCredentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Impersonation; ProjectDataSet lst = prj.ReadProjectList();

我總是收到“ 發生未處理的通信故障 ”錯誤,

一些可以幫助在Project Server 2010中進行用戶權限或身份驗證更改的更改

提前致謝

您是否正在嘗試soapexception?

    catch (SoapException ex)
    {

        PSLib.PSClientError error = new PSLib.PSClientError(ex);
        PSLib.PSErrorInfo[] errors = error.GetAllErrors();
        PSLib.PSErrorInfo thisError;
        for (int i = 0; i < errors.Length; i++)
        {
            thisError = errors[i];
        }
        string StrException = ex.ToString() + " \r\nInner Exception: " + ex.InnerException.ToString();

    }

您是否嘗試過使用login.asmx服務進行身份驗證而不是模擬

 //Creating a new service client object
   ProjectDerived projectSvc = new ProjectDerived();
   projectSvc.Url = projectServerUrl + "Project.asmx";
   projectSvc.Credentials = CredentialCache.DefaultCredentials;
   projectSvc.CookieContainer = GetLogonCookie();
   projectSvc.EnforceWindowsAuth = isWindowsUser;


// Get a CookieContainer property from the derived LoginWindows object.
private static CookieContainer GetLogonCookie()
{
    // Create an instance of the loginWindows object.
    LoginWindowsDerived loginWindows = new LoginWindowsDerived();
    loginWindows.EnforceWindowsAuth = true;
    loginWindows.Url = projectServerUrl + "LoginWindows.asmx";
    loginWindows.Credentials = CredentialCache.DefaultCredentials;

    loginWindows.CookieContainer = new CookieContainer();


    if (!loginWindows.Login())
    {
        // Login failed; throw an exception.
        throw new UnauthorizedAccessException("Login failed.");
    }
    return loginWindows.CookieContainer;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM