为什么当我通过 Visual Studio 2017 (15.7.3) 开始调试时会创建 IIS 10 应用程序池?
Why an IIS 10 Application pool is created when I start debug through Visual Studio 2017 (15.7.3)?
编辑 1:我在使用相同配置的 ASP NET Core 2.0 应用程序中遇到了同样的问题,所以这排除了框架本身。下一个潜在的罪魁祸首:.NET Core 2.1 SDK (v2.1.300) 或 错误的 Visual Studio 更新 (15.7.3)。
当我调试 API.
时,IIS 10 和 ASP NET Core 2.1.0 出现一个奇怪的问题
我有一个 IIS 网站“api.local”和一个 ASP NET Core 2.0 应用程序“v1” " 在里面。
"v1" 应用程序配置为使用我创建网站时生成的 "api.local" 应用程序池。此应用程序池配置如下:
- .Net CLR 版本:无托管代码
- 托管管道模式:集成
- 身份:应用程序池身份
为了在Visual Studio 2017(15.7.3)中进行调试,我使用了下面的launchSettings.json
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iis": {
"applicationUrl": "https://api.local/v1",
"sslPort": 0
}
},
"profiles": {
"IIS": {
"commandName": "IIS",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"launchBrowser": true,
"launchUrl": "graphiql/"
}
}
}
一切正常。
现在,每次我开始调试时,都会创建一个名为 "v1 AppPool" 的新 IIS 应用程序池(然后是 "v1 AppPool 2" 等等)和"v1" 网站配置更改为使用这个新创建的 IIS 应用程序池。
我不确定从什么时候开始,但我认为它是在我将以下 nuget 包更新到 2.1.0 版本后开始发生的:
<PackageReference Include="Microsoft.AspNetCore.Authorization" Version="2.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Diagnostics" Version="2.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Localization" Version="2.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Server.IISIntegration" Version="2.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="2.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Server.Kestrel.Https" Version="2.1.0" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.1.0" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="2.1.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.AzureKeyVault" Version="2.1.0" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="2.1.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Configuration" Version="2.1.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.1.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.1.0" />
<PackageReference Include="Newtonsoft.Json" Version="11.0.2" />
作为参考,这是我的 WebHostBuilder 初始化:
public static IWebHost BuildWebHost(string[] args) =>
new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.ConfigureLogging((hostingContext, logging) =>
{
if (hostingContext.HostingEnvironment.IsDevelopment())
{
logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
logging.AddConsole();
logging.AddDebug();
}
})
.UseIISIntegration()
.UseDefaultServiceProvider((context, options) =>
{
options.ValidateScopes = context.HostingEnvironment.IsDevelopment();
})
.UseStartup<Startup>()
.Build();
有人知道我可以做些什么来解决这个问题吗?
我没有很好的答案。我遇到了与您描述的相同的问题。我将我的 VS 更新到 15.8.1,问题停止了。所以我认为问题出在 VS 上。
编辑 1:我在使用相同配置的 ASP NET Core 2.0 应用程序中遇到了同样的问题,所以这排除了框架本身。下一个潜在的罪魁祸首:.NET Core 2.1 SDK (v2.1.300) 或 错误的 Visual Studio 更新 (15.7.3)。
当我调试 API.
时,IIS 10 和 ASP NET Core 2.1.0 出现一个奇怪的问题我有一个 IIS 网站“api.local”和一个 ASP NET Core 2.0 应用程序“v1” " 在里面。
"v1" 应用程序配置为使用我创建网站时生成的 "api.local" 应用程序池。此应用程序池配置如下:
- .Net CLR 版本:无托管代码
- 托管管道模式:集成
- 身份:应用程序池身份
为了在Visual Studio 2017(15.7.3)中进行调试,我使用了下面的launchSettings.json
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iis": {
"applicationUrl": "https://api.local/v1",
"sslPort": 0
}
},
"profiles": {
"IIS": {
"commandName": "IIS",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"launchBrowser": true,
"launchUrl": "graphiql/"
}
}
}
一切正常。
现在,每次我开始调试时,都会创建一个名为 "v1 AppPool" 的新 IIS 应用程序池(然后是 "v1 AppPool 2" 等等)和"v1" 网站配置更改为使用这个新创建的 IIS 应用程序池。
我不确定从什么时候开始,但我认为它是在我将以下 nuget 包更新到 2.1.0 版本后开始发生的:
<PackageReference Include="Microsoft.AspNetCore.Authorization" Version="2.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Diagnostics" Version="2.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Localization" Version="2.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Server.IISIntegration" Version="2.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="2.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Server.Kestrel.Https" Version="2.1.0" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.1.0" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="2.1.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.AzureKeyVault" Version="2.1.0" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="2.1.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Configuration" Version="2.1.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.1.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.1.0" />
<PackageReference Include="Newtonsoft.Json" Version="11.0.2" />
作为参考,这是我的 WebHostBuilder 初始化:
public static IWebHost BuildWebHost(string[] args) =>
new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.ConfigureLogging((hostingContext, logging) =>
{
if (hostingContext.HostingEnvironment.IsDevelopment())
{
logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
logging.AddConsole();
logging.AddDebug();
}
})
.UseIISIntegration()
.UseDefaultServiceProvider((context, options) =>
{
options.ValidateScopes = context.HostingEnvironment.IsDevelopment();
})
.UseStartup<Startup>()
.Build();
有人知道我可以做些什么来解决这个问题吗?
我没有很好的答案。我遇到了与您描述的相同的问题。我将我的 VS 更新到 15.8.1,问题停止了。所以我认为问题出在 VS 上。