我们有一个IHttpHandler
for 样式表并向<link/>
页面添加一个标签,如下所示:
HtmlGenericControl link = new HtmlGenericControl("link");
link.Attributes.Add("rel", "stylesheet");
link.Attributes.Add("href", "stylesheet.axd?d=" +
HttpServerUtility.UrlTokenEncode(token));
head.Controls.Add(link);
在处理程序中stylesheet.axd
,我们查询字符串参数如下:UrlTokenDecode
d
var token = HttpServerUtility.UrlTokenDecode(Request.QueryString["d"]);
这在大多数情况下都有效,但我们时不时地在我们的日志中发现以下两个异常之一:
[FormatException: Invalid character in a Base-64 string.]
System.Convert.FromBase64CharArray(Char[] inArray, Int32 offset, Int32 length)
System.Web.HttpServerUtility.UrlTokenDecode(String input)
...
[FormatException: Invalid length for a Base-64 char array.]
System.Convert.FromBase64CharArray(Char[] inArray, Int32 offset, Int32 length)
System.Web.HttpServerUtility.UrlTokenDecode(String input)
System.Web.HttpServerUtilityWrapper.UrlTokenDecode(String input)
...
有什么想法会导致这种现象吗?
评论:
- 生成的 URL < 1500,因此低于任何已知的 URL 限制(例如 IE:2083)
- 似乎独立于用户代理(IE6、7、8、FF 和 Chrome 有这些例外)
- 我们(未经证实的)怀疑包括防病毒产品、HTTP 代理、浏览器插件
- 发现这个远程相关的问题,但它是关于视图状态问题