Windows身份验证看起来非常简单,但我仍然遇到问题。所以我决定使用Windows身份验证模板创建一个全新的Asp Web应用程序项目。当然,这是有效的。在设计器中,<asp:LoginName runat="server" />
可以使用,代码隐藏User.Identity.Name
可以使用。
我能找到的唯一设置是web.config:<authentication mode="Windows"/>
。
回到我自己的网络应用程序项目,我确认我有相同的web.config设置。但是,asp.LoginName
标记和User.Identity
属性具有空字符串,即没有用户名。此外,使用<deny users="?"/>
时
该页面返回401.2拒绝访问响应。
当我在同一台开发机器上测试两个项目时,在VS2015中,问题都不能出现在IIS Express或VS2015的设置中。同样使用相同的Firefox浏览器,虽然我也尝试过IE。
我忽略了VS2015中的项目设置吗?
更新
我通过将所有项目源文件复制到全新的Asp Web应用程序项目来解决此问题。实际上,我正在将Web站点项目转换为Web应用程序项目。我仍然不知道为什么我无法通过配置来使用Windows身份验证,但至少我可以继续进一步开发。
但是,我仍然希望得到答案。 。 。 : - )
答案 0 :(得分:0)
在您的Web.config上,您必须添加:
<authentication mode="Windows" />
您的服务器必须是AD的成员。
答案 1 :(得分:0)
您可以在web.config中编写您想要的任何内容,但如果[solution]/.vs/config/applicationhost.config
中未启用所需的身份验证模式,则无效。由于前导点使其成为隐藏路径,因此很难找到此配置。不知道这是一个错误还是一个功能......
另请参阅关于此问题的另一个测试案例的另一个问题:https://stackoverflow.com/a/48806942/1845672