Member 12586110 Ответов: 1

C# получает значения из appsettings в ASP.NET сердечник


Привет, я работаю над написанием веб-api в asp.net ядро и попытка прочитать значения из appsettings.json "AppSettings" и получить ошибку "ССЫЛКА на объект требуется для нестатического поля, метода или свойства".

параметр appsettings.в JSON
{
    "AppSettings": {
        "User": "test",
        "Password": "0123abcd"
    }
}


Автозагрузки.в CS
public IConfiguration Configuration { get; }

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
    services.AddSingleton<IConfiguration>(Configuration);
    services.Configure<AppSettings>(Configuration.GetSection("AppSettings"));
}


Что я уже пробовал:

Когда я пытаюсь прочитать имя пользователя и пароль appsettings.json в классе безопасности, как показано ниже. Я сталкиваюсь с тем, что "ссылка на объект требуется для нестатического поля, метода или свойства".

public class security
{
    private AppSettings AppSettings { get; set; }

    public security(IOptions<AppSettings> settings)
    {
        AppSettings = settings.Value;
    }
    public static bool Login(string username, string password)
    {
        if (username == AppSettings.User && password == AppSettings.Password)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

1 Ответов

Рейтинг:
12

member33

Ваш метод входа в систему не может быть статическим, если вы используете свойство класса

Снятия статического метода


George Swan

Метод входа в систему может быть упрощен до
возвращать имя == AppSettingsName &&усилителя; пароль == AppSettingsPassword;

Member 12586110

Спасибо @member33 & @ George Swan.

@member33, не могли бы вы объяснить, почему нельзя использовать AppSettings со статическими методами?

Спасибо.

member33

AppSettings инициализируются только при создании нового экземпляра класса security. Когда вы используете статические методы/ access, вы не создаете экземпляр класса, и именно поэтому AppSettings был равен null

karthime

Привет, Как создать экземпляр класса Security из controller.cs. Я не знаю, как передать параметр конструктора для создания экземпляра этого класса.

Member 12586110

Спасибо @member33.