[转]ASP.NET Core 指定环境发布(hosting environment)
2017-12-19 16:05
666 查看
本文转自:https://www.cnblogs.com/xishuai/p/asp-net-core-set-hosting-environment-with-publish.html
ASP.NET Core 应用程序发布命令:
发布示例命令(生成在
上面命令并没有指定
怎么解决上面的问题,很简单,指定下开发机或者服务器的
其实,我们使用 VS 2017 F5 调试项目的时候,也会默认设置
因为上面配置中,
那我们怎么在服务器上设置
或者(需要管理员权限)
Windows 设置环境命令后,需要重新再开一个命令行
参考资料:
dotnet-publish
Working with multiple environments
How to set the hosting environment in ASP.NET Core
ASP.NET Core 应用程序发布命令:
dotnet publish [<PROJECT>] [-f|--framework] [-r|--runtime] [-o|--output] [-c|--configuration] [--version-suffix] [-v|--verbosity] [-h|--help]
发布示例命令(生成在
bin/release/netcoreapp1.1/publish目录下):
dotnet publish -c release
上面命令并没有指定
EnvironmentName发布,什么意思呢?比如 ASP.NET Core 应用程序中的
appsettings.json配置,测试环境和生产环境配置并不相同(比如数据库连接字符串),如果用上面的发布命令,我们还需要手动拷贝下不同环境的
appsettings.json文件,以后要更改了,还需要再进行发布更新,很麻烦。
怎么解决上面的问题,很简单,指定下开发机或者服务器的
ASPNETCORE_ENVIRONMENT环境变量,设置环境变量之后,执行
dotnet *.dll启动程序的时候,ASP.NET Core 会自动加载此环境变量对应的
appsettings.*.json文件,比如
appsettings.Production.json。
其实,我们使用 VS 2017 F5 调试项目的时候,也会默认设置
ASPNETCORE_ENVIRONMENT环境变量的,比如 ASP.NET Core 应用程序中的
launchSettings.json示例配置:
"profiles": { "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "launchUrl": "api/values", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } }, "AspNetCore.Samples": { "commandName": "Project", "launchBrowser": true, "launchUrl": "api/values", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" }, "applicationUrl": "http://localhost:59522" } }
Startup示例配置:
public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) .AddEnvironmentVariables(); Configuration = builder.Build(); }
因为上面配置中,
ASPNETCORE_ENVIRONMENT设置的是
Development,我们在使用 VS 2017 F5 调试项目,会加载和使用项目下的
appsettings.Development.json配置文件,如果不存在此文件,ASP.NET Core 默认会使用
appsettings.json配置文件。
那我们怎么在服务器上设置
ASPNETCORE_ENVIRONMENT环境变量呢?很简单,敲个命令就可以了。
1. Windows 服务器设置
命令行:>setx ASPNETCORE_ENVIRONMENT "Development" SUCCESS: Specified value was saved.
或者(需要管理员权限)
>setx ASPNETCORE_ENVIRONMENT "Development" /M SUCCESS: Specified value was saved.
PowerShell命令:
$Env:ASPNETCORE_ENVIRONMENT = "Prodction"
Windows 设置环境命令后,需要重新再开一个命令行
dotnet *.dll启动项目,才会有效。
2. MacOS/Linux 服务器设置
命令行:export ASPNETCORE_ENVIRONMENT=development
dotnet *.dll启动项目的时候,我们可以看到当前的
Hosting environment,以便检查是否正确,示例:
> dotnet AspNetCore.Samples.dll Hosting environment: Prodtction Content root path: C:\Users\yuezh\Desktop\Demo\AspNetCore.Samples Now listening on: http://*:5003 Application started. Press Ctrl+C to shut down.
参考资料:
dotnet-publish
Working with multiple environments
How to set the hosting environment in ASP.NET Core
相关文章推荐
- ASP.NET Core 指定环境发布(hosting environment)
- ASP.NET Core 指定环境发布(hosting environment)
- ASP.NET Core 指定环境发布(hosting environment)
- ASP.NET Core程序发布到Linux生产环境详解
- Jexus 5.8.2正式发布! 为Asp.Net Core生产环境提供平台支持
- 发布ASP.NET Core程序到Linux生产环境
- Jexus 5.8.2 正式发布为Asp.Net Core进入生产环境提供平台支持
- 发布Silverlight,报错 <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
- 用"hosting.json"配置ASP.NET Core站点的Hosting环境
- ASP.NET Core 发布至Linux生产环境 Ubuntu 系统
- Jexus 5.8.2 Beta1发布:为Asp.Net Core进入生产环境提供平台支持
- Jexus 5.8.2 正式发布为Asp.Net Core进入生产环境提供平台支持
- 用"hosting.json"配置ASP.NET Core站点的Hosting环境
- Jexus 5.8.2 正式发布为Asp.Net Core进入生产环境提供平台支持
- ASP.NET Core 发布至Linux生产环境 Ubuntu 系统
- 2.安装asp.net core环境
- 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(十)-- 发布(Windows)
- windows/Linux下设置ASP.Net Core开发环境并部署应用
- ASP.NET Core "完整发布,自带运行时" 到jexus
- ASP.NET Core 网站发布到Linux服务器