Web.config 将 ASP.NET 核心网络应用程序设置为 ASP.NET 核心网络应用程序中的子应用程序?
Web.config settings for ASP.NET Core web app as a sub-app within a ASP.NET Core web app?
"WebsiteA" 尝试在其中托管另一个应用程序 "API"。使用名为 "services" 的文件夹。从我读过的内容来看,为了让子应用程序正常工作,我必须将我的处理程序移至父配置。所以作为 .NET Core 的新手,我确定我错过了一些简单的东西,但是在父级中设置处理程序是这样的:
<system.webServer>
<handlers>
<add name="aspNetCoreAPI" path="services\*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\websiteA.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" />
<aspNetCoreAPI processPath="dotnet" arguments=".\services\api.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" />
</system.webServer>
似乎 aspNetCoreAPI 标记是一个禁忌,因为应用程序拒绝了格式错误的配置。
理想情况下,web.config 应如何在此类 api 应用程序的子应用程序场景中设置?
是的,所以配置方法完全不正确。将配置保留在 parent 应用程序中并在 child 应用程序中进行简单的处理程序排除(注释掉)使得配置问题发生了奇迹。
Parent:
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\websiteA.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" />
</system.webServer>
Child:
<system.webServer>
<handlers>
<!--<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />-->
</handlers>
<aspNetCore processPath="dotnet" arguments=".\api.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" />
</system.webServer>
它们真正的关键是您需要对 Startup.cs 中的 parent 配置方法做一个真正 总 的补充。 (https://github.com/aspnet/Hosting/issues/416#issuecomment-149046552)
所以我在方法中现有逻辑的底部添加了这个:
app.Map("/services", (app1) => this.Configure1(app1, env, loggerFactory));
在创建的新 Configure1 方法中,我从我的 child 应用程序复制了 Configure 方法:
public void Configure1(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseMvc();
}
我不喜欢我的 parent 应用程序中的 child 应用程序目录路径和 sub-application 逻辑,因为它是一种紧密的耦合,感觉不对。但据我了解,这就是目前的情况。
"WebsiteA" 尝试在其中托管另一个应用程序 "API"。使用名为 "services" 的文件夹。从我读过的内容来看,为了让子应用程序正常工作,我必须将我的处理程序移至父配置。所以作为 .NET Core 的新手,我确定我错过了一些简单的东西,但是在父级中设置处理程序是这样的:
<system.webServer>
<handlers>
<add name="aspNetCoreAPI" path="services\*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\websiteA.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" />
<aspNetCoreAPI processPath="dotnet" arguments=".\services\api.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" />
</system.webServer>
似乎 aspNetCoreAPI 标记是一个禁忌,因为应用程序拒绝了格式错误的配置。
理想情况下,web.config 应如何在此类 api 应用程序的子应用程序场景中设置?
是的,所以配置方法完全不正确。将配置保留在 parent 应用程序中并在 child 应用程序中进行简单的处理程序排除(注释掉)使得配置问题发生了奇迹。
Parent:
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\websiteA.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" />
</system.webServer>
Child:
<system.webServer>
<handlers>
<!--<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />-->
</handlers>
<aspNetCore processPath="dotnet" arguments=".\api.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" />
</system.webServer>
它们真正的关键是您需要对 Startup.cs 中的 parent 配置方法做一个真正 总 的补充。 (https://github.com/aspnet/Hosting/issues/416#issuecomment-149046552)
所以我在方法中现有逻辑的底部添加了这个:
app.Map("/services", (app1) => this.Configure1(app1, env, loggerFactory));
在创建的新 Configure1 方法中,我从我的 child 应用程序复制了 Configure 方法:
public void Configure1(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseMvc();
}
我不喜欢我的 parent 应用程序中的 child 应用程序目录路径和 sub-application 逻辑,因为它是一种紧密的耦合,感觉不对。但据我了解,这就是目前的情况。