1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
//------------------------------------------------------------------------------
// <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);
}
}
}
|