【问题标题】:SQL Connection class won't connect when run from a Blazor App从 Blazor 应用程序运行时,SQL 连接类不会连接
【发布时间】:2020-09-17 23:41:27
【问题描述】:

我正在尝试使用以下代码从 Blazor 网页中查询数据库,异常如下

在建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供程序:SQL 网络接口,错误:44 - 无法为 Windows 集成身份验证编写服务主体名称 (SPN)。可能的原因是服务器未正确指定连接 API 调用、域名系统 (DNS) 查找失败或内存不足)

System.PlatformNotSupportedException:此平台不支持 System.Net.Dns:GetHostByName。

在 System.Net.Dns.GetHostByName (System.String hostName) in :0 ...

当我在传统的 Web 或控制台应用程序中运行相同的代码时,连接会立即打开/关闭。

public class MySQLHelper
{
    public static SqlConnection GetConnection()
    {           
        string m_connectionString = "connection string here";
        SqlConnection sqlConn = new SqlConnection(m_connectionString);
        sqlConn.Open(); // fails to open when called from a regular registered 'service' in Blazor

        return sqlConn;
    }
}

想法?

【问题讨论】:

  • Blazor 应用不应连接到 sql 服务器。这与任何最佳实践背道而驰,这并不好笑——它们应该连接到后端 API。如果有的话,那么出于安全原因。

标签: c# .net sql-server blazor


【解决方案1】:

System.PlatformNotSupportedException:

表示您正在从 Blazor WebAssembly 应用程序中尝试此操作。

Wasm 不(不能)支持很多 API,Blazor 仅限于浏览器安全规则。

您不能直接从 WebAssembly(或 JavaScript)访问数据库。

要么使用JS IndexDb 用于客户端计算机上的小型数据库(这意味着不会在用户之间共享),要么使用服务器进行数据访问。查看“Blazor Server”或“Blazor WebAssembly Hosted”项目模型。

【讨论】:

    【解决方案2】:

    【讨论】:

    • 感谢 Omar,我曾希望避免使用 EF。
    猜你喜欢
    • 1970-01-01
    • 2022-12-23
    • 2023-04-03
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 2021-10-03
    相关资源
    最近更新 更多