C# MVC Core 5 站点在尝试打开与 Azure SQL 数据库的连接时抛出编码错误

C# MVC Core 5 Site throws encoding error when trying to open a connection to Azure SQL DB

如上所述。在 VS2019 上的 IIS Express 下,我没有任何问题。在部署到 Azure 后打开站点时,我得到:

"The character encoding of the plain text document was not declared. The document will render with garbled text in some browser configurations if the document contains characters from outside the US-ASCII range. The character encoding of the file needs to be declared in the transfer protocol or file needs to use a byte order mark as an encoding signature."

我最初尝试添加每个排列 <meta charset="UTF-8"/>我发现没有用。最终我追踪到错误(通过删除代码行直到错误不再出现)直到我尝试打开 SqlConnection 时触发。

public DataTable FillDatatable(SqlCommand cmd)
        {
            DataTable dt = new DataTable();
            
            using (SqlConnection connect = new SqlConnection(CONST.CONN))
            using (SqlDataAdapter da = new SqlDataAdapter(cmd))
            {
                cmd.Connection = connect;
                connect.Open();    //--  Error throws when this is in the code
                da.Fill(dt);      //--  Error throws when this is in the code as this calls the
                                  //--  line prior innately.
            }
            
            return dt;
        }

我这辈子都想不通为什么。

TL;DR - 当 运行 来自已发布的 Azure Web 应用程序但在 VS2019 中的 IIS Express 下完美运行时 SqlConnection.Open() 抛出编码错误。

编辑-

快速而肮脏的连接字符串:

public const string CONN = "Data Source=MYDBADDRESS;Initial Catalog=Primary;Persist Security Info=True;User ID=USERNAME;Password=PWD;";

appsettings.json 只有日志记录信息和 "AllowedHosts"="*"

我从未设置任何防火墙策略。查看门户中的防火墙,有 none.

网站非常非常基础。在我继续之前,我只是想把它调高 运行,这个数据拦截器并没有给我带来任何快乐。 :/

Sql 服务器需要默认设置防火墙策略,所以我假设在将应用程序部署到 azure web 应用程序后,ip 地址必须更改并且可能会导致一些错误。

@Destroigo 遇到防火墙问题。恭喜解决:)