Как вы правильно кодируете путь, который включает в себя хэш (#)? Обратите внимание, что хэш не является индикатором фрагмента (закладки?), А частью имени пути.
Например, если существует такой путь:
http://www.contoso.com/code/c#/somecode.cs
Это вызывает проблемы, когда вы, например, пытаетесь сделать это:
Uri myUri = new Uri("http://www.contoso.com/code/c#/somecode.cs");
Казалось бы, он интерпретирует хэш как индикатор фрагмента.
Неправильно вручную заменить # на% 23. Есть ли другие символы, которые нужно заменить? В Uri и HttpUtility есть некоторые методы экранирования, но ни один из них не выполняет трюк.