User.Identity.Name返回NT AUTHORITY \ NETWORK SERVICE我想要Domain \ USER

时间:2010-06-09 13:15:33

标签: asp.net asp.net-mvc authentication iis-6 credentials

在我的asp.net MVC项目中

我有一个连接字符串的数据库连接: Data Source = .; Initial Catalog = dbname; Integrated Security = True

所有用户都可以在该连接上执行存储过程,我想记录这些用户。

所以在每次执行后我将“User.Identity.Name”存储到另一个数据库。 这项工作非常适合我的开发机器,但在部署之后,要访问该站点,我必须通过VPN连接,然后远程桌面到运行IIS的同一台服务器,并在那里使用Web浏览器。然后我得到User.Identity.Name:“NT AUTHORITY \ NETWORK SERVICE”。我希望它是我在远程桌面中输入的可以访问数据库的凭据。

任何想法我怎么能让这个工作?

iis6身份验证:“Windows身份验证:已启用” web.config:

2 个答案:

答案 0 :(得分:5)

你必须使用模仿。否则,使用应用程序池标识。基本上,这是使用此web.config条目

完成的
<identity impersonate="true" />

这里有完整的参考资料。

ASP.NET Impersonation

答案 1 :(得分:2)

您需要将Impersonation设置为true,否则网站将在用于AppPool的凭据下运行。它在Cassini中运行的原因是Cassini在您调试时以您自己的凭据运行。