如何为我的asp.net core 2.0 api增加azure应用程序服务超时

ep6jt1vc  于 2021-06-20  发布在  Kudu
关注(0)|答案(1)|浏览(512)

我有一个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,在这一点上,我觉得我是在浪费时间,所以我想检查一个,看看是否有人有任何建议。

t98cgbkg

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中。

<aspNetCore
  requestTimeout="00:20:00"
  processPath="%LAUNCHER_PATH%"
  arguments="%LAUNCHER_ARGS%"
  stdoutLogEnabled="false"
  stdoutLogFile=".\logs\stdout">
  <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="staging" /> <!-- value could be "development", "staging" or "production"-->
  </environmentVariables>
</aspNetCore>

有关更多详细信息,请参阅本文以了解asp.net核心模块配置参考

相关问题