猿问

网址末尾出现“点”时出现“找不到资源。”错误

我正在使用ASP .NET MVC Beta,当我使用此URL末尾带有“点”的URL时,出现HTTP 404(找不到资源)错误:


http:// localhost:81 / Title / Edit / Code1。


如果删除末尾的点或中间的某点,则不会出现错误。


我尝试调试,但是在MvcHandler中的ProcessRequest之前,我从“ System.Web.CachedPathData.GetConfigPathData(String configPath)”中收到错误。


网址末尾是否不允许使用“点”?还是有办法修复路由定义以处理此URL?


例如:我有一个名为Detail1 [Id(integer),Code(string),Description(string)]的表,该表通过其ID列与Master1具有FK关系。每当我选择Master1的记录时,我也会选择它的Detail1记录以获取它的Code字段。为了不每次都进行此联接(因为通常不仅只有一个细节,而且有多个细节),所以我选择不使用Id列,而是制作Detail1的代码PK。


但是,当我摆脱Id并将Code用作PK时,我的路线也开始与Code字段一起使用,例如:Detail1 \ Edit \ Code1


该代码中可以包含任何内容,也可以包含DOT。在某些情况下,我可以在最后禁止DOT,但有时确实很有意义。


而且我还看过这篇文章,路线可能非常灵活,所以我认为我的想法并不奇怪。


所以这就是为什么我做一些非标准的事情。有什么建议么?


还有为什么在网址末尾有DOT太奇怪了?


繁星淼淼
浏览 514回答 3
3回答

森林海

如果使用的是.NET 4.0,则可以在web.config的system.web部分中设置此标志,并且将允许该标志:<httpRuntime relaxedUrlToFileSystemMapping="true" />我已经对其进行了测试,并且可以正常工作。Haack对此有一个解释。

米脂

好吧,在.NET 4.5中,我通过在网址末尾添加“ /”来解决此问题。因此,在您的情况下,它将是“ http:// localhost:81 / Title / Edit / Code1。/”。这是我所做的唯一一件事,无需添加httpRuntime设置。
随时随地看视频慕课网APP
我要回答