【发布时间】:2009-09-08 09:31:22
【问题描述】:
我们有一个IHttpHandler 用于样式表,并向页面添加一个<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处理程序中,我们UrlTokenDecoded查询字符串参数是这样的:
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
- 似乎独立于用户代理(IE6、7、8、FF 和 Chrome 有这些例外)
- 我们的(未经证实的)怀疑包括防病毒产品、HTTP 代理、浏览器插件
- 找到了this 远程相关的问题,但它是关于视图状态问题
【问题讨论】:
-
您找到了造成这种现象的原因吗?
FromBase64String?