C# 包含已忽略编码字符串的长URL字符串

C# 包含已忽略编码字符串的长URL字符串,c#,.net,asp.net-mvc,url,c#-4.0,C#,.net,Asp.net Mvc,Url,C# 4.0,昨晚我从我的网站上收到了一些错误,这些错误与URL太长有关,并且URL引用了一些类似于 我在本地测试这个url,这个url实际上是有效的。在Request.Url对象中,它似乎实际上忽略了其中的长编码字符串(Request.Url.OriginalString为,RelativePath为~/) 问题是任何UrlHelper都会继续将其附加到URL上。这样做,Url.Content(“~/foo/bar”)将返回结尾带有/foo/bar的长字符串 这就像是和ApplicationPath或虚拟目

昨晚我从我的网站上收到了一些错误,这些错误与URL太长有关,并且URL引用了一些类似于

我在本地测试这个url,这个url实际上是有效的。在Request.Url对象中,它似乎实际上忽略了其中的长编码字符串(Request.Url.OriginalString为,RelativePath为~/)

问题是任何UrlHelper都会继续将其附加到URL上。这样做,Url.Content(“~/foo/bar”)将返回结尾带有/foo/bar的长字符串

这就像是和ApplicationPath或虚拟目录一样,但这不可能,因为它在live server和我的本地计算机上的工作方式完全相同,但IIS的两个实例没有设置相同的虚拟目录/应用程序


这个字符串有什么意义吗?有什么方法可以去掉它吗?

我相信这与会话管理有关,并将'cookieless'参数应用于'true',将该值设置为'false',您的URL应该更小。查看本文了解详细信息,尽管如果您需要无Cookie环境,您的会话方法可能需要重新考虑…

我的会话已经在使用Cookie(无Cookie属性不在config中的sessionState标记上,我假设默认为false)。通常,我看不到这一点。但是有一个用户能够访问这个。显然,即使在使用cookie时,输入url也必须仍然有效。如果您没有启用此功能,并且这种情况偶尔会发生,那么您可能是会话黑客->的目标,以及解决此问题的一种可能方法