Partager via


WebView.NavigateToLocalStreamUri(Uri, IUriToStreamResolver) Méthode

Définition

Charge le contenu web local à l’URI spécifié à l’aide d’un 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)

Paramètres

source
Uri Uri

URI identifiant le contenu HTML local à charger.

streamResolver
IUriToStreamResolver

Programme de résolution qui convertit l’URI en flux à charger.

Configuration requise pour Windows

Fonctionnalités de l’application
enterpriseCloudSSO

Exemples

L’exemple de code suivant montre comment créer et utiliser un programme de résolution qui servira un fichier à partir du package d’application. Pour obtenir un exemple complet, consultez l’exemple de contrôle 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"); }
    }
}

Remarques

Utilisez cette méthode pour charger du contenu local que la méthode NavigateToString ne gère pas. NavigateToString offre un moyen simple d’accéder à du contenu HTML statique, y compris du contenu avec des références à des ressources telles que CSS, des scripts, des images et des polices. Toutefois, NavigateToString ne permet pas de générer ces ressources par programmation.

Pour utiliser la méthode NavigateToLocalStreamUri, vous devez passer une implémentation IUriToStreamResolver qui traduit un modèle d’URI en flux de contenu. Vous pouvez le faire pour fournir le contenu de toutes les ressources utilisées par une page web ou une série de pages. Par exemple, vous pouvez utiliser cette méthode pour afficher le contenu enregistré sur le système de fichiers local sous forme de fichiers chiffrés ou dans des packages cab. Lorsque le contenu est demandé, vous pouvez utiliser une implémentation IUriToStreamResolver pour le déchiffrer à la volée.

L’interface IUriToStreamResolver a une méthode, UriToStreamAsync, qui prend l’URI et retourne le flux. L’URI se présente sous la forme « ms-local-stream://appname_KEY/folder/file » où KEY identifie le programme de résolution. Utilisez BuildLocalStreamUri pour créer un URI au format approprié qui référence le contenu local à charger.

Notes

Votre implémentation IUriToStreamResolver doit être agile pour éviter un blocage qui peut se produire lorsque le thread d’interface utilisateur attend que IUriToStreamResolver termine son travail avant de continuer. Pour plus d’informations, consultez Threading et marshaling

Si l’application possède cette enterpriseCloudSSO fonctionnalité, les pages web hébergées dans le contrôle WebView peuvent utiliser l’authentification unique avec les ressources Azure Active Directory (AAD).

S’applique à

Voir aussi