asp.net web.config 模拟与应用程序池标识

Posted

技术标签:

【中文标题】asp.net web.config 模拟与应用程序池标识【英文标题】:asp.net web.config impersonation vs application pool identity 【发布时间】:2012-01-05 15:48:29 【问题描述】:

如果我在 web.config 中模拟用户,但应用程序在使用另一个身份的应用程序池下运行,那么当您访问服务器上的资源(例如文件)时将使用哪个身份?

另一个问题,您可以在与应用程序的其余部分不同的身份下运行页面吗?

【问题讨论】:

我们谈论的是 IIS5、6 还是 7? 【参考方案1】:

当您访问服务器上的资源时,用户将是模拟配置中指定的用户,而不是应用程序池中指定的用户

为特定身份启用模拟。在这种情况下,ASP.NET 模拟使用 Web.config 文件中指定的身份生成的令牌。

<identity impersonate="true"
      userName="domain\user" 
      password="password" />

已启用模拟。在这种情况下,ASP.NET 会模拟 IIS 传递给它的令牌,该令牌可以是经过身份验证的用户,也可以是匿名 Internet 用户帐户。

 <identity impersonate="true" />

来源:MSDN

如果您有兴趣,here 您有一篇文章,其中包含适用于不同模拟场景的身份矩阵。

是的,您可以像 Alex Dn 所说的那样以编程方式模拟

【讨论】:

那么如果在应用程序池下运行的每个应用程序都在冒充特定用户,那么应用程序池身份就没有意义了? @user1110437:是的,对于访问“外部”资源,应用程序池用户不相关(当 impersonate = true 时)。 当您说外部时,您是指在应用程序或服务器之外?【参考方案2】:

1) 在 web.config 中。

2) 您可以在后面的代码中进行模拟: http://support.microsoft.com/kb/306158

或Another article

【讨论】:

那么如果我在web.config中冒充,那么应用池身份就没有意义了? 不完全是,实际上 web.config 覆盖了应用程序池标识。一个应用程序池可用于多个站点。使用 web.config,您可以指定每个站点的身份。所以使用 AppPool 身份就可以了,但通常建议使用 web.config。

以上是关于asp.net web.config 模拟与应用程序池标识的主要内容,如果未能解决你的问题,请参考以下文章

具有高度的 ASP.NET 模拟

什么是 asp.net web.config 中的模拟?

ASP.NET web.config:configSource 与文件属性

Web 应用程序问题(web.config 错误)HTTP 500.19 与 IIS7.5 和 ASP.NET v2

启用 ASP.NET 模拟时,异常堆栈跟踪中缺少行号

ASP.NET - 模拟不起作用