[英]Windows Authentication problems in IIS
我在 C# 和 ASP.NET 工作,制作具有集成安全性的基于 Web 的数据库应用程序,以便 Windows 用户用于访问数据库。 当我在 Visual Studio 的 IIS Express 中运行应用程序时,一切都很好。 当我在 IIS 下发布网页时,我遇到了 Windows 身份验证问题。
在 IIS Express 中,以下两行代码生成与当前登录用户对应的相同 Windows 用户名,这也是我想要的:
string user = Page.User.Identity.Name;
string loginName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
但在 IIS 中的已发布形式中,第二行给出了不同的用户:IIS APPPOOL\"the-name-of-my-Visual-Studio-solution"。 此用户对数据库没有任何权限,因此应用程序出现故障。
我在 web.config 中启用了 Windows 身份验证:
<authentication mode="Windows" />
<identity impersonate ="false" />
<authorization>
<deny users="?" />
</authorization>
在 IIS 中,使用了以下设置(见下图):
这是应用程序池设置:
谁能告诉我在哪里寻找问题? 提前致谢。
试试这些代码:
string UserName = HttpContext.Current.User.Identity.Name;
string UserName = Request.LogonUserIdentity.Name;
问题与模仿有关。 为了进行正确的身份验证,我必须做两件事:1)我必须为我的应用程序在 IIS 中启用 ASP.NET 模拟。 (这也可以在 web.config 中完成,但我不希望这样做,因为我必须更改服务器配置才能使其正常工作。) 2)我必须从集成更改应用程序池的托管管道模式对于经典,这也在 IIS 中,用于我的应用程序。
然后它起作用了。 感谢所有建议。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.