WebView.BuildLocalStreamUri(String, String) WebView.BuildLocalStreamUri(String, String) WebView.BuildLocalStreamUri(String, String) WebView.BuildLocalStreamUri(String, String) Method


Creates a URI that you can pass to NavigateToLocalStreamUri.

public : Uri BuildLocalStreamUri(Platform::String contentIdentifier, Platform::String relativePath)
Uri BuildLocalStreamUri(winrt::hstring contentIdentifier, winrt::hstring relativePath) const;
public Uri BuildLocalStreamUri(String contentIdentifier, String relativePath)
Public Function BuildLocalStreamUri(contentIdentifier As String, relativePath As String) As Uri


String String

A unique identifier for the content the URI is referencing. This defines the root of the URI.

String String

The path to the resource, relative to the root.


Uri Uri

The URI created by combining and normalizing the contentIdentifier and relativePath.


The following code example shows how to use this method with a resolver that will serve a file from the app package. For a complete example, see the XAML WebView control sample.

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
            Uri localUri= new Uri("ms-appx:///html" + path);
            StorageFile f = await StorageFile.GetFileFromApplicationUriAsync(localUri);
            IRandomAccessStream stream = await f.OpenAsync(FileAccessMode.Read);
            return stream.GetInputStreamAt(0);
        catch (Exception) { throw new Exception("Invalid path"); }

See also