ডটনেট কোর 2.0 তে স্টার্টআপ-কনস্ট্রাক্টর কেবলমাত্র একটি আইকনফিগারেশন-প্যারামিটার আশা করে।
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
সেখানে হোস্টিংয়ের পরিবেশ কীভাবে পড়বেন? আমি এটি কনফিগার অ্যাপ্লিকেশন কনফিগারেশনের সময় প্রোগ্রাম-ক্লাসে সঞ্চয় করি (ওয়েবহোস্টের পরিবর্তে সম্পূর্ণ বিল্ডওয়েবহস্ট ব্যবহার করুন re
public class Program
{
public static IHostingEnvironment HostingEnvironment { get; set; }
public static void Main(string[] args)
{
// Build web host
var host = BuildWebHost(args);
host.Run();
}
public static IWebHost BuildWebHost(string[] args)
{
return new WebHostBuilder()
.UseConfiguration(new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("hosting.json", optional: true)
.Build()
)
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.ConfigureAppConfiguration((hostingContext, config) =>
{
var env = hostingContext.HostingEnvironment;
// Assigning the environment for use in ConfigureServices
HostingEnvironment = env; // <---
config
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
if (env.IsDevelopment())
{
var appAssembly = Assembly.Load(new AssemblyName(env.ApplicationName));
if (appAssembly != null)
{
config.AddUserSecrets(appAssembly, optional: true);
}
}
config.AddEnvironmentVariables();
if (args != null)
{
config.AddCommandLine(args);
}
})
.ConfigureLogging((hostingContext, builder) =>
{
builder.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
builder.AddConsole();
builder.AddDebug();
})
.UseIISIntegration()
.UseDefaultServiceProvider((context, options) =>
{
options.ValidateScopes = context.HostingEnvironment.IsDevelopment();
})
.UseStartup<Startup>()
.Build();
}
পিপীলিকা এটির পরে এটি কনফিগার সার্ভিসগুলিতে পড়ে:
public IServiceProvider ConfigureServices(IServiceCollection services)
{
var isDevelopment = Program.HostingEnvironment.IsDevelopment();
}
IHostingEnvironment
শুধু কনফিগার সার্ভিসগুলিতে ইনজেকশন দেওয়া যাবে না ? ভুল? বা কোন কারণ সম্পর্কে আমাদের সচেতন হওয়া দরকার?