UWP C #: открыть файл HTML с локального диска в браузере по умолчанию - PullRequest
1 голос
/ 05 марта 2019

Следующий код работает, чтобы открыть online URL.Но он НЕ работает для веб-страницы (HTML file) от local disk:

Вопрос : Кажется, я что-то здесь упускаю.Как мы можем сделать это для html-файла с локального диска?

ПРИМЕЧАНИЕ : Ошибка не возвращается, возвращается только значение success переменной false.Я убедился, что файл HTML существует, успешно открыв его вручную.

async void DefaultLaunch()
{
   // The URI to launch. NOTE: It works only for online URLs, http://www.bing.com etc.
   var uriTest = new Uri(@"file:///C:/DotNET2017/Test.html");

    // Launch the URI
    try
    {
        var success = await Windows.System.Launcher.LaunchUriAsync(uriTest);
    }
    catch(Exception ex)
    {
        string st = ex.Message;
    }
}

Снимок экрана со значением uriTest в режиме отладки :

enter image description here

Ответы [ 2 ]

1 голос
/ 06 марта 2019

Согласно документации:

LaunchUriAsync (Uri) Возвращает true, если приложение по умолчанию для схемы URI было запущено; иначе false.

Таким образом, для обработки схемы должно быть зарегистрировано приложение. В системе нет приложения, зарегистрированного для обработки файла: схема, скорее, оно обрабатывается самой системой, которая не является приложением. Так что, если вы примете это во внимание, он вернет false, как и ожидалось.

Вы должны использовать Launcher.LaunchFileAsync метод. Но учтите, что если вы не определите возможность broadFileSystemAccess, вы не сможете получить StorageFile из произвольного пути для отправки в качестве параметра для этого метода.

1 голос
/ 05 марта 2019

Вы не можете использовать "файл /// ..." для обеда локального файла. Вы должны использовать функцию запуска файла, и, поскольку это HTML-файл, он откроется в браузере

first Получите ваш IStorageFile от:

GetFileFromPathAsync

, а затем просто запустите файл:

Windows.System.Launcher.LaunchFileAsync(myStorageFile) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...