尝试修复Windows身份验证。目标:Windows身份验证。使用Firefox时,应显示登录对话框,而使用Internet Explorer时,Windows用户名和密码应自动转到Web服务器。
我使用Empty模板设置了一个非常小的Web应用程序项目。 Web.config看起来像这样:
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.5"/>
<httpRuntime targetFramework="4.5"/>
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
</system.web>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" .../>
<compiler language="vb;vbs;visualbasic;vbscript" ..."/>
</compilers>
</system.codedom>
</configuration>
在FF或IE中运行此站点会产生401 Unauthorized响应,而不是登录对话框。为什么呢?
然后我创建了另一个新的Web应用程序项目,现在将WinForms模板和Authentication设置为Windows。这会创建一些半有趣的假内容,包括带有菜单的页眉和显示登录用户的窗口名称。
在web.config中,我将授权更改为:
<allow users="*"/>
在FF中运行此站点会显示一个登录对话框,在IE中它会在标题中显示带有我的Windows用户名的页面。
现在我改为:
<authentication mode="None" />
在FF中运行此站点显示登录对话框,而我希望只需看到该页面而无需登录。使用IE浏览器,页面显示标题中没有我的Windows用户名。
我的结论是,设置身份验证不仅仅是web.config中的那两个地方。如果我对此了解得更多,我可以在我的真实网络项目中解决一些类似的问题。请帮助!
答案 0 :(得分:0)
经过一夜好眠,我有了搜索Web服务器配置的想法。事实证明VS2015使用IIS Express。在SO上,我发现IIS Express配置文件位于解决方案的.vs
目录中,其中New Project模板写道禁用了匿名访问。这解释了Firefox中的登录对话框,即使web.config具有Authentication Mode = None。
我还从Hanselman找到了一些有趣的信息:在VS2015解决方案资源管理器中,按项目上的F4查看您在“属性页”中找不到的一些项目。例如。匿名身份验证已启用/已禁用,但这似乎与.vs中的配置无关?
似乎某些事情不能简单化。我使用Apache Web服务器并且被大量的设置所吓倒,但至少每个都被清楚地记录下来了。 Windows有着使用GUI工具使用户友好的声誉,因此我觉得仍然不得不处理隐藏目录.vs中xml配置文件中记录较少的文档。