我有一个旧的 ASP.Net 网站,我正在将 MVC 集成到其中。我在 web.config 中使用带有标准授权标签的 webforms 身份验证:
<authorization>
<deny users="?"/>
</authorization>
过去,我可以使用以下位置公开各种文件夹:
<location path="Public">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
加上 MVC 和一些控制器,我需要将一些控制器操作完全公开。但是,我无法使用 web.config 中的位置标记来执行此操作。如果我在未经身份验证的情况下尝试访问操作的 URL,ASP.Net 会将我重定向回我的登录页面(在 web.config 中指定)。我没有在任何这些控制器操作上使用授权属性。
如何在破坏所有需要保护的网络表单的安全性的情况下开放对这些内容的访问?
编辑:
我想明确说明我正在对我想要保护的操作使用 [Authorize]。我想公开的问题中的操作没有使用 [Authorize] 属性,除非登录,否则仍然无法访问。
编辑2:
我做了一些 IIS 跟踪,并认为我已经说服自己这确实是身份验证失败,而不是其他错误。这是我尝试访问的位置和路线的示例:
<location path="WC">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
和路线:
routes.MapRoute(
"WC", // Route name
"WC/{id}",
new { action = "GetWC", controller = "WC" } // URL with parameters
);
以及失败的 URL:
http://localhost/MyWebApp/WC/42
我实际上有一个更通用的路线来处理这个问题,但添加了这个以消除任何疑问。无论如何,这在登录时都可以正常工作。