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
来读取设置,因为这是它理解的唯一文件。
我有一个 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 (
这看起来应该是一个简单的任务,但到目前为止我还没有找到解决方案。
有什么想法吗?
编辑 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
来读取设置,因为这是它理解的唯一文件。