是否有人知道IIS 7中的任何设置会强制它为每个请求使用一个线程,并且不允许它在请求期间切换线程?或者回到传统的线程模型?
我们的问题是整个请求,从头到尾使用多个连接到不同的数据库,我们希望通过使用TransactionScope保证数据的完整性(TransactionScope作为轻量级事务启动,然后提升为分布式事务,一旦第二次连接成立)。
我们需要每个请求一个线程的原因是,当您尝试在不同于启动它的线程的线程上处理事务时,它会抛出一个异常,指出它必须放在启动它的同一个线程上。然后事务泄漏,没有任何东西被提交,它慢慢地使机器停止运转。
答案 0 :(得分:1)
我们支持的.net版本(当时为4.0)无法执行此操作。所以我们被迫放弃了分布式交易的覆盖范围。
来做答案 1 :(得分:0)
要限制每个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”的aspnet.config文件.NET \ Framework64 \ v4.0.30319" ):
http://msdn.microsoft.com/en-us/library/dd560842.aspx
最后一种方法,你可以检查你在初始帖子中提到的第一个参考,下面的参考是有用的补充:
http://www.iis.net/ConfigReference/system.applicationHost/applicationPools/add