2008-11-26 267 views
0

我看到错误“The';'字符,十六进制值0x3B,不能包含在名称中。“在我的ASP.NET Web App的日志文件中。多数民众赞成记录的URL看起来是这样的:';'字符,十六进制值0x3B,不能包含在名称中

mypage.aspx?paramone=one+two&paramtwo=zero+1 

所以我的第一个问题是什么类型的系统/浏览器编码原始查询字符串? (这种情况很少见)

我已经试过的代码在Page_Load()事件下面的代码片段来解决这个问题:

string rawUrl = Request.RawUrl; 
if (rawUrl.Contains(amp)) 
{ 
    rawUrl = rawUrl.Replace("&", "&"); 
    Server.Transfer(rawUrl, false); 
    return; 
} 

然而,当它转移回这个页面&又回来了查询字符串。所以我猜测.Transfer()函数编码第一个参数。

有关解决此问题的建议?

回答

1
  1. 您的Web服务器应该能够从HTTP请求,这应使您能够找出罪魁祸首日志“用户代理”字段。

  2. 不要修复它 - 有一个非常明确的URI参数合法语法集合,这不是其中之一。

+0

http://www.blooberry.com/indexdot/html/topics/urlencoding.htm – tamberg 2008-11-26 15:55:02

0

当您尝试导出微软目录到XML,生成的文件无法导入,您会收到以下错误消息 “XML文件路径/文件名包含在行错误。”一个名为”包含无效字符。“

如果您使用Microsoft Visual Studio .NET中您会收到以下错误信息验证XML目录:

“的‘(’字符,十六进制值0×28,无法开始名行#,位置#。”

此问题的原因是商业服务器的出口并没有编码以下特殊字符:

The range 0x0021 – 0x002F includes ! “ # $ % & ‘ () * + , - ./
The range 0x03A – 0x0040 includes : ; <=> ? @ 
The range 0x007B – 0x007E includes { | } ~ 
The range 0x005B – 0x005E [ \ ] ^** 
相关问题