C# Azure SQL数据库正在连接,即使我们在密码之前提供了空空间

C# Azure SQL数据库正在连接,即使我们在密码之前提供了空空间,c#,sql-server,asp.net-mvc,azure,azure-sql-database,C#,Sql Server,Asp.net Mvc,Azure,Azure Sql Database,我们在MVC中开发了SQL连接向导,用户将在其中输入SQL Server凭据,如果连接成功,我们将通过执行查询从数据库中提取记录。一切正常,但我们正在连接到windows azure数据库 问题是密码是否为“test@123“如果我提供       test@123 或 从UI连接成功并拉取记录 我们用来打开连接的代码是 string provider = "System.Data.Sq

我们在MVC中开发了SQL连接向导,用户将在其中输入SQL Server凭据,如果连接成功,我们将通过执行查询从数据库中提取记录。一切正常,但我们正在连接到windows azure数据库

问题是密码是否为“test@123“如果我提供

      test@123

从UI连接成功并拉取记录

我们用来打开连接的代码是

string provider = "System.Data.SqlClient"; // for example
DbProviderFactory factory = DbProviderFactories.GetFactory(provider);

using (DbConnection conn = factory.CreateConnection())
{
     string connectionstring = FormatSqlConnection(SqlViewModel); // here we format sql conneciton string
     conn.ConnectionString = connectionstring;
     conn.Open();
     conn.Close();
     SqlViewModel.MessageType = MessageType.Success;
     SqlViewModel.MessageText = "Connection Succeeded..";
     SqlViewModel.SqlConnectionString = connectionstring;
 }
FormatSqlConnection
方法是

private static string FormatSqlConnection(SqlConnectionModel SqlViewModel)
{
    string connectionstring = string.Format("Data Source={0};User ID={1};Password={2};Initial Catalog={3};", SqlViewModel.Server, SqlViewModel.UserName, SqlViewModel.Password, SqlViewModel.DataBase);
    return connectionstring;
}
我如何解决这个问题


提前感谢

如果不在值周围添加引号,我想这就是处理连接字符串的方式

连接字符串的基本格式包括一系列 用分号分隔的关键字/值对。等号(=) 连接每个关键字及其值。要包括包含 分号、单引号字符或双引号字符 值必须用双引号括起来。如果值 包含分号和双引号字符,值可以 用单引号括起来。单引号是 如果值以双引号字符开头,也很有用

相反,如果值开始,则可以使用双引号 只有一个引号。如果该值包含两个单引号 和双引号字符,引号字符用于 每次值出现在 价值观在字符串值中包含前面或后面的空格, 值必须用单引号或双引号括起来 引号。整数周围的任何前导空格或尾随空格, 忽略布尔值或枚举值,即使包含在 引号。但是,字符串文字关键字或 价值被保留。可以使用单引号或双引号 在连接字符串中不使用分隔符(例如,数据 Source=my'Server或Data Source=my'Server),除非带引号 字符是值中的第一个或最后一个字符

因此,您可以尝试将格式更改为

 string connectionstring = string.Format("Data Source={0};User ID={1};Password='{2}';Initial Catalog={3};", SqlViewModel.Server, SqlViewModel.UserName, SqlViewModel.Password, SqlViewModel.DataBase);

所以,看看FormatSqlConnection方法中发生了什么是很有用的,不是吗?@RaphaëlAlthaus谢谢你的回答..我已经更新了:)我猜其中某个地方发生了trim()。可能是自动完成的。这只发生在azure连接中?@Kritner:可能你是对的。但我如何解决这个问题:(如果我在密码和抛出错误之间提供空格,但不提供线索和前导空格:(:(非常感谢你的回答,你救了我一天):)stackoverflow rocks:):D
 string connectionstring = string.Format("Data Source={0};User ID={1};Password='{2}';Initial Catalog={3};", SqlViewModel.Server, SqlViewModel.UserName, SqlViewModel.Password, SqlViewModel.DataBase);