我有一个运行在自定义应用程序池上的asp.net应用程序,该应用程序池在服务级别帐户下运行。我在web.config中关闭了匿名访问。 Web服务器是域的一部分。应用程序访问在同一台机器上运行的SQL Server。
目前,对于所有用户,我都会模拟服务级别帐户以访问数据库。当许多用户访问该站点时,随着lsass进程开始使用cpu,这会减慢站点的速度。
我不允许创建一个sql server帐户,我必须使用我所拥有的。 我也不允许将每个用户添加到数据库并为其提供特定访问权限。
我的问题是,如何设置我的应用程序和数据库关联,以便我不必模拟服务级别帐户,从而避免在网站使用率较高时CPU崩溃。
答案 0 :(得分:1)
您不应该冒充该服务帐户。服务帐户是需要访问数据库的帐户,我想它已经拥有。在访问数据库时,您是否已经尝试过运行应用程序而不模拟服务帐户?这应该有用。
要执行简单测试,请检查WindowsIdentity.GetCurrent()
返回的标识(例如,在Page_Load
内)。这应该返回应用程序池标识,这是将用于访问数据库的标识。
当然,只有在Web.config文件中没有配置client impersonation时,这才有效。但是,由于这不是一般的做法,除了一些角落情况,我想你不要使用它。客户端模拟不是确定当前用户是谁的必要条件,只有当您想要使用当前登录用户的身份访问第三方系统(数据库,文件共享,队列......)时才应使用客户端模拟(不是一种可扩展的方法。)