在Windows Server 2008configuration中,我遇到了IIS 7.5的问题。 我在单独的应用程序池上托pipeASP.NET MVC应用程序, 并使用AppPoolIdentity和.NET 4.0 Framework进行configuration 。
应用程序正常运行一段时间(几分钟),之后突然出现exception,看起来像IIS资源pipe理连接。 当我将AppPoolIdentity更改为“真实”本地系统用户凭据(本地pipe理员) 时 , 问题消失 。 也许应用程序池回收使问题在这里? 但它被configuration为每1740分钟回收一次,从开始5分钟后有时会失败。
我希望能够运行应用程序没有特殊的要求和权限,因为该应用程序是非常简单的,不应该真的需要它。 如果需要,我可以提供更多细节。 但是我必须让你知道,我对IIS没有任何实际的经验。
从应用程序的angular度来看问题
应用程序正常工作一段时间,突然一部分控制器开始在StructureMap中抛出一个exception:
ArgumentNullException:尝试查找types为[MyType]的instance参数名称:instance在
StructureMap.InstanceCache.Get(TypepluginType, Instance instance) +376
所请求的types已正确注册(并且在发生exception之前一分钟就已正确解决)。 我无法validation它是否仍然注册,因为WhatDoIHave诊断方法WhatDoIHave引发exception:
NullReferenceException:未将对象引用设置为对象的实例。 在StructureMap.Diagnostics.WhatDoIHaveWriter.writeInstance(InstanceRef instance) +133
看起来像StructureMap的内部caching不知何故被损坏。
在IIS中,应用程序在应用程序池中运行。 应用程序池在一个或多个W3WP进程中运行。
这听起来像是在这里发生的事情是,你的应用程序最终遇到一个条件,W3WP无法应付以最小的特权运行时。
LocalSystem是一个拥有高权限的帐户 – 当一些东西开始(或者在你的情况下)作为LocalSystem工作时, 通常会指示某种forms的权限级别差异(偶尔会出现用户configuration文件差异)。
所有的应用程序池标识默认为IIS_IUSRS的成员资格,授予IIS运行应用程序池所需的所有权限 – 这可能不包括您的特定应用程序/框架/其中一个库所需的所有权限。
运行低权限时, 尝试在应用程序池中启用“加载用户configuration文件”设置,如果这样做不能改善情况,则需要对其进行debugging – 要么使用Process Monitor运行,以避免可能的文件或registry访问困难( http ://live.sysinternals.com/procmon.exe ),或者在失败的时候抓取进程的内存转储,抓住PSSCOR2,也许以!dae开始,如果在这一点上没有什么特别奇怪的话。
简短的版本是内部进程/运行时状态听起来像是正在进行中; 它不应该; 往往这将是某种本地代码问题,这样做,但在你的情况下,它可能是权限。
编辑:哦,不是LocalSystem,{本地系统用户喜欢pipe理员}。 疑难杂症。 那么,给configuration文件的事情一试 – 也请参见这一点 。
另外,回收:当一个新的W3WP开始取代旧的W3WP,在这个过程中失去了旧的状态,而旧的状态如果没有完成任何有用的工作,在90秒后就会被中断的,并closures自己。 (默认阅读“)