فایل appsetting در نسخه های core معادل فایل webconfig در نسخه های قدیمی تر می باشد که برای پیکر بندی تنظیمات کلی پروژه مانند تنظیمات رشته اتصال و داده هایی که در طول پروژه به آن نیاز داریم می باشد.
در این آموزش قصد داریم با روشهای متفاوت داده های درون فایل appseting را بازیابی کنیم.
پس از ایجاد پروژه وارد قسمت appsetting می شویم و اطلاعات کاربری مانند Fullname و Mobile را درون آن با نام Appsetting بصورت زیر درج می کنیم.
"AppSettings": {
"Fullname": "mohammad mahdavi",
"Mobile": "09117879302"
},
اکنون برای خواندن اطلاعات درج شده توسط برنامه به شکل زیر عمل میکنیم.
یک پروژه از نوع classlibrary ایجاد می کنیم و سپس یک اینترفیس و کلاسی متناظر با آن را بصورت زیر به ان اضافه میکنیم.
public interface IInformation
{
public string Fullname { get; }
public string Mobile { get; }
}
public class Information : IInformation
{
private IConfiguration _configuration;
public Information(IConfiguration configuration)
{
_configuration = configuration;
}
public string Fullname => _configuration["AppSettings:Fullname"];
public string Mobile => _configuration["AppSettings:Mobile"];
}
با توجه به دستورات بالا از طریق IConfiguration می توانیم به داده های درون فایل appsetting دسترسی داشته باشیم.
اکنون با استفاده از مفهوم dependency injection دستورات زیر را درون program.cs قرار میدهیم.
builder.Services.AddSingleton<IInformation, Information>();
جهت خواندن اطلاعات کاربری ثبت شده درون فایل appsetting می توانیم با توجه به دستورات زیر در اکشن Index در برنامه استفاده نماییم.
public class HomeController : Controller
{
private IInformation _info;
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger, IInformation info)
{
_logger = logger;
_info = info;
}
public IActionResult Index()
{
var fullname = _info.Fullname;
var mobile=_info.Mobile;
return View();
}
}
در روش دوم برای خواندن اطلاعات فایل appsetting بصورت زیر عمل می کنیم.
یک کلاس با نام MyInfoClass بصورت زیر ایجاد می کنیم.
public class MyInfoClass
{
public string Fullname { get; set; }
public string Mobile { get; set; }
}
سپس دستور زیر را درون فایل Program.cs مینویسیم.
builder.Services.Configure<MyInfoClass>(builder.Configuration.GetSection("AppSettings"));
اکنون با استفاده از کلاس IOptions جهت خواندن اطلاعات و نگاشت آن به شیئ کلاس MyInfoClass بصورت زیر عمل می کنیم.
public class HomeController : Controller
{
private IOptions<MyInfoClass> _options;
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger, IOptions<MyInfoClass> options )
{
_logger = logger;
_options = options;
}
public IActionResult Index()
{
var fullname2 = _options.Value.Fullname;
var mobile2 = _options.Value.Mobile;
return View();
}
}