WebView.BuildLocalStreamUri(String, String) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Crée un URI que vous pouvez passer à NavigateToLocalStreamUri.
public:
virtual Uri ^ BuildLocalStreamUri(Platform::String ^ contentIdentifier, Platform::String ^ relativePath) = BuildLocalStreamUri;
Uri BuildLocalStreamUri(winrt::hstring const& contentIdentifier, winrt::hstring const& relativePath);
public System.Uri BuildLocalStreamUri(string contentIdentifier, string relativePath);
function buildLocalStreamUri(contentIdentifier, relativePath)
Public Function BuildLocalStreamUri (contentIdentifier As String, relativePath As String) As Uri
Paramètres
- contentIdentifier
-
String
Platform::String
winrt::hstring
Identificateur unique du contenu référencé par l’URI. Cela définit la racine de l’URI.
- relativePath
-
String
Platform::String
winrt::hstring
Chemin d’accès à la ressource, relatif à la racine.
Retours
URI créé en combinant et en normalisant contentIdentifier et relativePath.
Exemples
L’exemple de code suivant montre comment utiliser cette méthode avec 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.GetInputStreamAt(0);
}
catch (Exception) { throw new Exception("Invalid path"); }
}
}