如何在Azure应用程序服务中处理长时间运行的作业?

如何在Azure应用程序服务中处理长时间运行的作业?,azure,azure-web-app-service,Azure,Azure Web App Service,我对在Azure中托管相当陌生。我有一个.NET4.6Web应用程序,作为应用程序服务在Azure中运行 该解决方案包含一些运行时间较长的操作。在230秒的超时时间后,这些被停止,这似乎是一个Azure的东西 我了解到,我应该将此代码放在Azure函数中,以便将其作为后台作业运行。这里不应该有一个超时,只要我不使用消费计划 我还在解决方案中使用Azure存储 我的问题是,如果我使用Azure Functions v1(NuGet Microsoft.NET.Sdk.Functions v1.0.

我对在Azure中托管相当陌生。我有一个.NET4.6Web应用程序,作为应用程序服务在Azure中运行

该解决方案包含一些运行时间较长的操作。在230秒的超时时间后,这些被停止,这似乎是一个Azure的东西

我了解到,我应该将此代码放在Azure函数中,以便将其作为后台作业运行。这里不应该有一个超时,只要我不使用消费计划

我还在解决方案中使用Azure存储

我的问题是,如果我使用Azure Functions v1(NuGet Microsoft.NET.Sdk.Functions v1.0.24),我将被迫使用Newtonsoft.Json version=9.0.1 同时,NuGet WindowsAzure.Storage需要Newtonsoft.Json版本>=10.0.2

这对我来说太糟了

然后我尝试了Azure功能v2。但它只支持.NETCore,在这个项目中我不支持.NETCore

我的主要问题仍然是找到一种方法来运行这些长时间运行的任务


一种方法是将作业分成更小的部分,但在本例中,我希望在相同的请求中处理它。

检查hosts.json中是否未配置超时

"functionTimeout": "00:05:00"
V1和V2的完整配置选项

在消费计划中,最大超时时间为10分钟。在应用程序服务计划中,它可以是无限期的(但设置上限是有意义的,即使只是1或2个小时)

如果你想打破你的功能,你可以找到一个合适的

关于Newtonsoft冲突,请查看是否可以解决此问题



看看Azure WebJobs。它是Azure功能背后的下划线资源。我相信它支持.NETCore以外的其他平台。确实如此,但似乎Web作业在应用程序服务上下文中运行,并且有230秒的限制。感谢您的回复!我曾考虑尝试绑定重定向,但当没有.config文件时,我应该将其放在哪里?添加配置文件inI找不到一个好方法来组合我的后端项目,它包含许多.NET framework工具和运行.NET Core的Azure函数2.0。就像一个问题接着一个问题。因此,我想我必须找到一种方法将其拆分为更小的部分,或者找到一种方法将其作为后台线程运行……我不知道您的后端项目是如何编码的,但Azure功能应该独立运行,每个功能都执行特定的功能(单一责任)。如果您的函数依赖于后端代码,那么您也需要将该代码移植到.NETCore,或者将代码放在(web)服务接口后面。
<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
            <bindingRedirect oldVersion="0.0.0.0-9.9.0.0" newVersion="10.0.2.0"/>
        </dependentAssembly>
    </assemblyBinding>
</runtime>