ASP.NET MVC 5 Web.config:“FormsAuthenticationModule”或“FormsAuthentication”

好吧,这不是什么大不了的事情,但是这让我烦恼,我不能放过它。

所以我使用.NET 4.5.1和OWINauthentication使用MVC 5.1。 所以当你创build一个新的MVC 5项目时,下面的内容会自动添加到Web.config中去除表单validationhttp模块,因为在使用OWIN中间件时不再需要它:

<system.webServer> <modules> <remove name="FormsAuthenticationModule" /> </modules> </system.webServer> 

现在,我们正在删除模块,这意味着它已经被添加,所以这里是在C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config注册这个http模块的条目:

 <httpModules> <add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" /> </httpModules> 

这里是IIS 8.5的C:\Windows\System32\inetsrv\config\applicationHost.config的条目,告诉我的应用程序使用该模块:

 <system.webServer> <modules> <add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" preCondition="managedHandler" /> </modules> </system.webServer> 

因此,在应用程序级别自动添加到我的Webconfiguration中的名称属性为“FormsAuthenticationModule”,而两个服务器级别/ asp.net级别configuration文件中的条目使用名称属性“FormsAuthentication”。 那么这里发生了什么? 在我看来,该模块将不会被删除,因为name属性不匹配。 我只是认为这是一个错字,但是在网上search之后,每个人似乎都在应用程序web.config中使用“FormsAuthenticationModule”。 这是新版本的asp.net / iis最近的变化还是我错过了什么?

你是对的 – 这是模板中的拼写错误。

这个“打字错误”的一个主要副作用是它将使FormsAuthentication保持导致owin的loginpath被忽略,并且调用被authentication的页面到/login.aspx