我有一个asp.net core 2.0 api正在部署到azure应用程序服务。这一直工作良好,直到最近,我不得不处理一个请求,花了超过2分钟完成,我得到了一个502坏网关
"The specified CGI application encountered an error and the server terminated the process".
在这个过程中,当我达到2分钟时,这种情况就会一直发生。
我的诊断日志显示
018-05-25 02:07:01.462 +00:00 [Error] Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware: An unhandled exception has occurred while executing the request
System.Threading.Tasks.TaskCanceledException: A task was canceled.
我的工作假设这是一个超时问题,因为它总是在2分钟标记,我知道请求需要超过2分钟才能完成。因此,我正在研究如何增加超时时间,并在上找到了一些帖子,其中谈到了如何使用applicationhost.xdt文件,将其放置在站点的站点文件夹的根目录中。我正在使用这个xml;
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.applicationHost>
<webLimits xdt:Transform="SetAttributes(connectionTimeout)" connectionTimeout="00:05:00" />
</system.applicationHost>
</configuration>
当我使用kudu debug console将它上传到我的部署槽的站点文件夹的根目录下时,我正在使用它来测试我的api,然后查看转换文件,我看到以下内容:;
2018-05-24T19:34:19 Start 'site' site extension transform
2018-05-24T19:34:19 StartSection Executing SetAttributes (transform line 4, 16)
2018-05-24T19:34:19 on /configuration/system.applicationHost/webLimits
2018-05-24T19:34:19 Applying to 'webLimits' element (no source line info)
2018-05-24T19:34:19 Set 'connectionTimeout' attribute
2018-05-24T19:34:19 Set 1 attributes
2018-05-24T19:34:19 EndSection Done executing SetAttributes
2018-05-24T19:34:19 Successful 'D:\home\site\applicationHost.xdt' site extension transform
在我看来,它成功地应用了xdt转换。
但是,即使在重新启动基本应用程序服务和相关部署槽之后。我仍然得到错误。
那么,我是否使用了错误的超时设置?
当我查看slots sites/wwwroot文件夹中的web.config文件时,它只包含以下内容。。。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\Mypp.dll"
stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
</system.webServer>
我希望看到我应用的xdt文件中关于connectiontimeout的信息。所以,也许这不是正确的web.config文件?
我不是一个azureMaven,在这一点上,我觉得我是在浪费时间,所以我想检查一个,看看是否有人有任何建议。
1条答案
按热度按时间t98cgbkg1#
请求超时:
指定asp.net核心模块等待来自侦听%aspnetcore\u port%的进程的响应的持续时间。
在asp.net core 2.0或更早版本附带的asp.net core模块版本中,requesttimeout只能以整分钟为单位指定,否则默认为2分钟。
你可以尝试添加
requestTimeout="00:20:00
在slots sites/wwwroot文件夹的web.config中。有关更多详细信息,请参阅本文以了解asp.net核心模块配置参考