我有一个ASP.NET Core 2.0 API,我试图在我的本地Win10开发计算机上使用VS2017 / IIS Express进行调试,我遇到了IIS Express的问题,因为它的响应超时默认为2我的进程可以在我的API中完成前几分钟,从而返回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并没有使用我项目中的web.config,而是依赖于项目中的launchSettings.json 。但是,我无法在网上找到任何关于launchSettings有任何设置值来增加默认超时的内容。
为了确认,我尝试将web.config文件(就像我上面列出的那样)放在我项目的wwwroot文件夹中,但它没有任何区别。这适用于我在Azure中部署的解决方案(see related Stack Overflow post),但在本地开发人员的IIS Express中没有。
这似乎应该是一项简单的任务,但到目前为止,我还没有找到解决方案。
有什么想法吗?
编辑5/27/18 - 解决方案
带有ASP.NET Core 2.0的IIS Express使用类似于web.config的文件,名为applicationhost.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>
答案 0 :(得分:1)
你误解了这些概念。
launchSettings.json
仅供Visual Studio用于确定如何运行Web项目。 (my blog post)
IIS Express仍然依赖web.config
来读取设置,因为这是它理解的唯一文件。