Bagikan melalui


WebView.NavigateToLocalStreamUri(Uri, IUriToStreamResolver) Metode

Definisi

Memuat konten web lokal di URI yang ditentukan menggunakan IUriToStreamResolver.

public:
 virtual void NavigateToLocalStreamUri(Uri ^ source, IUriToStreamResolver ^ streamResolver) = NavigateToLocalStreamUri;
void NavigateToLocalStreamUri(Uri const& source, IUriToStreamResolver const& streamResolver);
public void NavigateToLocalStreamUri(System.Uri source, IUriToStreamResolver streamResolver);
function navigateToLocalStreamUri(source, streamResolver)
Public Sub NavigateToLocalStreamUri (source As Uri, streamResolver As IUriToStreamResolver)

Parameter

source
Uri Uri

URI yang mengidentifikasi konten HTML lokal untuk dimuat.

streamResolver
IUriToStreamResolver

Resolver yang mengonversi URI menjadi aliran untuk dimuat.

Persyaratan Windows

Kemampuan aplikasi
enterpriseCloudSSO

Contoh

Contoh kode berikut menunjukkan cara membuat dan menggunakan resolver yang akan melayani file dari paket aplikasi. Untuk contoh lengkapnya, lihat sampel kontrol XAML WebView.

public sealed partial class TestPage : Page
{
    // ... other code ...

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        // The 'Host' part of the URI for the ms-local-stream protocol needs to be a combination of the package name
        // and an application-defined key, which identifies the specific resolver, in this case 'MyTag'.

        Uri url = webView4.BuildLocalStreamUri("MyTag","/Minesweeper/default.html");
        StreamUriWinRTResolver myResolver = new StreamUriWinRTResolver();

        // Pass the resolver object to the navigate call.
        webView4.NavigateToLocalStreamUri(url, myResolver);
    }
}

public sealed class StreamUriWinRTResolver : IUriToStreamResolver
{
    public IAsyncOperation<IInputStream> UriToStreamAsync(Uri uri)
    {
        if (uri == null)
        {
            throw new Exception();
        }
        string path = uri.AbsolutePath;

        // Because of the signature of the this method, it can't use await, so we 
        // call into a separate helper method that can use the C# await pattern.
        return GetContent(path).AsAsyncOperation();
    }

    private async Task<IInputStream> GetContent(string path)
    {
        // We use a package folder as the source, but the same principle should apply
        // when supplying content from other locations
        try
        {
            Uri localUri= new Uri("ms-appx:///html" + path);
            StorageFile f = await StorageFile.GetFileFromApplicationUriAsync(localUri);
            IRandomAccessStream stream = await f.OpenAsync(FileAccessMode.Read);
            return stream;
        }
        catch (Exception) { throw new Exception("Invalid path"); }
    }
}

Keterangan

Gunakan metode ini untuk memuat konten lokal yang tidak akan ditangani oleh metode NavigateToString . NavigateToString menyediakan cara mudah untuk menavigasi ke konten HTML statis, termasuk konten dengan referensi ke sumber daya seperti CSS, skrip, gambar, dan font. Namun, NavigateToString tidak menyediakan cara untuk menghasilkan sumber daya ini secara terprogram.

Untuk menggunakan metode NavigateToLocalStreamUri, Anda harus meneruskan implementasi IUriToStreamResolver yang menerjemahkan pola URI ke dalam aliran konten. Anda dapat melakukan ini untuk menyediakan konten untuk semua sumber daya yang digunakan oleh halaman web, atau rangkaian halaman. Misalnya, Anda dapat menggunakan metode ini untuk menampilkan konten yang disimpan pada sistem file lokal sebagai file terenkripsi atau dalam paket kabin. Ketika konten diminta, Anda dapat menggunakan implementasi IUriToStreamResolver untuk mendekripsinya dengan cepat.

Antarmuka IUriToStreamResolver memiliki satu metode, UriToStreamAsync yang mengambil URI dan mengembalikan aliran. URI dalam bentuk "ms-local-stream://appname_KEY/folder/file" di mana KEY mengidentifikasi resolver. Gunakan BuildLocalStreamUri untuk membuat URI dalam format yang benar yang mereferensikan konten lokal untuk dimuat.

Catatan

Implementasi IUriToStreamResolver Anda harus tangkas untuk mencegah kebuntuan yang dapat terjadi ketika utas UI menunggu IUriToStreamResolver menyelesaikan pekerjaannya sebelum melanjutkan. Untuk informasi selengkapnya, lihat Threading dan Marshaling

Jika aplikasi memiliki enterpriseCloudSSO kemampuan, halaman web yang dihosting di dalam kontrol WebView dapat menggunakan akses menyeluruh dengan sumber daya Azure Active Directory (AAD).

Berlaku untuk

Lihat juga