簡體   English   中英

每個請求asp.net單線程

[英]Single thread per request asp.net

是否有人知道IIS 7中的任何設置會強制它在每個請求中使用單個線程,而不允許它在請求期間切換線程? 或者回到傳統的線程模型?

我們的問題是整個請求,從頭到尾使用到不同數據庫的多個連接,我們希望通過使用TransactionScope保證數據完整性(TransactionScope作為輕量級事務啟動,然后在建立第二個連接后提升為分布式事務) 。

我們需要每個請求一個線程的原因是,當您嘗試在不同於啟動它的線程的線程上處理事務時,它會拋出一個異常,指出它必須放在啟動它的同一個線程上。 然后事務泄漏,沒有任何提交,它慢慢地使機器停止運轉。

在我們支持的.net版本中沒有辦法做到這一點(當時為4.0)。 所以我們被迫放棄了分布式交易的覆蓋范圍。

從理論上講,您可以使用.net 4.5.1 TransactionScopeAsyncFlowOption來實現

要限制每個asp.net工作進程的線程數,可以設置maxWorkerThreads,它根據每個CPU配置進程使用的最大工作線程數。 我不建議每個asp.net工作進程只配置一個線程。 這顯然會影響性能。

為應用程序池配置工作線程似乎有幾種方法。 第一種是在web.config文件中設置processModel元素:

http://msdn.microsoft.com/en-us/library/7w2sway1.aspx

第二個是設置aspnet.config文件(你可以找到路徑為“c:\\ Windows \\ Microsoft.NET \\ Framework64 \\ v2.0.50727”或“C:\\ Windows \\ Microsoft.NET \\”的aspnet.config文件Framework64 \\ v4.0.30319" ):

http://msdn.microsoft.com/en-us/library/dd560842.aspx

最后一種方法,您可以檢查您在初始帖子中提到的第一個參考,以及下面的參考是有用的互補性:

http://www.iis.net/ConfigReference/system.applicationHost/applicationPools/add

圖片來源: http//forums.iis.net/t/1188351.aspx

暫無
暫無

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

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