ASP.Net Core MVC 需要 web.config 中的 <environmentVariables> 才能工作
Posted
技术标签:
【中文标题】ASP.Net Core MVC 需要 web.config 中的 <environmentVariables> 才能工作【英文标题】:ASP.Net Core MVC needs <environmentVariables> in web.config to work 【发布时间】:2020-06-21 14:44:55 【问题描述】:我正在将我的 ASP.Net Core 3.1 MVC 项目发布到 IIS。该项目包括一个 web api 控制器以及 mvc 控制器。它会生成一个 web.config 文件,如下所示。发布后,该应用程序会显示该页面,但除非我添加指向 Development 的 ,否则 web api 不起作用。如果我把 Production 改为,它不起作用。
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=".\MyApp.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
</system.webServer>
</location>
</configuration>
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=".\MyApp.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</location>
</configuration>
web.config 的修改部分
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
<environmentVariables>
【问题讨论】:
能否请您告诉我有关 web api 不起作用的详细错误消息?它返回 404 错误还是 500 错误?另外,我建议你可以检查startup.cs代码或路由代码,确保你没有添加类似thisif (env.IsDevelopment())
这样的代码来禁用某些web api设置。
这是我在浏览器控制台中看到的错误。加载资源失败:服务器响应状态为 500(内部服务器错误)mysite/api/myapi。就像我说的,页面加载cshtml内容,只有api调用失败。
我检查了 startup.cs,没有特定于 env.IsDevelopment();除了这一行 app.UseDeveloperExceptionPage();
我想我有类似的问题。我在 launchSettings.json 中使用 ASPNETCORE_ENVIRONMENT="Development" 并使用 web.config without environmentVariables 部分。当我在 IISExpress 中启动应用程序时,它以生产模式而不是开发模式启动。我认为它与最新的 VS 更新有关,因为不久前它的工作方式有所不同。谁能证实我的假设?
我想我找到了错误的原因:github.com/dotnet/websdk/issues/564#issuecomment-644714341
【参考方案1】:
将 Visual Studio 更新到刚刚发布的 v16.6.3(6 月 30 日)。它显然包含对此问题的修复。我刚刚遇到了类似的问题,发布在这里:
Why do environmentVariables from launchSettings.json profiles not load when aspNetCore web.config sections exist?
【讨论】:
以上是关于ASP.Net Core MVC 需要 web.config 中的 <environmentVariables> 才能工作的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 17. 基于Claim和Policy的授权 上
使用 FFMPEG 的 ASP.NET Core 5.0 MVC HLS 转码
[MVC&Core]ASP.NET Core MVC 视图传值入门