WebView.NavigateToLocalStreamUri(Uri, IUriToStreamResolver) Método

Definición

Carga el contenido web local en el URI especificado mediante 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)

Parámetros

source
Uri Uri

Un URI que identifica el contenido HTML local que se va a cargar.

streamResolver
IUriToStreamResolver

Solucionador que convierte el URI en una secuencia que se va a cargar.

Requisitos de Windows

Características de aplicaciones
enterpriseCloudSSO

Ejemplos

En el ejemplo de código siguiente se muestra cómo crear y usar una resolución que servirá un archivo desde el paquete de la aplicación. Para obtener un ejemplo completo, consulta el ejemplo de control WebView xaml.

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"); }
    }
}

Comentarios

Use este método para cargar contenido local que el método NavigateToString no controlará. NavigateToString proporciona una manera sencilla de navegar al contenido HTML estático, incluido el contenido con referencias a recursos como CSS, scripts, imágenes y fuentes. Sin embargo, NavigateToString no proporciona una manera de generar estos recursos mediante programación.

Para usar el método NavigateToLocalStreamUri, debe pasar una implementación IUriToStreamResolver que traduzca un patrón de URI en una secuencia de contenido. Puede hacerlo para proporcionar el contenido de todos los recursos utilizados por una página web o una serie de páginas. Por ejemplo, puede usar este método para mostrar el contenido guardado en el sistema de archivos local como archivos cifrados o en paquetes cab. Cuando se solicita el contenido, puede usar una implementación de IUriToStreamResolver para descifrarlo sobre la marcha.

La interfaz IUriToStreamResolver tiene un método, UriToStreamAsync , que toma el URI y devuelve la secuencia. El URI está en forma de "ms-local-stream://appname_KEY/folder/file", donde KEY identifica el solucionador. Use BuildLocalStreamUri para crear un URI en el formato correcto que haga referencia al contenido local que se va a cargar.

Nota:

La implementación de IUriToStreamResolver debe ser ágil para evitar el interbloqueo que puede producirse cuando el subproceso de interfaz de usuario espera a que IUriToStreamResolver finalice su trabajo antes de continuar. Para obtener más información, consulta Subprocesos y serialización.

Si la aplicación posee la enterpriseCloudSSO funcionalidad , las páginas web hospedadas dentro del control WebView pueden usar el inicio de sesión único con recursos de Azure Active Directory (AAD).

Se aplica a

Consulte también