使用清单文件和 C# 将 SQL 用户更改为受信任的用户

Change SQL User to Trusted User Using Manifest File and C#

我继承了一个使用 SQL 身份验证和清单文件连接到数据库的项目。我们正在使用 SQL 服务器。

这是清单文件:

<database>
   <server>server1\dbname</server>
   <catalog>CatName</catalog>
   <username>sysuser</username>
   <password>ksdjf290384</password>

</database>

这是连接它的代码:

        this.Manifest = new XmlDocument();
        this.Manifest.Load(manifestPath);
        XmlNode rootNode = this.Manifest.DocumentElement.SelectSingleNode("/manifest");
        XmlNode dbNode = rootNode.SelectSingleNode("database");
        this.Connector = new SqlConnector(string.Format(CONNECTION_STRING_TEMPLATE, dbNode.SelectSingleNode("server").InnerText, dbNode.SelectSingleNode("catalog").InnerText, dbNode.SelectSingleNode("username").InnerText, dbNode.SelectSingleNode("password").InnerText));

我需要将其更改为 Windows 身份验证。我不知道如何更改清单文件和代码才能工作。

我已尝试从清单文件和连接器中删除用户名和密码。我试过鞋拔 Trusted_Connection 但似乎没有任何效果。

如果对此有任何想法或想法,我将不胜感激。

看起来它从未被设计为支持 Windows 身份验证。您可以发明一个新的 属性,例如 integratedsecurity,或者如果 username 缺失或为空,则假设它正在使用 Windows 身份验证。

清单文件:

<database>
   <server>server1\dbname</server>
   <catalog>CatName</catalog>
   <integratedsecurity>SSPI</integratedsecurity>
</database>

这是连接代码:

this.Manifest = new XmlDocument();
this.Manifest.Load(manifestPath);
XmlNode rootNode = this.Manifest.DocumentElement.SelectSingleNode("/manifest");
XmlNode dbNode = rootNode.SelectSingleNode("database");
XmlNode userNameNode = rootNode.SelectSingleNode("username");
XmlNode passwordNode = rootNode.SelectSingleNode("password");
XmlNode integratedSecurityNode = rootNode.SelectSingleNode("integratedsecurity");
if (integratedSecurityNode != null || userNameNode == null 
|| string.IsNullOrEmpty(userNameNode))
{
    this.Connector = new SqlConnector(string.Format("Server={0};Initial Catalog={1};Integrated Security=SSPI;", dbNode.SelectSingleNode("server").InnerText, dbNode.SelectSingleNode("catalog").InnerText);
}
else 
{
    this.Connector = new SqlConnector(string.Format(CONNECTION_STRING_TEMPLATE, dbNode.SelectSingleNode("server").InnerText, dbNode.SelectSingleNode("catalog").InnerText, userNameNode.InnerText, dbNode.SelectSingleNode("password").InnerText));
}

以下代码应该有效:

Menifast 文件:

<database>
   <server>server1\dbname</server>
   <catalog>CatName</catalog>
</database>

代码:

        this.Manifest = new XmlDocument();
        this.Manifest.Load(manifestPath);
        XmlNode rootNode = this.Manifest.DocumentElement.SelectSingleNode("database");
        XmlNode userNameNode = rootNode.SelectSingleNode("username");
        XmlNode passwordNode = rootNode.SelectSingleNode("password");

        if (userNameNode != null && passwordNode != null)
        {

            this.Connector = new SqlConnector(string.Format(CONNECTION_STRING_TEMPLATE, rootNode.SelectSingleNode("server").InnerText, rootNode.SelectSingleNode("catalog").InnerText, userNameNode.InnerText, passwordNode.InnerText));

        }
        else 
        {
            //Windows authentication
            this.Connector = new SqlConnector(string.Format("Server={0};Initial Catalog={1};Integrated Security=SSPI;", rootNode.SelectSingleNode("server").InnerText, rootNode.SelectSingleNode("catalog").InnerText);
        }