我创建了一个名为EmployeeManagement.的示例ASP.NET核心应用程序该应用程序被明确地配置为out-of-process主机,如下所示,
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
</PropertyGroup>此应用程序的主要目标是显示当前正在运行的进程名。
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/", async context =>
{
await context.Response.WriteAsync(System.Diagnostics.Process.GetCurrentProcess().ProcessName);
});
});
}当我使用dotnet运行应用程序时,它将显示
EmployeeManagement
为什么它不显示dotnet作为进程名?当我们使用dotnet 运行应用程序时,应用程序可能托管并运行在Kestrel服务器中。因此,我假设dotnet.exe应该是托管过程。
如果应用程序配置为InProcess宿主模型。它显示
iisexpress
作为进程名。目标框架是.NET Core3.1版本。
发布于 2020-06-09 07:45:53
从ASP.NET Core3.0开始,将为您当前构建的平台自动生成一个主机exe ("apphost") (除了macOS由于其签名/公证要求),因此您的bin文件夹中的EmployeeManagement.exe将用于运行.NET核心运行时。
如果直接使用dotnet bin\netcoreapp3.1\EmployeeManagement.dll或在csproj中设置以下内容,您应该会看到不同之处:
<PropertyGroup>
<UseAppHost>False</UseAppHost>
</PropertyGroup>https://stackoverflow.com/questions/62276413
复制相似问题