Windows Server 2008 R2网站:模拟问题

我有一个网站,谁使用模拟。 当我的匿名用户设置为IUSR并将应用程序池标识设置为NetworkService时,某些页面不显示。 我得到一个空白页面,没有错误信息。

如果我把匿名用户作为ApplicationPoolIdentity,并把池标识localSystem它工作正常。

如果我把匿名用户的pipe理员用户它工作正常。

我知道我有一个安全问题,但我不知道什么是我需要设置安全策略为每个工作正常的文件夹。

我把对网站文件夹的读/写访问权限给IUSR,IIS_IUSRS,networking服务和我的模​​拟用户组。

有人知道我的许可是什么意思吗?

我也发现这篇文章,但没有成功.. http://blogs.iis.net/webtopics/archive/2009/03/13/changes-to-application-pool-identities-in-iis-7-5- beta.aspx

请参阅构build安全ASP.NET应用程序:身份validation,授权和安全通信 。

这将使您更好地了解您的ASP.NET应用程序在模拟时使用的身份。 给予必要的许可,你很好。

HTH

我发现了这个问题。

http://forums.asp.net/p/1459236/3386036.aspx

有问题

Microsoft已经确认这是.Net Framework 2.0,3.0和3.5中的一个错误。 以下是我从他们收到的电子邮件中的一段话:

我们所看到的问题确实是一个错误,下面是相同的解释。

总结“Params对象是QueryString,Form,Cookies和ServerVariables对象的集合,当params对象首次被创build时,它将这些对象中的每一个都添加到FillInParamsCollection方法中的集合中,第一个被存储的对象是QueryString对象如果这个对象还没有被创build,在我们的情况下它不是,这个对象的构造函数试图填充QueryString对象,在这个过程中,它通过调用HttpRequest方法调用GetEncodingFromHeaders()来获得编码。这个方法特别寻找一个以“UP”开头的User-Agent,如果是的话,它试图从Headers集合中检索到“x-up-devcap-post-charset”头文件,但是由于Headers集合尚未初始化它也经历了它的初始化例程,其初始化例程所做的一件事是将Params集合设置为NULL,这是什么导致AV,当FillInParamsCollection方法试图初始化nex 在QueryString对象之后的t对象“。

解决方法预先初始化QueryString对象以避免此问题。 只需访问Request.QueryString()。 我们不必做任何事情,只要访问它。

样品:

Object o = context.Request.QueryString; NameValueCollection parameters = context.Request.Params; 

解决scheme是在代码中直接使用Request["Value"]而不是Request.Params["Value"]