1 Development
2 Staging
3 Production.
if (!app.Environment.IsDevelopment()){// do something}
IWebHostEnvironment接口有3个方法判断宿主环境
if (!app.Environment.IsDevelopment()){// do something}if (app.Environment.IsStaging()){// do something}if (!app.Environment.IsProduction()){// do something}

我们点击链接,这时会弹出对话框,我们可以看到左侧选项有三种启动模式,我们选择https,我们可以看到当前宿主环境变量ASPNETCORE_ENVIRONMENT设置了Development的值,你可以把这个值修改为下面三个中的任何一个:
1 Development
2 Staging
3 Production

{"profiles": {"http": {"commandName": "Project","launchBrowser": true,"environmentVariables": {"ASPNETCORE_ENVIRONMENT": "Development"},"dotnetRunMessages": true,"applicationUrl": "http://localhost:5041"},"https": {"commandName": "Project","launchBrowser": true,"environmentVariables": {"ASPNETCORE_ENVIRONMENT": "Development"},"dotnetRunMessages": true,"applicationUrl": "https://localhost:7034;http://localhost:5041"},"IIS Express": {"commandName": "IISExpress","launchBrowser": true,"environmentVariables": {"ASPNETCORE_ENVIRONMENT": "Development"}}},"iisSettings": {"windowsAuthentication": false,"anonymousAuthentication": true,"iisExpress": {"applicationUrl": "http://localhost:1894","sslPort": 44305}}}
你也可以直接编辑json文件,不需要通过Properties页面来编辑环境变量,我们将https运行模式下ASPNETCORE_ENVIRONMENT修改为Production
"ASPNETCORE_ENVIRONMENT": "Production"我们将前面创建的中间件让它们在生产环境中执行
if (app.Environment.IsProduction()){app.UseMiddleware<ResponseEditingMiddleware>();app.UseMiddleware<RequestEditingMiddleware>();app.UseMiddleware<ShortCircuitMiddleware>();app.UseMiddleware<ContentMiddleware>();}
9 在控制器中获取宿主环境&WebRootPath
我们可以获取宿主环境的变量,通过将IWebHostEnvironment注入到控制器,接下来,我们能够使用env.IsDevelopment(), env.IsStaging()和env.IsProduction()方法判断当前宿主的环境变量
如下代码所示:
namespace AspNetCore.Configuration.Controllers{public class SomeController : Controller{private IWebHostEnvironment _env;public SomeController(IWebHostEnvironment hostingEnvironment){_env = hostingEnvironment;}public IActionResult Index(){if (_env.IsDevelopment()){// do something}if (_env.IsStaging()){// do something}if (_env.IsProduction()){// do something}return View();}}}
<img src="@ViewBag.ImagePath" />10 使用UseStaticFiles中间件提供静态文件服务
app.UseStaticFiles();app.UseRouting();
总结