none
iis web 园疑问 RRS feed

  • 问题

  • 每一个工作进程都具有自己的状态数据,由于请求以循环的方式路由到应用程序池工作进程,这就造成数据不一致,比如session丢失等;这句不太理解,请指教。

    2012年8月24日 5:07

答案

  • 你好,

    在启用Web园的时候,IIS会使用多个工作进程来处理请求。由于每个工作进程都有自己的状态数据,互相不共享,当同一个会话的多个请求被路由到不同的工作进程处理时便可能出现数据不一致的情况。比如:

    用户发了一个请求登陆系统,IIS用一个工作进程处理这个请求,并把登陆信息存在该进程的内存中。

    同一个用户发出第二个请求,用户期望的是自动获得之前的登陆状态,但是如果因为Web园的关系,IIS用另外的一个工作进程来处理这个请求,那么用户之前的登陆状态信息就无法获得。

    Web园是之前为充分利用一个服务器上的多个CPU而设计的,目前的建议是将应用程序隔离到不同的工作进程中,同一个应用程序即使使用单个工作进程多个CPU也是可以得到有效利用的,所以为了避免出现问题你可以不启用Web园。当然如果一定要使用的话,可以使用额外的进程或SQL Server等来保存状态信息。


    Leo Tang [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年8月27日 9:47
    版主