我有一個WebView用於從ApplicationData.Current.LocalFolder加載本地文件。我做了一個方法調用瀏覽上的WebView使用NavigateToLocalStreamUri的WebView實際上並不實際導航
public override void BrowserNavigateLocal(string fileName)
{
Uri uri = browser.BuildLocalStreamUri("page", fileName);
browser.NavigateToLocalStreamUri(uri, new MyStreamUriResolver());
}
我IUriToStreamResolver看起來像這樣
public sealed class MyStreamUriResolver : IUriToStreamResolver
{
public IAsyncOperation<IInputStream> UriToStreamAsync(Uri uri)
{
lock (this)
{
if (uri == null)
{
throw new Exception();
}
string path = uri.AbsolutePath;
return GetContent(path).AsAsyncOperation();
}
}
private async Task<IInputStream> GetContent(string path)
{
try
{
Uri localUri = new Uri("ms-appdata:///local/HTML" + path);
//StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(localUri);
//IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.Read);
StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(localUri).AsTask().ConfigureAwait(false);
IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.Read).AsTask().ConfigureAwait(false);
if (true)
{
Windows.Storage.Streams.DataReader reader = new DataReader(stream);
await reader.LoadAsync((uint)stream.Size);
string fileContent = reader.ReadString((uint)stream.Size);
stream.Seek(0);
}
return stream;
}
catch (Exception ex)
{
throw new Exception("Path is invalid");
}
}
}
我已經包括了一些調試代碼,讓我檢查一切文件內容的WebView請求。一切看起來不錯,文件並沒有引發異常。
我第一次調用BrowserNavigateLocal()時效果很好,但它不會加載我的第二頁。 WebView只停留在當前頁面上。
WebView引發NavigationStarting和ContentLoading事件,但NavigationCompleted永遠不會被第二頁命中。
編輯:我可以確認我的第二頁上的html導致了問題。我試圖導航到一個臨時頁面,它的工作完美。我仍然不知道如何去調試我的第二頁。
任何幫助將不勝感激。