MVC 3中Url中非ASCII字符的问题

时间:2011-07-07 12:04:45

标签: asp.net asp.net-mvc-3 url-routing non-ascii-characters

我用2种语言编写MVC 3应用程序:en和fa;为了优化搜索引擎的Url,我在Urls中使用页面标题,就像这样(2个页面中的一页):

mysite.com/en/Home/Sheet/2/my-presentation-page
mysite.com/fa/Home/Sheet/2/صفحه-معرفی-من

,路线图是:

{lang}/{controller}/{action}/{id}/{uriTitle}

在本地,这确实有效,但当我在互联网上传时,第一个Url正常工作,但第二个只显示主页! (mysite.com/fa/Home/Index)没有任何重定向或抛出任何错误!只是,显示上面的Url的内容! 请注意,Url不会更改!只是内容是主页的内容!只是它! 请帮帮我,我不明白为什么?????? 问候。

2 个答案:

答案 0 :(得分:0)

我自己找到答案。 MVC没有任何问题!我的问题是这样的: 服务器拒绝其网址中包含非ASCII字符的所有请求!实际上,Web服务器在收到包含非ascii字符的请求时,会使用网站的缓存默认页面来响应它,而不是将请求传递给应用程序! 我改变我的托管公司,我的问题解决了。 感谢所有人,问候

答案 1 :(得分:0)

您的解决方案仍然存在问题。 URL语法的官方规范明确指出US-ASCII范围之外的字符应该是百分比编码的,因此您的旧托管公司的实现使其正确。此外,如果您的新主机不符合此标准,那么您可能会通过注入暴露安全漏洞。

   ABNF表示法将其终值定义为非负值    基于US-ASCII编码字符集的整数(代码点)    [ASCII]。因为URI是一系列字符,所以我们必须反转    该关系是为了理解URI语法。因此,    ABNF使用的整数值必须映射回它们的    通过US-ASCII对应的字符以完成语法    规则。    URI由一组有限的字符组成    数字,字母和一些图形符号。保留的子集    这些字符可用于分隔a中的语法组件    URI同时剩下的字符,包括两个未保留的字符集    和那些不作为分隔符的保留字符定义每个    组件的识别数据。

有效网址的ABNF语法位于:http://tools.ietf.org/html/rfc3986#appendix-A