我有一个非常奇怪的路由问题。
我有一个使用区域的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
答案 0 :(得分:2)
这可能与您无法在Windows文件系统上创建“prn”文件夹有关。我的猜测是IIS使用Windows文件系统,这个问题与上述问题产生共鸣。
事实上,这篇文章可能会对您有所帮助:ASP.NET MVC Routing vs. Reserved Filenames in Windows