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

问题描述

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

"未声明纯文本文档的字符编码。如果文档包含来自 US-ASCII 范围之外的字符,该文档将在某些浏览器配置中呈现为乱码。需要声明文件的字符编码在传输协议或文件中需要使用字节顺序标记作为编码签名。”

我最初尝试添加 <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 App 运行时在 sqlConnection.open() 上抛出编码错误,但在 VS2019 中的 IIS Express 下完美运行。

编辑-

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

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

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

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

网站非常非常基础。只是在我继续之前尝试启动并运行它,这个数据拦截器并没有给我带来任何乐趣。 :/

解决方法

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

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