Asp.net应用程序池和sql server数据连接

时间:2010-07-20 18:32:52

标签: asp.net security impersonation

我有一个运行在自定义应用程序池上的asp.net应用程序,该应用程序池在服务级别帐户下运行。我在web.config中关闭了匿名访问。 Web服务器是域的一部分。应用程序访问在同一台机器上运行的SQL Server。

目前,对于所有用户,我都会模拟服务级别帐户以访问数据库。当许多用户访问该站点时,随着lsass进程开始使用cpu,这会减慢站点的速度。

我不允许创建一个sql server帐户,我必须使用我所拥有的。 我也不允许将每个用户添加到数据库并为其提供特定访问权限。

我的问题是,如何设置我的应用程序和数据库关联,以便我不必模拟服务级别帐户,从而避免在网站使用率较高时CPU崩溃。

1 个答案:

答案 0 :(得分:1)

您不应该冒充该服务帐户。服务帐户是需要访问数据库的帐户,我想它已经拥有。在访问数据库时,您是否已经尝试过运行应用程序而不模拟服务帐户?这应该有用。

要执行简单测试,请检查WindowsIdentity.GetCurrent()返回的标识(例如,在Page_Load内)。这应该返回应用程序池标识,这是将用于访问数据库的标识。

当然,只有在Web.config文件中没有配置client impersonation时,这才有效。但是,由于这不是一般的做法,除了一些角落情况,我想你不要使用它。客户端模拟不是确定当前用户是谁的必要条件,只有当您想要使用当前登录用户的身份访问第三方系统(数据库,文件共享,队列......)时才应使用客户端模拟(不是一种可扩展的方法。)