я, у меня есть следующий URL, который успешно обрабатывается приложением Tomcat Apache:
http://localhost:8080/ApplicationX/FileY/UpdateDocument(`ContentZ `).xml?VIEW=RAW
По некоторым причинам, когда я пытаюсь обработать тот же запрос в IIS с обработчиком Запросов HTTP ASP.NET (Реализация класса IHttpHandler), я получаю 'Плохой запрос' исключение, и мой код никогда не называют. Я применил этот патч в реестре (http://support.microsoft.com/kb/826437) для разрешения ':' символ, но это не помогло относительно большего и меньшего, чем символы.
Какие-либо способы сделать эту работу? Какие-либо причины с ним позволяются в Apache, но не в IIS?
Удачи.
P.S. Я использую IIS 5.1 на рабочей станции Windows XP с.NET 3,5 SP1.
Попробовать использовать символьные сущности для экранирования этих символов?:
http://localhost:8080/ApplicationX/FileY/UpdateDocument(`<add location="somewhere">ContentZ</add>`).xml?VIEW=RAW
Если вы хотите избежать подобных проблем, вам необходимо кодировать URL-адрес.
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();
}
Вышеупомянутое поддерживает юникод и почти все.
Вы должны заменить знаки <
и >
на <
и >
, поскольку эти символы специальные символы. Поэтому см. Urlencode функции PHP ( urlencode ).