2010-07-20 106 views
1

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

目前,对于所有用户,我模拟服务级别帐户来访问数据库。当许多用户访问该站点时,这会使lsass进程在使用cpu时开始下降。

我不允许创建一个sql server帐户,我必须使用我拥有的。 我也不允许将每个单独的用户添加到数据库并给他们特定的访问权限。

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

回答

1

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

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

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

+0

客户端模拟实际上是在web.config文件中配置的。 impersonate = true,没有用户名和密码。 这样做是为了让我能弄清楚谁是用户,因为我需要确保他们被允许首先访问网站。 – user397065 2010-07-20 21:03:14

+0

您不需要客户端模拟。我想你有一个内部网站和Windows身份验证?然后通过调用Thread.CurrentPrincipal或HttpContext.Current.User来检查当前用户是谁。我还在我的答案中增加了更多信息。 – 2010-07-21 11:04:30

+0

模拟web.config文件解决了问题。现在我不必以编程方式模拟。 – user397065 2010-07-21 21:16:33

相关问题