Попробуйте передать htmlLocation в Path.GetFullPath ().
Это автоматически возвращает абсолютный путь к файлу в текущем каталоге exe.
Вот вспомогательная функция, которую я написал:
public void LoadPageFromDisk(string filePath)
{
Uri targetPage = null;
string workingPageURI = filePath.Trim();
workingPageURI = Path.GetFullPath(workingPageURI);
if (Uri.TryCreate(workingPageURI, UriKind.RelativeOrAbsolute, out targetPage) == true)
{
webBrowserControl.Navigate(targetPage);
}
}
Если для параметра filePath указано «localfile.htm», Path.GetFullPath вернет путь к нему, основанный на текущей выполняемой сборке, например: c: \ Program Files \ MyApp \ localFile.htm
Затем Uri.TryCreate преобразует абсолютные пути к файлам для вас в действительный файл: // Uri.
Наконец, WebBrowser.Navigate имеет перегрузку, которая принимает Uri. (UriKind.RelativeOrAbsolute необходим для того, чтобы TryCreate мог правильно проанализировать абсолютный путь к файлу.)