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

如何在AppService中获取连接字符串?能否获取供Dapper使用的_connString?

当然可以!在Azure App Service里获取连接字符串并用于Dapper其实非常顺畅,我给你一步步拆解说明:

在App Service中获取连接字符串的方法

方式1:ASP.NET Core 推荐用法(依赖注入 IConfiguration)

这是目前最主流的方式,适配所有现代ASP.NET Core项目:

  • 你的项目默认已经包含Microsoft.Extensions.Configuration相关包,无需额外安装。
  • 在你的AppService类的构造函数中注入IConfiguration实例:
private readonly IConfiguration _configuration;

public YourAppService(IConfiguration configuration)
{
    _configuration = configuration;
}
  • 调用GetConnectionString方法获取配置好的连接字符串,这里的YourConnStringName要和你在Azure App Service门户里设置的连接字符串名称完全一致:
var connString = _configuration.GetConnectionString("YourConnStringName");

方式2:.NET Framework 项目用法

如果你的AppService是基于传统.NET Framework(比如ASP.NET MVC/Web Forms),可以用ConfigurationManager:

  • 确保引用了System.Configuration NuGet包。
  • 直接读取连接字符串:
var connString = ConfigurationManager.ConnectionStrings["YourConnStringName"].ConnectionString;
将连接字符串用于Dapper

完全可以直接用获取到的连接字符串初始化Dapper的SqlConnection,结合你给出的代码示例,修改后的完整写法如下:

基础用法(直接在AppService中创建连接)

private readonly IConfiguration _configuration;

public YourAppService(IConfiguration configuration)
{
    _configuration = configuration;
}

public async Task<YourDataModel> FetchDataAsync(int itemId)
{
    var connString = _configuration.GetConnectionString("YourConnStringName");
    using (IDbConnection db = new SqlConnection(connString))
    {
        // 这里写你的Dapper业务逻辑,比如查询
        var data = await db.QueryFirstOrDefaultAsync<YourDataModel>(
            "SELECT * FROM YourTable WHERE Id = @ItemId", 
            new { ItemId = itemId }
        );
        return data;
    }
}

进阶优化:依赖注入 IDbConnection

为了让代码更符合依赖注入原则,也更便于测试,你可以在项目的启动类(比如Program.cs)中注册IDbConnection服务:

builder.Services.AddScoped<IDbConnection>(sp => 
    new SqlConnection(sp.GetRequiredService<IConfiguration>().GetConnectionString("YourConnStringName")));

之后在你的AppService中直接注入IDbConnection,就不用每次手动创建连接了:

private readonly IDbConnection _dbConnection;

public YourAppService(IDbConnection dbConnection)
{
    _dbConnection = dbConnection;
}

public async Task<YourDataModel> FetchDataAsync(int itemId)
{
    var data = await _dbConnection.QueryFirstOrDefaultAsync<YourDataModel>(
        "SELECT * FROM YourTable WHERE Id = @ItemId", 
        new { ItemId = itemId }
    );
    return data;
}

注意:一定要在Azure App Service门户的配置 > 连接字符串中正确添加你的连接信息,选择对应的数据库类型(比如SQL Server),App Service会自动将这些配置注入到应用的运行环境中,确保代码能正确读取到。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:29:59