当控制器操作使用与虚拟目录相同的URL时,是否需要任何特殊路由或IIS配置?
我有一个ASP.NET MVC 1.0应用程序需要将Windows身份验证应用于单个操作(“/ Login / FromWindows”)。为此,我们设置了一个虚拟目录,其路径与操作相同(例如“/ Login / FromWindows”),并在IIS中启用了Windows身份验证。
当我访问/ Login / FromWindows URL时,我得到一个空的HTTP 200响应,并且服务器文本日志中没有记录任何内容。 “FromWindows”操作应该记录消息并将用户重定向到主页。
似乎操作代码根本没有被执行,因此可能与虚拟目录存在冲突。
在Global.asax.cs中路由配置
public static void RegisterRoutes(RouteCollection routes)
{
// snipped: ignored routes for images, scripts, etc.
routes.MapRoute( "Default", "{controller}/{action}",
new { controller = "Home", action = "Index" } );
}
答案 0 :(得分:1)
你是对的,行动代码没有被执行。这是因为现有文件路径(虚拟或非虚拟)优先于MVC路由规则。
为什么使用虚拟目录?只需在web.config中为windows设置身份验证,并在相应的操作方法上使用[authorize]
属性。
的Web.config:
<configuration>
<system.web>
<authentication mode=”Windows” />
</system.web>
</configuration>
行动方法:
[Authorize]
public ActionResult SomeAction()
{
return View();
}
访问http://www.asp.net/mvc/tutorials/authenticating-users-with-windows-authentication-vb以获取有关使用Windows身份验证的mvc的更多信息。
答案 1 :(得分:0)
上面提到的Chevex使用[Authorize]属性就好了,或者如果你想要更多,你可以为你的企业自定义授权。恕我直言。