如何访问 Blazor 服务器中的 appsettings.json 数据

Tri*_*ast 2 c# appsettings blazor blazor-server-side

我正在尝试在 blazor 服务器应用程序的后台服务中访问存储在 appsettings.json 文件中的数据,但大多数有关如何在线执行此操作的插图都是基于 Blazor 的 Webassemble 配置。我想我应该使用 Microsoft.Extensions.Configuration 包,但我不太清楚如何实现它。

下面是后台服务及其基本代码

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text.Json;
using System.Threading.Tasks;
using System.Timers;
using log4net;
using System.Net;
using System.IO;
using System.Data.SqlClient;
using Microsoft.Extensions.Configuration;

namespace BlazorServerApp
{
    public class JobExecutedEventArgs : EventArgs { }
    public class PeriodicExecutor : IDisposable
    {
        Timer _Timer;
        bool _Running;

        public void StartExecuting()
        {
            if (!_Running)
            {
                // Initiate a Timer
                _Timer = new Timer();
                _Timer.Interval = 5000;
                _Timer.Elapsed += HandleTimer;
                _Timer.AutoReset = true;
                _Timer.Enabled = true;

                _Running = true;
            }
        }
        void HandleTimer(object source, ElapsedEventArgs e)
        {
            // Execute required job
            //connect to the appropriate SQL database
            var connectionString = "connection";
            //create connection variables for the two main SQL operations we will be doing
            using var connectionUpdate = new SqlConnection(connectionString);
            using var connectionCreate = new SqlConnection(connectionString);
            while (true)
            {
                Parallel.Invoke(
                () => createSurveyQueueEntries(connectionCreate),
                () => updateSurveyQueue(connectionUpdate));
            }
            // Notify any subscribers to the event
            OnJobExecuted();
        }
        public void Dispose()
        {
            if (_Running)
            {
                _Timer?.Dispose();
            }
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

我想获取 appsetting.json 中定义的 connectionString 并用它来设置方法connectionString中的变量HandleTimer()

下面是appsettings.json文件

{
  "connectionString": "connection",
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*"
}

Run Code Online (Sandbox Code Playgroud)

任何详细的指导将不胜感激。

Nb7*_*777 11

如果您正在从事某些课程,例如创建服务,则需要IConfiguration添加constructure

using Microsoft.Extensions.Configuration;

private readonly IConfiguration configuration;
public PeriodicExecutor(IConfiguration configuration)
{             
 this.configuration = configuration;
}
 //Then you can use it 
var connection=  configuration["connectionString"];
Run Code Online (Sandbox Code Playgroud)

如果您有一个razor组件,那么您需要Inject IConfiguration像这样:

using Microsoft.Extensions.Configuration;

[Inject]
private IConfiguration configuration { get; set; }
//then you can get your connectionString
var connection=  configuration["connectionString"];
Run Code Online (Sandbox Code Playgroud)

您可以阅读更多相关内容