最近出现一个很特别的问题,在一个地址上的参数为中文且为奇数个时,当前页的开始的所有链接的请求的HttpApplication.Context都出现错误,导致从这个页开始的访问请求全部错误,包括样式引用、图片、IFRAME等(在经典模式下明显),提示
在多字节的目标代码页中,没有此 Unicode 字符可以映射到的字符。 (异常来自 HRESULT:0x80070459) 
站点是放在WINDOWS 2008系统上,配在IIS7,池设置为集成模式。
反复测试,发现是在中文为奇数时,以当前页为出发点,所有后续请求的Context.Request.UrlReferrer对象错误,
是在Application.BeginRequest、AuthorizeRequest等这些事件的请求出错。
并且Context.RewritePath、Server.Execute、Server.Transfer、Context.Response.Redirect全部出错,
无法正常使用(奇怪的是Context.Response.Write()是正常的。)
,都是报同一错误“在多字节的目标代码页中,没有此 Unicode 字符可以映射到的字符。 (异常来自 HRESULT:0x80070459) 
”。
所以伪静态的链接全部报错。
当然这个伪静态的地址其实是正常的,只要按回车重新访问一下或用JS跳转就正常(这个时候已经没有UrlReferrer对象了)。错误地址:
http://XXX.XXX.com/XX.aspx?key=写字楼 或 http://XXX.XXX.com/XX.htm?key=写字楼
截图:
然后从这个页开始的所有链接都出错“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------在多字节的目标代码页中,没有此 Unicode 字符可以映射到的字符。 (异常来自 HRESULT:0x80070459) 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentOutOfRangeException: 在多字节的目标代码页中,没有此 Unicode 字符可以映射到的字符。 (异常来自 HRESULT:0x80070459)源错误: 
行 83:                 if (serverName == "")
行 84:                 {
行 85:                     serverName = Context.Current.Request.Url.Host.ToLower();
行 86:                 }
行 87:                 return serverName;
都是在获取Current.Request.Url或Current.Request.UrlReferrer时出错。需要特别说明一下:
1.这个错误仅在安装了Microsoft VM的IE上才会出现,其他的IE6\7\8及FF等正常
2.同样的代码配置在WINDOWS2003上访问正常,包括安装了Microsoft VM的IE也正常不知道各位大哥有没有好的解决方法。
同样的代码放到WINDOWS2003 上是正常的