Visual Studio 2019 IIS 配置文件创建 web.config 破坏 Azure 应用服务的文件
Visual Studio 2019 IIS profile creates web.config file that breaks Azure App Service
在 ASP.NET 核心 Web 3.1 项目上使用 Microsoft Visual Studio Community 2019 版本 16.6.3 创建新的调试配置文件时,会创建一个 web.config
文件。
文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="C:\Users\<USER>\Source\Project\Project.Web\bin\Debug\netcoreapp3.1\Project.Web.exe" arguments="" stdoutLogEnabled="false" hostingModel="InProcess">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</location>
</configuration>
使用 web.config 访问站点时出现错误:
AggregateException: One or more errors occurred. (One or more errors
occurred. (The NPM script 'start' exited without indicating that the
create-react-app server was listening for requests. The error output
was: )) System.Threading.Tasks.Task.ThrowIfExceptional(bool
includeTaskCanceledExceptions)
InvalidOperationException: The NPM script 'start' exited without
indicating that the create-react-app server was listening for
requests. The error output was:
Microsoft.AspNetCore.SpaServices.ReactDevelopmentServer.ReactDevelopmentServerMiddleware.StartCreateReactAppServerAsync(string
sourcePath, string npmScriptName, ILogger logger)
我一开始以为 aspNetCore processPath
是罪魁祸首,但考虑到这个错误,它看起来更像是来自 Startup.cs
.
的代码
if (env.IsDevelopment())
{
spa.UseReactDevelopmentServer(npmScript: "start");
}
查看实际部署的文件证实了我的怀疑,这里的路径是相对的。
我需要将 ASPNETCORE_ENVIRONMENT
设置为 Production
。通过创建一个新的 web.release.config
文件解决了这个问题,因为我需要在 ASPNETCORE_ENVIRONMENT
作为 Development
的实际 IIS 上测试应用程序。通过此转换,一切正常:
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!-- To customize the asp.net core module uncomment and edit the following section.
For more info see https://go.microsoft.com/fwlink/?linkid=838655 -->
<!--
<system.webServer>
<handlers>
<remove name="aspNetCore"/>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
</handlers>
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
</system.webServer>
-->
<location>
<system.webServer>
<aspNetCore>
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Production" xdt:Locator="Match(name)" xdt:Transform="SetAttributes" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</location>
</configuration>
来源:
在 ASP.NET 核心 Web 3.1 项目上使用 Microsoft Visual Studio Community 2019 版本 16.6.3 创建新的调试配置文件时,会创建一个 web.config
文件。
文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="C:\Users\<USER>\Source\Project\Project.Web\bin\Debug\netcoreapp3.1\Project.Web.exe" arguments="" stdoutLogEnabled="false" hostingModel="InProcess">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</location>
</configuration>
使用 web.config 访问站点时出现错误:
AggregateException: One or more errors occurred. (One or more errors occurred. (The NPM script 'start' exited without indicating that the create-react-app server was listening for requests. The error output was: )) System.Threading.Tasks.Task.ThrowIfExceptional(bool includeTaskCanceledExceptions)
InvalidOperationException: The NPM script 'start' exited without indicating that the create-react-app server was listening for requests. The error output was: Microsoft.AspNetCore.SpaServices.ReactDevelopmentServer.ReactDevelopmentServerMiddleware.StartCreateReactAppServerAsync(string sourcePath, string npmScriptName, ILogger logger)
我一开始以为 aspNetCore processPath
是罪魁祸首,但考虑到这个错误,它看起来更像是来自 Startup.cs
.
if (env.IsDevelopment())
{
spa.UseReactDevelopmentServer(npmScript: "start");
}
查看实际部署的文件证实了我的怀疑,这里的路径是相对的。
我需要将 ASPNETCORE_ENVIRONMENT
设置为 Production
。通过创建一个新的 web.release.config
文件解决了这个问题,因为我需要在 ASPNETCORE_ENVIRONMENT
作为 Development
的实际 IIS 上测试应用程序。通过此转换,一切正常:
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!-- To customize the asp.net core module uncomment and edit the following section.
For more info see https://go.microsoft.com/fwlink/?linkid=838655 -->
<!--
<system.webServer>
<handlers>
<remove name="aspNetCore"/>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
</handlers>
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
</system.webServer>
-->
<location>
<system.webServer>
<aspNetCore>
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Production" xdt:Locator="Match(name)" xdt:Transform="SetAttributes" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</location>
</configuration>
来源: