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

Razor Pages ASP.NET如何连接非本地MSSQL数据库并展示数据

1. MSSQL连接字符串配置方法

连接字符串统一配置在项目根目录的appsettings.json文件中,不要硬编码在业务代码里。
找到文件内的ConnectionStrings节点,根据你持有的凭据类型选择对应的格式:

  • SQL Server账号密码认证(最常用,对应单独的数据库账号/密码场景)
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "ConnectionStrings": {
    "DefaultMssqlConn": "Server=你的数据库服务器地址,端口;Database=你要连接的目标库名;User Id=登录账号;Password=登录密码;TrustServerCertificate=True;Encrypt=True;"
  },
  "AllowedHosts": "*"
}

参数说明:

  • Server:填写非本地MSSQL的服务器地址,如果用默认1433端口可以省略端口值,非默认端口直接跟在地址后用逗号分隔即可

  • Database:填写需要访问的具体数据库名称,避免连错实例下的其他库

  • User Id/Password:填写你持有的数据库登录凭据

  • TrustServerCertificate=True:跳过服务端证书校验,解决非本地连接常见的SSL证书信任报错,生产环境如果部署了合规证书可按需移除

  • Encrypt=True:兼容高版本MSSQL默认的加密传输要求,避免低版本客户端连接报错

  • Windows域集成认证(对应程序运行在域环境下,用当前系统账号访问数据库、不需要单独密码的场景)

"DefaultMssqlConn": "Server=你的数据库服务器地址;Database=目标库名;Integrated Security=True;TrustServerCertificate=True;"
2. 数据访问与页面展示实现

Razor Pages下最简单的实现方式是用Entity Framework Core做ORM映射,不用手动写数据转换逻辑,步骤如下:

前置依赖安装

通过Nuget包管理器安装两个必需包:

  • Microsoft.EntityFrameworkCore.SqlServer:MSSQL的EF Core提供程序
  • Microsoft.EntityFrameworkCore.Tools:支持后续的模型映射操作

配置数据映射

  1. 在项目下新建Models文件夹,创建和目标表结构对应的实体类,比如要展示存储条目表StorageEntries,就创建对应类:
public class StorageEntry
{
    // 属性名、类型要和数据库表字段一一对应,字段名不一致时可以用[Column("实际字段名")]特性标记
    public int EntryId { get; set; }
    public string EntryName { get; set; }
    public int StoreCount { get; set; }
    public DateTime UpdateTime { get; set; }
    // 其余字段按照实际表结构补充
}
  1. 在同文件夹下创建数据库上下文类,负责数据操作:
using Microsoft.EntityFrameworkCore;
public class AppDbContext : DbContext
{
    public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { }
    // 泛型参数填刚才创建的实体类,属性名默认和数据库表名匹配
    public DbSet<StorageEntry> StorageEntries { get; set; }
}
  1. 打开项目根目录的Program.cs,在var app = builder.Build();代码之前添加服务注册,把连接字符串和数据库上下文注入到系统服务里:
var connStr = builder.Configuration.GetConnectionString("DefaultMssqlConn");
builder.Services.AddDbContext<AppDbContext>(opt => opt.UseSqlServer(connStr));

页面查询与展示

  1. 在Pages文件夹下新建Razor页面,命名为StorageList.cshtml,后台页面模型代码(StorageList.cshtml.cs)写查询逻辑,通过构造函数注入数据库上下文,在页面GET请求时查询全表数据:
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.EntityFrameworkCore;

public class StorageListModel : PageModel
{
    private readonly AppDbContext _dbContext;
    public StorageListModel(AppDbContext dbContext)
    {
        _dbContext = dbContext;
    }
    // 绑定查询结果,供前端页面调用
    public IList<StorageEntry> Entries { get; set; }

    public async Task OnGetAsync()
    {
        // 查询目标表所有行数据
        Entries = await _dbContext.StorageEntries.ToListAsync();
    }
}
  1. 在前端视图StorageList.cshtml中遍历查询结果,用表格展示即可:
@page
@model StorageListModel
<h3>存储条目列表</h3>
<table class="table table-bordered">
    <thead>
        <tr>
            <th>条目ID</th>
            <th>条目名称</th>
            <th>库存数量</th>
            <th>最后更新时间</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var entry in Model.Entries)
        {
            <tr>
                <td>@entry.EntryId</td>
                <td>@entry.EntryName</td>
                <td>@entry.StoreCount</td>
                <td>@entry.UpdateTime.ToString("yyyy-MM-dd HH:mm")</td>
            </tr>
        }
    </tbody>
</table>

启动项目后访问/StorageList路径就能看到全表数据的展示效果。

常见排错提示:如果连接失败,先确认服务器对应端口本地能连通、数据库开启了远程访问权限、防火墙放行了对应端口、账号密码有目标表的查询权限。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 07:45:40