C# 如何从appsettings.json到BusinessLayer(我的助手类)MVC 6获取值
我的控制器,通过调用API实习生返回用户详细信息C# 如何从appsettings.json到BusinessLayer(我的助手类)MVC 6获取值,c#,asp.net-core-mvc,C#,Asp.net Core Mvc,我的控制器,通过调用API实习生返回用户详细信息 public class HomeController : Controller { public ActionResult AccountDetails(int userId) { return this.Content(new WebHelperService().GetAccountDetails(userId)), "application/
public class HomeController : Controller
{
public ActionResult AccountDetails(int userId)
{
return this.Content(new WebHelperService().GetAccountDetails(userId)), "application/json");
}
}
public class WebHelperService
{
private string url = null;
public WebHelperService()
{
//url = ConfigurationManager.ConnectionString["ExternalApiUrl"].ToString();
// ConfigurationManager is not available in .net core.
//So How do i read ExternalApiUrl from appsettings.josn,Which is the best way
}
public string GetAccountDetails(int userId)
{
return WebCall("{'userId':" + userId + "}");
}
private string WebCall(string data)
{
WebRequest request = WebRequest.Create(url);
// get the data from url and returns it
}
}
让我们暂时忘记您的特定用例,只谈一下.NETCore中的一般设置。重要的是,我认为您正在尝试从类中访问原始AppSettings,但实际上您想要做的是将它们DI到类中。那我们就这么做吧 假设您有一个类似于以下内容的appSettings.json:
{
"myConfiguration": {
"myProperty": true
}
}
现在您需要创建一个POCO来保存这些设置。大概是这样的:
public class MyConfiguration
{
public bool MyProperty { get; set; }
}
在startup.cs中,应该有一个名为“ConfigureServices”的方法。在这里,您将调用“配置”您的设置,如下所示
public void ConfigureServices(IServiceCollection services)
{
services.Configure<MyConfiguration>(Configuration.GetSection("myConfiguration"));
}
进一步阅读:
public class MyClass : IMyClass
{
private readonly MyConfiguration _myConfiguration;
public MyClass(IOptions<MyConfiguration> myConfiguration)
{
_myConfiguration = myConfiguration.Value;
}
}
public void ConfigureServices(IServiceCollection services)
{
//services.Configure<MyConfiguration>(Configuration.GetSection("myConfiguration"));
services.AddSingleton(Configuration.GetSection("myConfiguration").Get<MyConfiguration>());
}
public class MyClass : IMyClass
{
private readonly MyConfiguration _myConfiguration;
public MyClass(MyConfiguration myConfiguration)
{
_myConfiguration = myConfiguration;
}
}