I, 我有以下URL,由Apache Tomcat应用程序成功处理:
http://localhost:8080/ApplicationX/FileY/UpdateDocument(`<add location="somewhere">ContentZ</add>`).xml?VIEW=RAW
出于某种原因,当我尝试使用ASP.NET Http请求处理程序(实现IHttpHandler的类)在IIS中处理相同的请求时,我得到“错误请求”异常,我的代码永远不会被调用。 我已在注册表中应用此修补程序(http://support.microsoft.com/kb/826437)以允许使用':'字符,但它对于大于和小于字符没有帮助。
任何使这项工作的方法? 在Apache中允许使用它的任何原因,但不允许在IIS中使用吗?
干杯。
P.S。我在使用.NET 3.5 SP1的Windows XP工作站上使用IIS 5.1。
答案 0 :(得分:5)
尝试使用字符实体来转义这些字符?:
http://localhost:8080/ApplicationX/FileY/UpdateDocument(`<add location="somewhere">ContentZ</add>`).xml?VIEW=RAW
答案 1 :(得分:4)
将>
替换为%3E
并将<
替换为%3C
验证并正常工作。
答案 2 :(得分:3)
如果您想避免此类问题,则需要对您的网址进行网址编码。
String UrlEncode(String value)
{
StringBuilder result = new StringBuilder();
foreach (char symbol in value)
{
if ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.~".IndexOf(symbol) != -1) result.Append(symbol);
else result.Append("%u" + String.Format("{0:X4}", (int)symbol));
}
return result.ToString();
}
以上支持unicode,几乎所有内容。
答案 3 :(得分:-1)
如果发送请求的应用程序是无法修改的旧版应用程序,该怎么办?有没有办法解决这个问题,并允许IIS按原样接受请求?
答案 4 :(得分:-2)
您应该将<
和>
符号替换为<
和>
,因为这些字符是特殊字符。因此,请参阅PHP函数urlencode(urlencode)。