You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DotNet Blazor WASM读取本地SQL数据库后加载卡住问题求助

问题

我是DotNet新手,测试连接本地SQL数据库时,连接成功且能读取数据,但浏览器中的应用卡在加载状态,无任何错误或异常抛出。注释的代码块会导致应用加载失败——执行这段注释代码时,控制台能成功获取数据库数据,但浏览器应用会卡住且无报错。

完整Program.cs代码:

global using BlazorShop.Shared;
using Microsoft.AspNetCore.ResponseCompression;
using Microsoft.Data.SqlClient;
using Microsoft.EntityFrameworkCore;

WebApplicationBuilder builder = WebApplication.CreateBuilder( args );

/*try {
    var sqlBuilder = new SqlConnectionStringBuilder { ConnectionString = builder.Configuration.GetConnectionString( "DefaultConnection" ) };
    using var connection = new SqlConnection( sqlBuilder.ConnectionString );

    Console.WriteLine( "\nQuery data example:" );
    Console.WriteLine( "=========================================\n" );

    const string sql = "SELECT name, collation_name FROM sys.databases";

    using var command = new SqlCommand( sql, connection );
    connection.Open();
    using SqlDataReader reader = command.ExecuteReader();
    while ( reader.Read() ) {
        Console.WriteLine( "{0} {1}", reader.GetString( 0 ), reader.GetString( 1 ) );
    }

    reader.Close();
    connection.Close();
}
catch ( SqlException e ) {
    Console.WriteLine( e.ToString() + "vregfqrevcqersgvcrqedsvcqedsvcerdsverqvrqesgvreqsdbvrqe" );
}
Console.ReadLine();*/

// Add services to the container.

builder.Services.AddControllersWithViews();
builder.Services.AddRazorPages();

WebApplication app = builder.Build();

// Configure the HTTP request pipeline.
if ( app.Environment.IsDevelopment() ) {
    //app.UseWebAssemblyDebugging();
}
else {
    app.UseExceptionHandler( "/Error" );
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseBlazorFrameworkFiles();
app.UseStaticFiles();
app.UseRouting();
app.MapRazorPages();
app.MapControllers();
app.MapFallbackToFile("index.html");

app.Run();
问题原因

核心问题出在注释代码中的Console.ReadLine();——这行代码会阻塞ASP.NET Core应用的启动主线程。在Program.cs的构建阶段调用它,应用会一直等待控制台输入,无法继续完成后续的中间件配置和服务启动,导致浏览器请求永远得不到响应,表现为页面卡住加载。

解决方案
  1. 直接移除Console.ReadLine();
    去掉这行代码后,应用启动流程不会被阻塞,能正常完成初始化,浏览器即可正常加载页面。

  2. 保留数据库测试逻辑但不阻塞启动(可选)
    如果需要在启动时执行数据库测试,可将这部分逻辑放到应用启动后的异步任务中,避免阻塞主线程。修改后的代码示例:

global using BlazorShop.Shared;
using Microsoft.AspNetCore.ResponseCompression;
using Microsoft.Data.SqlClient;
using Microsoft.EntityFrameworkCore;

WebApplicationBuilder builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllersWithViews();
builder.Services.AddRazorPages();

WebApplication app = builder.Build();

// 后台异步执行数据库测试,不阻塞启动
_ = Task.Run(async () =>
{
    try
    {
        var sqlBuilder = new SqlConnectionStringBuilder { ConnectionString = app.Configuration.GetConnectionString("DefaultConnection") };
        using var connection = new SqlConnection(sqlBuilder.ConnectionString);

        Console.WriteLine("\nQuery data example:");
        Console.WriteLine("=========================================\n");

        const string sql = "SELECT name, collation_name FROM sys.databases";

        using var command = new SqlCommand(sql, connection);
        await connection.OpenAsync();
        using SqlDataReader reader = await command.ExecuteReaderAsync();
        while (await reader.ReadAsync())
        {
            Console.WriteLine("{0} {1}", reader.GetString(0), reader.GetString(1));
        }
    }
    catch (SqlException e)
    {
        Console.WriteLine(e.ToString() + "vregfqrevcqersgvcrqedsvcqedsvcerdsverqvrqesgvreqsdbvrqe");
    }
});

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    //app.UseWebAssemblyDebugging();
}
else
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseBlazorFrameworkFiles();
app.UseStaticFiles();
app.UseRouting();
app.MapRazorPages();
app.MapControllers();
app.MapFallbackToFile("index.html");

app.Run();

这样修改后,数据库测试会在后台独立执行,应用启动流程不受影响,浏览器能正常加载页面,同时控制台依然能输出数据库查询结果。

内容的提问来源于stack exchange,提问作者Tree3708

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 04:53:22