WebView.NavigateToLocalStreamUri(Uri, IUriToStreamResolver) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
IUriToStreamResolver를 사용하여 지정된 URI에서 로컬 웹 콘텐츠를 로드합니다.
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)
매개 변수
- streamResolver
- IUriToStreamResolver
URI를 로드할 스트림으로 변환하는 확인자입니다.
Windows 요구 사항
앱 기능 |
enterpriseCloudSSO
|
예제
다음 코드 예제에서는 앱 패키지에서 파일을 제공하는 확인자를 만들고 사용하는 방법을 보여 있습니다. 전체 예제는 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"); }
}
}
설명
NavigateToString 메서드가 처리하지 않는 로컬 콘텐츠를 로드하려면 이 메서드를 사용합니다. NavigateToString 은 CSS, 스크립트, 이미지 및 글꼴과 같은 리소스에 대한 참조가 있는 콘텐츠를 포함하여 정적 HTML 콘텐츠로 쉽게 이동할 수 있는 방법을 제공합니다. 그러나 NavigateToString 은 이러한 리소스를 프로그래밍 방식으로 생성하는 방법을 제공하지 않습니다.
NavigateToLocalStreamUri 메서드를 사용하려면 URI 패턴을 콘텐츠 스트림으로 변환하는 IUriToStreamResolver 구현을 전달해야 합니다. 이 작업을 수행하여 웹 페이지 또는 일련의 페이지에서 사용하는 모든 리소스에 대한 콘텐츠를 제공할 수 있습니다. 예를 들어 이 메서드를 사용하여 로컬 파일 시스템에 저장된 콘텐츠를 암호화된 파일 또는 cab 패키지로 표시할 수 있습니다. 콘텐츠가 요청되면 IUriToStreamResolver 구현을 사용하여 즉시 해독할 수 있습니다.
IUriToStreamResolver 인터페이스에는 URI를 사용하고 스트림을 반환하는 UriToStreamAsync 메서드가 하나 있습니다. URI는 KEY가 확인자를 식별하는 "ms-local-stream://appname_KEY/folder/file" 형식입니다. BuildLocalStreamUri를 사용하여 로드할 로컬 콘텐츠를 참조하는 올바른 형식의 URI를 만듭니다.
참고
IUriToStreamResolver 구현은 UI 스레드가 계속하기 전에 IUriToStreamResolver가 작업을 완료할 때까지 대기할 때 발생할 수 있는 교착 상태를 방지하기 위해 민첩해야 합니다. 자세한 내용은 스레딩 및 마샬링을 참조하세요.
앱에 기능이 있는 enterpriseCloudSSO
경우 WebView 컨트롤 내에서 호스트되는 웹 페이지는 AAD(Azure Active Directory) 리소스에서 Single Sign-On을 사용할 수 있습니다.