一、环境
目标框架:.NET Core3.1
ASP.NET Core是一个全新的Web开发平台,微软在它上面构建了MVC、SingalR、GRPC、Orleans
这样广泛使用的Web框架,我们先以MVC框架为例介绍利用ASP.NET Core构建项目的常见名词。这篇文章介绍启动配置文件launchSettings.json
ASP.NET Core MVC项目文件夹解读
二、Properties
——launchSettings.json
启动配置文件,你可以在项目中“Properties
”文件夹中找到该文件。launchSettings.json
文件是ASP.NET Core应用特有的配置标准,用于应用的启动准备工作,包括环境变量,开发端口等。在launchSettings.json
文件中进行配置和右键项目—属性中所提交的更改的效果是一样的,并且支持同步更新。此文件设置了Visual Studio可以启动的不同环境,以下是示例项目中launchSettings.json
文件生成的默认代码:
{
"$schema": "http://json.schemastore.org/launchsettings.json",
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:7349",
"sslPort": 44325
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"NET5.Api": {
"commandName": "Project",
"dotnetRunMessages": "true",
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
我们可以看出该配置文件默认添加了两个节点,其中“iisSettings
”用于设置IIS相关的选项,而“profiles
”节点定义了一系列用于表示应用启动场景的Profile
。初始的launchSettings.json
文件会默认创建两个Profile
,一个被命名为“IIS Express
”,另一个则使用当前项目名称来命名(“NET5.Api”)。这两个节点分别对应Visual Stuido的开始调试按钮的下拉选项,您可以选择对应的选项来启动应用程序。
三、launchSettings.json
代码说明
每一个Profile
相当于定义了应用的启动场景,相关的设置包括应用启动的方式、环境变量和URL等,具体的设置包括:
1、iisSettings
是IIS的配置
windowsAuthentication
:IIS是否启用 Windows 身份验证anonymousAuthentication
:IIS是否启用匿名身份验证applicationUrl
:指定 IIS 服务器的地址sslPort
:指定IIS 服务器的https端口
2、profiles
中的IIS Express
配置
launchBrowser
:一个布尔类型的开关,表示应用程序的时候是否自动启动浏览器launchUrl
:如果launchBrowser
被设置为true
,浏览器采用的初始化路径通过该属性进行设置。environmentVariables
:该属性用来设置环境变量。ASP.NET Core应用中正是利用这样一个环境变量来表示当前的部署环境。多环境的配置可以通过ASPNETCORE_ENVIRONMENT
切换。commandName
:启动当前应用程序的命令类型,有效的选项包括IIS、IISExpress
和Project
,前三个选项分别表示采用IIS、IISExpress
和指定的可执行文件(.exe
)来启动应用程序。如果我们使用dotnet run
命令来启动程序,对应Profile的启动命名名称应该设置为Project
。applicationUrl
:应用程序采用的URL列表,多个URL之间采用分号(“;
”)进行分隔。
3、profiles
中的NET5.Api配置
- 相比
IIS Express
,这里多了一个dotnetRunMessages
,它是一个布尔值,是否在运行时给予反馈信息。
四、项目的启动
1、不使用launchSettings.json
文件
如果在执行dotnet run
命令的时候不希望加载launchSettings.json
文件,我们可以通过显式指定命令行参数--no-launch-profile
来实现。如下图所示,我们在执行dotnet run
命令时指定了--no-launch-profile
参数,所以应用会采用KestrelServer
默认的监听地址(http://localhost:5000
和https://localhost:5001
)。由于launchSettings.json
根本就没有被加载,所以当前执行环境从Development
变成了默认的Production
。
2、显式指定URL
如果既不想使用launchSettings.json
文件中定义的URL,也不想使用KestrelServer
默认采用的监听地址,我们可以在应用程序中显式指定应用的URL。如下面的代码片段所示,我们只需要调用IWebHostBuilder
的扩展方法UseUrls
指定一组以分号分隔的URL
即可。
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
namespace NET5.Api
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseKestrel()
.UseUrls("http://192.168.2.112:2314;https//28.16.49.45:3568").
UseStartup<Startup>();
});
}
}
3、项目启动使用的服务器
commandName | AspNetCoreHostingModel 的值 | Internal Web Server (内部服务器) | External Web Server (外部服务器) |
---|---|---|---|
项目 | 忽略托管设置的值 | 只使用一个 Web 服务器 - Kestrel | 只使用一个 Web 服务器 - Kestrel |
IISExpress | 进程内托管(InProcess ) | 只使用一个 Web 服务器 - IIS Express | 只使用一个 Web 服务器 - IIS Express |
IISExpress | 进程外托管(OutOfProcess ) | Kestrel | IIS Express |
IIS | 进程内托管(InProcess ) | 只使用一个 Web 服务器 - IIS | 只使用一个 Web 服务器 - IIS |
IIS | 进程外托管(OutOfProcess ) | Kestrel | IIS |
要获取其它更多属性的详细信息,请转到此链接:http://json.schemastore.org/launchsettings 。