Area中的ASP.NET MVC 3路由问题

时间:2012-09-17 11:48:56

标签: asp.net-mvc-3 routing asp.net-mvc-routing asp.net-mvc-3-areas

我有一个非常奇怪的路由问题。

我有一个使用区域的ASP.NET MVC 3站点。 我在资产区域设置了以下路线:

public override void RegisterArea(AreaRegistrationContext context)
{
    context.MapRoute(
        null,
        "Assets/{controller}/{action}/{code}",
        null,
        new { code = @"(\w{2,3}$)" }
    );

    context.MapRoute(
        "Assets_default",
        "Assets/{controller}/{action}/{id}",
        new { action = "Index", id = UrlParameter.Optional }
    );
}

当我请求以下网址时,它可以完美地运作

http://site.com/Assets/Gallery/GetByCode/AEP
http://site.com/Assets/Gallery/GetByCode/MEC
http://site.com/Assets/Gallery/GetByCode/GP
http://site.com/Assets/Gallery/GetByCode/BR2 
http://site.com/Assets/Gallery/GetByCode/ZZZ 
http://site.com/Assets/Gallery/GetByCode/123

但是当我请求此URL时,我收到“404 - 无法找到资源”错误

http://site.com/Assets/Gallery/GetByCode/PRN
http://site.com/Assets/Gallery/GetByCode/prn

我尝试过的每一个其他网址 - 似乎只是PRN有问题。

我在GalleriesController的开头设置了一个断点> GetByCode操作,PRN路由甚至没有尝试输入操作(如404错误所示)。

有没有人知道为什么PRN在路线上不起作用?或者我还可以尝试调查什么?

感谢您的帮助 Saan

1 个答案:

答案 0 :(得分:2)

这可能与您无法在Windows文件系统上创建“prn”文件夹有关。我的猜测是IIS使用Windows文件系统,这个问题与上述问题产生共鸣。

事实上,这篇文章可能会对您有所帮助:ASP.NET MVC Routing vs. Reserved Filenames in Windows