我读过这篇文章https://msdn.microsoft.com/en-us/library/532aee0e(v=vs.100).aspx 它说 Framework 4 中的默认身份验证是Windows 模式。
好吧,我使用 Visual Studio 2003 创建了一个 MVC 4 Internet 模板项目,它创建了下一个 web.config。
<?xml version="1.0" encoding="utf-8"?>
<!--
Para obtener más información sobre cómo configurar la aplicación de ASP.NET, visite
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-MvcApplication2-20150709164700;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-MvcApplication2-20150709164700.mdf" providerName="System.Data.SqlClient" />
</connectionStrings>
<appSettings>
...
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
<pages>
<namespaces>
...
</namespaces>
</pages>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true" />
<handlers>
...
</handlers></system.webServer>
<runtime>
...
</runtime>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
</configuration>
可以看到自动生成的代码:
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
现在我的问题是,如果我发布此网站并转到 IIS,您会看到启用了两种模式:匿名和表单身份验证:
现在,如果你删除代码
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
为什么 IIS 中没有显示 Windows 身份验证已启用?根据 msdn 的说法,默认情况下不应该启用该身份验证吗?
答案1
您混淆了两个不同的authentication
部分。
MSDN 文章和您的 web.config 处理:
<configuration><system.web><authentication>
系统网站具有 ASP.NET 的所有设置
您在 IIS 管理器中看到的内容是:
<configuration><system.webServer><security><authentication>
系统.web服务器用于全局 IIS 设置
<system.webServer>
根据 IIS 中的委托设置,GUI 中的更改可能不会显示在您的 web.config 中。如果是这样,您可以在
%systemroot%\System32\inetsrv\config\applicationHost.config
在文件底部。
您应该了解这两个节点的区别,以确定您应该使用哪一个。