';'字符,十六进制值0x3B,不能包含在名称中

时间:2008-11-26 14:50:31

标签: c# asp.net

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

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()函数对第一个参数进行编码。

有关解决此问题的建议?

2 个答案:

答案 0 :(得分:1)

  1. 您的网络服务器应该能够记录HTTP请求中的“用户代理”字段,这样才能识别罪魁祸首。

  2. 不要修复它 - 对于URI参数有一套定义明确的法律语法,而这不是其中之一。

答案 1 :(得分:0)

当您尝试将Microsoft目录导出到XML时,无法导入生成的文件,并且您收到以下错误消息 “XML文件路径/文件名在行中包含错误。”“名称包含无效字符。”

如果使用Microsoft Visual Studio .NET验证XML目录,则会收到以下错误消息:

“''('字符,十六进制值0x28,无法开始名称。行#,位置#”

出现此问题的原因是Commerce Server导出未编码以下特殊字符:

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