簡體   English   中英

在 web.config 中為 web 服務配置超時

[英]Configure a timeout in web.config for a web service

我有一個托管在 IIS 7.5 中的 web 服務。 web 服務工作正常。 我嘗試在 web.config 中配置超時,但我做不到。 我在我的 web.config 中試過:

<Configuration>
<system.web>
<compilation debug="false" targetFramework="4.8" />
<httpRuntime targetFramework="4.8" executionTimeout="10" /> <!-- 10 seconds -->
<sessionState timeout="2" /> <!-- 2 minutes -->
</system.web>
</Configuration>

在 web 服務 controller 中:

Thread.Sleep(180000) //3 minutes

我認為執行會在 10 秒后停止,但它會在 1 分鍾后停止,無論我在“executionTimeout”和“timeout”參數中輸入什么。 我在 IIS 中進行了搜索,但無法找到這一分鍾對應的內容。

有人有想法嗎?

IIS 超時或 httpruntime 執行超時將無法終止睡眠線程。

如您所見,線程睡眠不受 IIS 的限制

在此處輸入圖像描述

要使執行超時起作用,您需要執行實際過程而不是線程睡眠。

因此,如果您需要實現這一點,請在您的代碼中嘗試類似的操作。

thread.Start();
            thread.Join(1500);
            thread.Abort();

或使用CancellationTokenSource()CancelAfter(10000)

https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/cancel-async-tasks-after-a-period-of-time

Jokies Ding:感謝 CancellationToken。 你給我指路了。 並且感謝這個鏈接: 如果線程花費太長時間,如何停止線程我使用比原始線程更干凈的任務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM