运行 作为 windows 用户在 Visual Studio 团队服务中

Running as a windows user in Visual Studio Team Services

我需要在 Team Services 中构建一个 Visual Studio 项目,然后 运行 进行一些测试。测试进行 REST API 调用,然后通过直接访问数据库验证 REST API 调用是否有效。该数据库是一个 Microsoft SQL 服务器数据库,只允许 Windows 认证用户访问它。它在内部服务器上 运行ning。因此,当我 运行 在本地计算机上构建时它工作正常,但在团队服务中,测试失败,因为它们无法访问数据库。我想知道是否可以 运行 作为用户进行测试或以某种方式解决此问题。

欢迎提出任何建议,但请注意,我绝对需要能够直接访问数据库以验证 API。

通过VSTS构建项目,它使用vsts代理帐户(可以在设置vsts代理时指定)。

首先,如果您正在使用您的 vsts 代理构建和测试,并且该机器中有 windows 帐户可以连接到 SQL 服务器并读取数据,您可以模拟用户访问来自 SQL 服务器的数据。

简单代码:

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 

}

其次,如果您使用的是 Hosted Agent,唯一的方法是您需要使用 SQL 服务器帐户访问 SQL 服务器数据库,同时确保您的 SQL可以从托管代理访问服务器实例。