从 IIS 上的 ASP.NET Core 应用程序请求超时
Posted
技术标签:
【中文标题】从 IIS 上的 ASP.NET Core 应用程序请求超时【英文标题】:Request timeout from ASP.NET Core app on IIS 【发布时间】:2017-03-29 15:09:01 【问题描述】:我从我的 ASP.NET Core 应用程序向第三方 API 发出 Web 请求。
-
当应用单独运行时,请求成功。
当应用程序在同一服务器上的 IIS 中运行时,请求超时。
请求是通过 RestSharp 客户端从 Hangfire 重复作业向 Asana API 端点 (HTTPS) 发出的。所有自己应用的页面都可以通过 IIS 访问,但应用无法发出任何请求。
我应该在哪里查看以及调试什么来解决这个问题?
【问题讨论】:
如果你只是想改变 IIS 上的请求超时,那么你可以看这里:***.com/a/38507709/5656858 可能相关***.com/questions/1674449/… 【参考方案1】:IIS 行为由 web.config 驱动,我已配置为处理 requestTimeout="00:20:00":
<aspNetCore
requestTimeout="00:20:00"
processPath="%LAUNCHER_PATH%"
arguments="%LAUNCHER_ARGS%"
stdoutLogEnabled="false"
stdoutLogFile=".\logs\stdout"
forwardWindowsAuthToken="false">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="staging" /> <!-- value could be "development", "staging" or "production"-->
</environmentVariables>
</aspNetCore>
【讨论】:
它不会为进入 IIS 的请求设置超时吗?因为我的问题与使用 RestSharp 客户端从应用程序发送到另一个服务器上的另一个应用程序的请求有关。当应用程序在没有 IIS 的情况下运行时,这些请求可以正常传递。 我的错,我当时没听懂你的意思。但是是什么触发了来自 ASP.NET Core 的调用,对 IIS 的传入调用?如果来自 IIS 的传入呼叫超时,您的应用程序会怎样?您的应用程序及其请求不会也被中断吗?不确定,只是一个假设。 不,没有收到的请求,这是 Hangfire 设置的重复作业。 是否可以将 requestTimeout 指定为环境变量ala%LAUNCHER_PATH%
?当我尝试这样做时,intellisense 指示 The string '%REQUEST_TIMEOUT%' is not a valid Time value.
并且我导航到我的 web 应用程序给出:指定的 CGI 应用程序遇到错误并且服务器终止了进程。
@Daboul - 这是很好的信息,但未应用此设置。详细信息的原因是 - 我在此页面上阅读了这些设置的详细信息 - docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/... & 结果证明默认的 hostingModel 设置是 InProcess &此托管模型的 requestTimeout 设置被忽略。这是该页面的快照“不适用于进程内托管。对于进程内托管,模块等待应用程序处理请求。”请让我知道这件事。以上是关于从 IIS 上的 ASP.NET Core 应用程序请求超时的主要内容,如果未能解决你的问题,请参考以下文章
IIS 错误 502.5 上的 ASP.NET Core 1.0
IIS Express 10 上的 ASP.NET Core 应用程序给出 HTTP 500 错误
如何从 Visual Studio 2015 (+U1) ASP.NET Core 发布到 Windows Server 2012R2 上的 IIS?