.NET核心控制器类。在声明中调用IConfiguration GetConnectionString会引发编译错误

.NET核心控制器类。在声明中调用IConfiguration GetConnectionString会引发编译错误,.net,.net-core,.net,.net Core,为什么这个代码会出错?有什么解决办法吗?我需要使用配置中的连接字符串设置我的公共字符串ODataBaseAPIUrl变量,这样我就可以在控制器类的任何方法中使用它 namespace AlioPosApi.Controllers { [Route("api/[controller]")] [ApiController] public class PosFunctionsController : ControllerBase { private re

为什么这个代码会出错?有什么解决办法吗?我需要使用配置中的连接字符串设置我的公共字符串ODataBaseAPIUrl变量,这样我就可以在控制器类的任何方法中使用它

namespace AlioPosApi.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class PosFunctionsController : ControllerBase
    {
        private readonly IConfiguration configuration;
        public PosFunctionsController(IConfiguration config)
        {
            this.configuration = config;

        }
//THIS NEXT LINE HAS A //COMPILE ERROR!!
//"cannot reference PosFunctionsController.configuration"
        public string ODataBaseAPIUrl = configuration.GetConnectionString("ODataBaseAPIUrl"); 
...
以下是appsettings.json的内容:

{
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "ConnectionStrings": {
    "ODataBaseAPIUrl" : "http://localhost:7048/DynamicsNAV110/api/beta/companies(kj4081cc-de07-41f9-9f7a-6acdaf296fa4)/"
  },
  "AllowedHosts": "*"
}

如下所示修复代码

你不能那样做作业。您需要通过依赖项注入在构造函数中实现它

[Route("api/[controller]")]
[ApiController]
public class PosFunctionsController : ControllerBase
{
    private readonly IConfiguration configuration;
    private readonly string oDataBaseAPIUrl;
    public PosFunctionsController(IConfiguration config)
    {
        this.configuration = config;
        this.oDataBaseAPIUrl = configuration.GetConnectionString("ODataBaseAPIUrl");
    }

如下所示修复代码

你不能那样做作业。您需要通过依赖项注入在构造函数中实现它

[Route("api/[controller]")]
[ApiController]
public class PosFunctionsController : ControllerBase
{
    private readonly IConfiguration configuration;
    private readonly string oDataBaseAPIUrl;
    public PosFunctionsController(IConfiguration config)
    {
        this.configuration = config;
        this.oDataBaseAPIUrl = configuration.GetConnectionString("ODataBaseAPIUrl");
    }
字段是在构造函数运行之前初始化的,这就是为什么不能使用
configuration

您可以在构造函数中初始化值:

public PosFunctionsController(IConfiguration config)
{
    this.configuration = config;
    ODataBaseAPIUrl = configuration.GetConnectionString("ODataBaseAPIUrl");
}
或者更改字段,使其不进行初始化,而是在每次调用时获取值:

public string ODataBaseAPIUrl => configuration.GetConnectionString("ODataBaseAPIUrl");
字段是在构造函数运行之前初始化的,这就是为什么不能使用
configuration

您可以在构造函数中初始化值:

public PosFunctionsController(IConfiguration config)
{
    this.configuration = config;
    ODataBaseAPIUrl = configuration.GetConnectionString("ODataBaseAPIUrl");
}
或者更改字段,使其不进行初始化,而是在每次调用时获取值:

public string ODataBaseAPIUrl => configuration.GetConnectionString("ODataBaseAPIUrl");