Fragment (ancla #) en .NET 4 WebBrowser Control se pierde con Adobe PDF Reader y el archivo: //
Creo un URI con un fragmento (también conocido como ancla #).
UriBuilder ub = new UriBuilder("file://path/doc.pdf");
ub.Fragment = "chapterX";
La url se muestra correctamente en el depurador (ub ->file://path/doc.pdf#chapterX
). Pero cuando lo asigno a un control WebBrowser, la parte del fragmento se pierde (la razón del fragmento se ve enPDF Parámetro abierto).
this._myWebBrowser.Url = ub.Uri;
// Alternative this._myWebBrowser.Navigate("file://path/doc.pdf#chapterX");
Cuando verificothis._myWebBrowser.Url
muestrafile://path/doc.pdf
. this._myWebBrowser.Url.Fragment
está vacío: también es de solo lectura y no se puede asignar.
Como C.Haas ha mostrado a continuación, el concepto funciona en general, por algunas razones falla cuando el recurso es un archivo PDF LOCAL (!).
Resumen
Funciona si el protocolo es http Funciona si el recurso es .htm / .html, incluso cuando el protocolo es file: // Funciona si el archivo es .pdf y el protocolo es http (igual que 1.) Falla si se refiere al archivo pdf local, el fragmento se pierde¿Alguna solución para esto?
Revisiones:
20110219 - Actualización gracias a C.Haas. Como muestra Chris, está bien con ".htm", pero falla con ".pdf" y solo si se refiere a un recurso local. 20110218 - Algunos hallazgos gracias a abatishchev: si usoNavigate
tampoco funciona, peroNavigate
ofrece proporcionar un nombre de marco. En este caso, aparece un IE externo (porque no hay marco en la página del control) y luego la URL con el fragmento se muestra correctamente. No es lo que quiero, pero me muestra que la URL en sí es correcta y el error parece estar dentro del control.