2016-08-16 48 views
1

我需要在Team Services中構建一個Visual Studio項目,然後運行一些測試。測試會進行REST API調用,然後通過直接訪問數據庫來驗證REST API調用是否工作。數據庫是Microsoft SQL Server數據庫,只允許Windows Authenticated用戶訪問它。它在內部服務器上運行。所以當我在本地運行我的機器上的構建時,它工作正常,但在Team Services中,測試失敗,因爲它們無法訪問數據庫。我想知道是否有可能以用戶身份運行測試或以某種方式解決此問題。在Visual Studio Team Services中作爲Windows用戶運行

歡迎任何建議,但請注意,我絕對需要能夠直接訪問數據庫來驗證API。

回答

2

通過VSTS構建項目,它使用vsts代理帳戶(可以在安裝vsts代理時指定)。首先,如果您使用您的vsts代理進行構建和測試,並且該計算機中的Windows帳戶可以連接到SQL Server並讀取數據,則可以模擬用戶從SQL Server訪問數據。

簡單代碼:

public static class Helper 
{ 
    [DllImport("advapi32.dll", SetLastError = true)] 
    public static extern bool LogonUser(
     string lpszUsername, 
     string lpszDomain, 
     string lpszPassword, 
     int dwLogonType, 
     int dwLogonProvider, 
     out IntPtr phToken); 
} 

-

IntPtr userToken = IntPtr.Zero; 

     bool success = Helper.LogonUser(
      "[user name]", 
      "[domain]", 
      "[password]", 
      2, //2 
      0, //0 
      out userToken); 

     if (!success) 
     { 
      Assert.Fail("Logon user failed"); 

     } 

     using (WindowsIdentity.Impersonate(userToken)) 
     { 
      //TODO connect to your sql server database 

}

其次,如果使用的是託管代理,唯一的辦法是,你需要使用SQL Server的帳戶訪問SQL Server數據庫,並確保您的SQL Server實例可以從Hosted代理訪問。

相關問題