Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .Net核心api长时间运行请求_C#_Asp.net Core_Azure Web App Service_Azure App Service Plans - Fatal编程技术网

C# .Net核心api长时间运行请求

C# .Net核心api长时间运行请求,c#,asp.net-core,azure-web-app-service,azure-app-service-plans,C#,Asp.net Core,Azure Web App Service,Azure App Service Plans,我有一个web应用程序调用.Net核心API来生成PDF文档。我正在做一系列从HTML到pdf的转换,所以需要一段时间才能完成200页的文档。我有它在我的本地工作,但不是我的应用服务。 起初,我得到“指定的CGI应用程序遇到错误,服务器终止了进程。”如果我超过100页(小页面集工作) 调用my api的代码: var httpClient = new HttpClient(); HttpContent content = new StringContent(JsonConvert.Seriali

我有一个web应用程序调用.Net核心API来生成PDF文档。我正在做一系列从HTML到pdf的转换,所以需要一段时间才能完成200页的文档。我有它在我的本地工作,但不是我的应用服务。 起初,我得到“指定的CGI应用程序遇到错误,服务器终止了进程。”如果我超过100页(小页面集工作)

调用my api的代码:

var httpClient = new HttpClient();
HttpContent content = new StringContent(JsonConvert.SerializeObject(pdfRecipeDto), Encoding.UTF8, "application/json");
httpClient.Timeout = System.TimeSpan.FromMinutes(30);
var pdfFileUrl = httpClient.PostAsync("http://yada-yada.azurewebsites.net/api/pdf/Generate", content)
                 .GetAwaiter()
                 .GetResult()
                 .Content.ReadAsStringAsync().Result; // yes i know this is gross
我发现这个和其他说simular的。尝试了第一个答案,但在Kudu中手动修改了我的web.config之后(bc,我不知道如何在我的项目中设置它)


但这似乎没什么作用。

因此,Azure应用程序服务对请求有一个硬编码的230秒的规则。即使您更改了web.config和/或startup.cs

我在这里找到了答案:

结果是Azure应用程序服务对请求有一个硬编码的230秒规则。即使您更改了web.config和/或startup.cs

我在这里找到了答案:
而且

是的,Azure Load Balancer的默认空闲超时设置约为四分钟。常见问题解答中对此进行了说明:

问:为什么我的请求在230秒后超时

Azure负载平衡器的默认空闲超时设置为四分钟。这通常是web请求的合理响应时间限制。如果您的web应用需要后台处理,我们建议使用Azure WebJobs。Azure web应用程序可以调用WebJobs,并在后台处理完成时收到通知。您可以从多种方法中选择使用WebJobs,包括队列和触发器。 WebJobs是为后台处理而设计的。您可以在WebJob中执行任意多的后台处理。 您可以使用webjob完成任务,并查看它的运行情况

此外,所有Azure Web应用程序(以及移动应用程序/服务、Web作业和功能)都在称为沙箱的安全环境中运行。每个应用程序都在自己的沙箱中运行,将其执行与同一台机器上的其他实例隔离开来,并提供了额外的安全性和隐私性,否则将无法使用。
签出GitHub页面,该页面列出Azure应用程序服务上支持和不支持的PDF生成器

是的,Azure Load Balancer的默认空闲超时设置约为四分钟。常见问题解答中对此进行了说明:

问:为什么我的请求在230秒后超时

Azure负载平衡器的默认空闲超时设置为四分钟。这通常是web请求的合理响应时间限制。如果您的web应用需要后台处理,我们建议使用Azure WebJobs。Azure web应用程序可以调用WebJobs,并在后台处理完成时收到通知。您可以从多种方法中选择使用WebJobs,包括队列和触发器。 WebJobs是为后台处理而设计的。您可以在WebJob中执行任意多的后台处理。 您可以使用webjob完成任务,并查看它的运行情况

此外,所有Azure Web应用程序(以及移动应用程序/服务、Web作业和功能)都在称为沙箱的安全环境中运行。每个应用程序都在自己的沙箱中运行,将其执行与同一台机器上的其他实例隔离开来,并提供了额外的安全性和隐私性,否则将无法使用。
签出GitHub页面,该页面列出Azure应用程序服务上支持和不支持的PDF生成器

你为什么不使用
async
/
await
?因为最初的开发者在这个web应用程序中根本没有使用过它(相信我,我不是一个粉丝)。我的计划是在我完成这个概念验证之后引入它。您是否将ìn组合与
IIS
作为反向代理运行?如果是,请检查以配置IIS的请求超时。我不这样认为,但我不确定。我如何检查?为什么不使用
async
/
await
?因为原始开发人员在这个web应用程序中根本没有使用过它(相信我,我不是一个粉丝)。我的计划是在我完成这个概念验证之后引入它。您是否将ìn组合与
IIS
作为反向代理运行?如果是,请检查以配置IIS的请求超时。我不这样认为,但我不确定。我怎么检查?
<?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="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
  </system.webServer>
</configuration>
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
    .UseApplicationInsights()
            .UseStartup<Startup>()
            .UseKestrel(o =>
            {
                o.Limits.KeepAliveTimeout = TimeSpan.FromMinutes(30);
            })
            .Build();;