Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.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# ASP.NET工作线程的大部分活动时间都处于阻塞状态吗?_C#_Asp.net - Fatal编程技术网

C# ASP.NET工作线程的大部分活动时间都处于阻塞状态吗?

C# ASP.NET工作线程的大部分活动时间都处于阻塞状态吗?,c#,asp.net,C#,Asp.net,我正在尝试确定ASP.NET工作线程的角色。我的IIS 7安装默认允许最多25个工作线程,否则我会将其设置为1 当用户请求.aspx页面时,我知道该请求将检索工作线程。但是加载该页面上的每个图像是否也会占用一个工作线程?一旦检索到图像,检索图像的工作线程是否也负责将图像传输给用户(通过阻止tcp套接字?)IIS 7的安装程序在安装时包括“通用Http功能->静态内容”。这个模块负责处理静态内容,我不相信它使用任何工作线程 不过,即使对于测试服务器,一个工作线程似乎也有点不足。如果您的代码进入一个

我正在尝试确定ASP.NET工作线程的角色。我的IIS 7安装默认允许最多25个工作线程,否则我会将其设置为1


当用户请求
.aspx
页面时,我知道该请求将检索工作线程。但是加载该页面上的每个图像是否也会占用一个工作线程?一旦检索到图像,检索图像的工作线程是否也负责将图像传输给用户(通过阻止tcp套接字?)

IIS 7的安装程序在安装时包括“通用Http功能->静态内容”。这个模块负责处理静态内容,我不相信它使用任何工作线程


不过,即使对于测试服务器,一个工作线程似乎也有点不足。如果您的代码进入一个长进程(比如一个长查询),您将被阻止运行等待单个辅助进程的其他页面。是什么促使您希望将其设置为1

我不确定您所说的是哪个IIS版本,所以我在v5.1上读了一段时间

当使用ASPCompat和session state时,运行时可以将对同一会话的请求序列化到单个线程

否则,默认情况下,如果您向睡眠页面的应用程序发出12个请求,ASP.NET将使每个后续请求等待,直到一个线程被前一个请求释放。您可以通过和配置设置(machine.config)控制此行为,其中并发线程的数量是maxWorkerThreads和minFreeThreads之间的差异。请再次检查这些设置是否未设置为应用程序只能同时处理一个ASP.NET请求


让我们了解对ASPX页面的web请求对用户及其浏览器的外观

用户将浏览器导航到ASPX页面。在服务器上,IIS将其识别为ASP.NET请求,并将其路由到.NET处理程序进行处理,包括获取工作线程、处理页面以及将生成的HTML返回到用户的浏览器。这并不包括交付实际的图像、JavaScript文件、CSS文件和其他外部资源,只是页面本身生成的HTML返回到用户的浏览器

当用户的浏览器呈现页面时,它将对页面上的其他资源(图像、JavaScript文件等)发出附加请求。当IIS接收到对这些文件的请求时,它将这些文件作为静态内容进行处理,因此ASP.NET处理程序(及其工作进程)也会进行处理不参与处理或交付内容


请注意,您可以将IIS配置为使用.NET处理程序来处理这些类型的请求,但对于静态内容,IIS不会立即执行此操作。

如果您的asp.NET应用程序代码中有阻止调用,则选择“是”

如果您使用内存中的所有数据响应请求,则为否


静态图像不应该通过Asp.Net提供,像IIS或nginx这样的静态文件服务器应该可以更快地实现这一点。

为什么您希望IIS使用1个工作线程?@chrismaric好吧,Chris,该参数是可配置的,因此人们可以配置它以满足他们的需要。将其设置为1是非常罕见的,但我相信在某些情况下,您会希望这样做。例如,如果您不希望IIS在偶尔允许它处理一两个请求的情况下占用您的大部分处理能力。“我肯定还有其他可以想象的情况。”泽斯皮我不同意。我不相信有任何可能的情况下,你会想限制IIS到1个工作线程。如果你想限制它的资源,它有很多更好的结构。您可以控制内存使用和CPU使用限制。