我有一个项目,要求我的url在路径上有圆点。例如,我可能有一个URL,例如www.example.com/people/michael.phelps
带有点的url会生成404。我的路由是好的。如果我传入michaelphelps,没有点,那么一切正常。如果我加一个点,就会得到404错误。示例站点运行在Windows 7和IIS8 Express上。URLScan未运行。
我尝试在我的web.config中添加以下内容:
<security>
<requestFiltering allowDoubleEscaping="true"/>
</security>
不幸的是,这并没有什么不同。我刚刚收到一个404.0未找到错误。
这是一个MVC4项目,但我不认为这是相关的。我的路由工作得很好,我所期望的参数都在那里,直到它们包含一个点。
我需要配置什么才能在我的URL中有圆点?
是否可以更改URL结构?
为了我的工作,我尝试了一条路线
url: "Download/{fileName}"
但它对任何有。在里面。
我把路线换成了
routes.MapRoute(
name: "Download",
url: "{fileName}/Download",
defaults: new { controller = "Home", action = "Download", }
);
现在我可以输入localhost:xxxxx/File1.doc/Download,它可以正常工作。
我在视图中的助手也注意到了这一点
@Html.ActionLink("click here", "Download", new { fileName = "File1.doc"})
也会生成到localhost:xxxxx/File1.doc/Download格式的链接。
也许你可以在路由的末尾放一个不需要的单词,比如“/view”或action,这样你的属性就可以以/结尾的/结尾,比如/mike.smith/view
你可能想要考虑使用破折号而不是句号。
在Pro ASP MVC 3框架中,他们建议创建友好的url:
避免使用符号、代码和字符序列。如果你想说句话
分隔符使用破折号(/my-great-article)。下划线不友好,
url编码的空格是奇怪的(/my+great+article)或恶心的
(/ % 20大% 20篇文章)。
它还提到url应该易于阅读和更改。也许考虑使用破折号而不是点的原因也来自同一本书:
不要为HTML页面使用文件扩展名。Aspx或.mvc),但要将它们用于特殊的文件类型(.jpg, .pdf, .zip等)。如果您适当地设置了MIME类型,Web浏览器并不关心文件扩展名,但是人们仍然希望PDF文件以.pdf结尾
因此,虽然句号对人类来说仍然是可读的(尽管在我看来,它的可读性不如破折号),但它可能仍然有点令人困惑/误导,这取决于句号之后的内容。如果有人姓zip呢?那么URL将是/John.zip而不是/John-zip,这甚至会误导编写应用程序的开发人员。