ASP.NET Core 2.0 如何在 launchSettings.json 中增加 IIS Express 请求超时

ASP.NET Core 2.0 how to increase IIS Express request timeout in launchSettings.json

我有一个 ASP.NET Core 2.0 API,我正尝试在我的本地 Win10 开发计算机上使用 VS2017 / IIS Express 进行调试,我 运行 遇到了一个问题IIS Express 在我的 API 进程完成之前达到默认的响应超时 2 分钟,从而返回 502.3 - Bad Gateway 消息。

我在 API 中继续处理 运行,并在 3 分 50 秒后完成。所以,我需要增加 IIS Express 的请求超时。

我在网上找到的大多数示例都在谈论使用 web.config,例如;

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore requestTimeout="00:20:00" processPath="dotnet" arguments=".\MyAPI.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
  </system.webServer>
</configuration>

...但据我了解,本地 IIS Express 上的 ASP.NET Core 2.0 API 运行ning 不使用我的 web.config project bt 而不是,它依赖于项目中的launchSettings.json。但是,我无法在网上找到任何关于 launchSettings 具有用于增加默认超时的任何设置值的内容。

为了确认,我尝试将一个 web.config 文件(如我上面所列的)放入项目的 wwwroot 文件夹中,但没有任何区别。这适用于我在 Azure () 中部署的解决方案,但不适用于我本地开发人员的 IIS Express。

这看起来应该是一个简单的任务,但到目前为止我还没有找到解决方案。

有什么想法吗?

编辑 5/27/18 - 解决方案

带有 ASP.NET Core 2.0 的 IIS Express 使用一个名为 applicationhost.config 的类似于 web.config 的文件,该文件位于项目根目录/.vs/config 文件夹中。此文件有一个

<configuration><Location> ... <location</configuration> 

部分类似于我在下面列出的内容。此部分有

<aspNetCore ... />

我能够应用 requestTimeout 值的节点。通过设置,我的开发系统能够超过默认的 2 分钟超时。

<location path="MyAPI">
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <httpCompression>
      <dynamicCompression>
        <add mimeType="text/event-stream" enabled="false" />
      </dynamicCompression>
    </httpCompression>
    <aspNetCore requestTimeout="00:20:00" processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" forwardWindowsAuthToken="false" stdoutLogEnabled="false" />
  </system.webServer>
</location>

你误解了这些概念。

launchSettings.json 仅供 Visual Studio 用于确定如何 运行 您的 Web 项目。 (更多信息在 my blog post 中)

IIS Express 仍然依赖 web.config 来读取设置,因为这是它理解的唯一文件。