我在 ASP.NET 4 中有一个网站,需要使用 Parallelism 连接到 SQL Server 2008 R2,还使用 IIS 7 和 Windows 身份验证,我使用Parallel.Foreach
表达式,当我使用Foreach
一切都很好,但Parallel.Foreach
我得到一个错误:Login failed for user: 'IIS APPPOOL\\MyAppPool'.
,所以经过一番搜索,我发现需要将应用程序池中的流程模型标识从ApplicationPoolIdentity
更改为LocalSystem
:
或者我可以添加特定用户:
但最后一个不是一个适当的解决方案。
所以我检查 SQL SPs 修改它并添加行:
然后结果是:当我使用foreach
(意味着没有并行性)时,所有注册用户都是MyLoginUser
但使用Parallel.foreach
(和LocalSystem
身份)注册的第一个用户是MyLoginUser
,其他用户是NT Authority System
。
我也发现了Parallel Impersonation但也没有工作,我得到了同样的错误。
据我了解MyLoginUser
,没有Multi Connect to sql的权限,对吗?
如果是,那么如何向该用户添加权限?
最后我尝试使用ApplicationPoolIdentity
并MyLoginUser
使用 Parallelism 连接到 SQL。有人有什么建议吗?
更新:
我发现与db的第一个连接是MyLoginUser
然后ASP.NET尝试连接更多并让ApplicationPool这样做,但是applicationpool无法登录,因为没有权限,我也不想让它,唯一的用户可以连接必须是myloginuser
.
所以问题可能是:
如何配置IIS或ASP.NET以使用myloginuser
(与第一个用户相同)连接到 db 的所有连接(也在并行连接中)?