WebView.NavigateToLocalStreamUri(Uri, IUriToStreamResolver) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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
- 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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk