536cd135cc
Former-commit-id: 5624ac747d633e885131e8349322922b6a59baaa
73 lines
2.6 KiB
C#
73 lines
2.6 KiB
C#
//------------------------------------------------------------------------------
|
|
// <copyright file="XmlUrlResolver.cs" company="Microsoft">
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// </copyright>
|
|
// <owner current="true" primary="true">Microsoft</owner>
|
|
//------------------------------------------------------------------------------
|
|
|
|
using System.Threading;
|
|
using System.Security.Permissions;
|
|
using System.Net;
|
|
using System.Net.Cache;
|
|
using System.Runtime.Versioning;
|
|
|
|
namespace System.Xml {
|
|
|
|
// Resolves external XML resources named by a Uniform Resource Identifier (URI).
|
|
public partial class XmlUrlResolver : XmlResolver {
|
|
private static object s_DownloadManager;
|
|
private ICredentials _credentials;
|
|
private IWebProxy _proxy;
|
|
private RequestCachePolicy _cachePolicy;
|
|
|
|
static XmlDownloadManager DownloadManager {
|
|
get {
|
|
if ( s_DownloadManager == null ) {
|
|
object dm = new XmlDownloadManager();
|
|
Interlocked.CompareExchange<object>( ref s_DownloadManager, dm, null );
|
|
}
|
|
return (XmlDownloadManager)s_DownloadManager;
|
|
}
|
|
}
|
|
|
|
// Construction
|
|
|
|
// Creates a new instance of the XmlUrlResolver class.
|
|
public XmlUrlResolver() {
|
|
}
|
|
|
|
public override ICredentials Credentials {
|
|
set { _credentials = value; }
|
|
}
|
|
|
|
public IWebProxy Proxy {
|
|
set { _proxy = value; }
|
|
}
|
|
|
|
public RequestCachePolicy CachePolicy {
|
|
set { _cachePolicy = value; }
|
|
}
|
|
|
|
// Resource resolution
|
|
|
|
// Maps a URI to an Object containing the actual resource.
|
|
[ResourceConsumption(ResourceScope.Machine)]
|
|
[ResourceExposure(ResourceScope.Machine)]
|
|
public override Object GetEntity(Uri absoluteUri, string role, Type ofObjectToReturn) {
|
|
if (ofObjectToReturn == null || ofObjectToReturn == typeof(System.IO.Stream) || ofObjectToReturn == typeof(System.Object)) {
|
|
return DownloadManager.GetStream(absoluteUri, _credentials, _proxy, _cachePolicy);
|
|
}
|
|
else {
|
|
throw new XmlException(Res.Xml_UnsupportedClass, string.Empty);
|
|
}
|
|
}
|
|
|
|
[PermissionSetAttribute(SecurityAction.InheritanceDemand, Name = "FullTrust")]
|
|
[ResourceConsumption(ResourceScope.Machine)]
|
|
[ResourceExposure(ResourceScope.Machine)]
|
|
public override Uri ResolveUri(Uri baseUri, string relativeUri){
|
|
return base.ResolveUri(baseUri, relativeUri);
|
|
}
|
|
}
|
|
}
|