Я создаю URI с фрагментом (он же якорь #).
UriBuilder ub = new UriBuilder("file://path/doc.pdf");
ub.Fragment = "chapterX";
URL-адрес корректно отображается в отладчике (ub -> file://path/doc.pdf#chapterX
).Но когда я назначаю его элементу управления WebBrowser, часть фрагмента теряется (причину для фрагмента см. Параметр открытия PDF ).
this._myWebBrowser.Url = ub.Uri;
// Alternative this._myWebBrowser.Navigate("file://path/doc.pdf#chapterX");
Когда я проверяю this._myWebBrowser.Url
, он отображает file://path/doc.pdf
.this._myWebBrowser.Url.Fragment
пусто - также доступно только для чтения и не может быть назначено.
Как показано ниже C.Haas, концепция работает в целом, по некоторым причинам она терпит неудачу, когда ресурс представляет собой ЛОКАЛЬНЫЙ (!) Pdf-файл.
Сводка:
- Работает, если протокол http
- Работает, если ресурс .htm / .html - даже если протокол является файлом: //
- Работает, если файл .pdf и протокол http (такой же, как 1).
- Сбой, если ссылается на локальный файл PDF, фрагмент теряется
Есть ли обходной путь для этого?
Редакции:
- 20110219 - Обновление благодаря C.Haas.Как показывает Крис, ОК с ".htm", но не с ".pdf" и только в том случае, если он ссылается на локальный ресурс.
- 20110218 - Некоторые находки благодаря Абатищеву: если я использую
Navigate
, это делаетне работает, но Navigate
предлагает предоставить имя кадра.В этом случае всплывает внешний IE (потому что на странице элемента управления нет фрейма), а затем корректно отображается URL с фрагментом.Это не то, что я хочу, но оно показывает, что сам URL-адрес правильный, и ошибка, по-видимому, находится внутри элемента управления.