You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在IIS Express中调试ASP.NET根应用下的ASP.NET Core子应用

ASP.NET MVC 5根应用下托管ASP.NET Core 8子应用的调试问题

环境与现有部署

在IIS Express 10中已部署ASP.NET MVC 5(.NET Framework 4.7.2)根应用及多个同框架子应用,运行正常,对应的applicationhost.config核心配置如下:

<site name="web_site_01" id="1">
 <application path="/" applicationPool="Clr4IntegratedAppPool">
   <virtualDirectory path="/" physicalPath="c:\c\Root\WebApp" />
 </application>
 <application path="/subbapp01" applicationPool="Clr4IntegratedAppPool">
  <virtualDirectory path="/" physicalPath="c:\c\subbapp01\WebApp" />
  </application>
 <application path="/subbapp02" applicationPool="Clr4IntegratedAppPool">
  <virtualDirectory path="/" physicalPath="c:\c\subbapp02\WebApp" />
 </application>
 <bindings>
  <binding protocol="http" bindingInformation="*:5000:localhost" />
  <binding protocol="https" bindingInformation="*:5001:localhost" />
 </bindings>
</site>

后续新增一个ASP.NET Core 8.0 WebAPI,以进程内托管模式作为根应用的子应用部署,通过配置无托管应用池实现了正常运行,修改后的applicationhost.config核心配置如下:

<applicationPools>
  <add name="Clr4IntegratedAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
  <add name="NoManagedApi_subappNetCore01" managedRuntimeVersion="" />
  <applicationPoolDefaults managedRuntimeVersion="v4.0">
    <processModel loadUserProfile="true" setProfileEnvironment="false" />
  </applicationPoolDefaults>
</applicationPools>
<sites>
 <site name="web_site_01" id="1">
  <application path="/" applicationPool="Clr4IntegratedAppPool">
    <virtualDirectory path="/" physicalPath="c:\c\Root\WebApp" />
  </application>
  <application path="/subapp01" applicationPool="Clr4IntegratedAppPool">
   <virtualDirectory path="/" physicalPath="c:\c\subapp01\WebApp" />
   </application>
  <application path="/subapp02" applicationPool="Clr4IntegratedAppPool">
   <virtualDirectory path="/" physicalPath="c:\c\subapp02\WebApp" />
  </application>
  <application path="/subappNetCore01" applicationPool="NoManagedApi_subappNetCore01">
   <virtualDirectory path="/" physicalPath="c:\c\subappNetCore01\Api" />
  </application>
  <bindings>
   <binding protocol="http" bindingInformation="*:5000:localhost" />
   <binding protocol="https" bindingInformation="*:5001:localhost" />
  </bindings>
 </site>
</sites>

调试问题

在Visual Studio 2022 17.8中调试时遇到以下问题:

  • 以根项目启动调试时,调试器不会自动加载ASP.NET Core子应用;
  • IIS Express进程已被VS调试占用,无法手动附加调试器到该进程,导致无法调试ASP.NET Core子应用;
  • 若切换为进程外托管模式,Core应用会在独立端口启动,违背了作为根应用子应用部署的需求。

ASP.NET Core应用相关配置

web.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <connectionStrings>
      <clear />
    </connectionStrings>
    <appSettings>
      <clear />
    </appSettings>
    <system.webServer>
      <handlers>
        <remove name="aspNetCore" />
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
        <aspNetCore processPath="dotnet"
                  arguments=".\bin\Debug\net8.0\subappNetCore01.dll"
                  stdoutLogEnabled="true"
                  stdoutLogFile="c:\temp\logs\stdout" 
                  hostingModel="inprocess" >
        <environmentVariables>
          <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
        </environmentVariables>
      </aspNetCore>
      <modules>
        <!-- Remove All managed modules because app pool is "no managed" -->
        <remove name="OutputCache" />
        <remove name="Session" />
        <remove name="WindowsAuthentication" />
        <remove name="DefaultAuthentication" />
        <remove name="RoleManager" />
        <remove name="UrlAuthorization" />
        <remove name="FileAuthorization" />
        <remove name="AnonymousIdentification" />
        <remove name="Profile" />
        <remove name="UrlMappingsModule" />
        <remove name="UrlRoutingModule-4.0" />
        <remove name="ScriptModule-4.0" />
        <remove name="HtmlMinificationModule" />
        <remove name="TelemetryCorrelationHttpModule" />
        <remove name="ApplicationInsightsWebTracking" />
        <!-- Remove Incompatilbe native modules -->
        <remove name="CustomErrorModule" />
        <remove name="DefaultDocumentModule" />
        <remove name="DirectoryListingModule" />
        <remove name="FileCacheModule" />
        <remove name="HttpCacheModule" />
        <remove name="ServerSideIncludeModule" />
        <remove name="StaticCompressionModule" />
        <remove name="StaticFileModule" />
        <remove name="WebDAV" />
      </modules>
    </system.webServer>
  </location>
</configuration>
<!--ProjectGuid: 7d3ad76a-f767-4d6f-a7b8-b61b422076c0-->

Program.cs

var builder = WebApplication.CreateBuilder(args);
...
builder.WebHost.UseIIS();
var app = builder.Build();
...
app.UsePathBase("/subappNetCore01");
...
app.MapControllers();
app.Run();

已尝试的方案

  • 调整ASP.NET Core应用的web.config配置;
  • 切换进程外托管模式测试;
  • 将Core应用单独或与根应用组合设置为VS启动项;
    以上尝试均无法实现自动加载调试器或成功附加调试器。

提问

此部署调试场景是否可行?是否遗漏了关键配置?


内容的提问来源于stack exchange,提问作者Dim Tsoumg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 20:13:11