Merge pull request from Codinlab/issue/6639

Azure Media Storage doesn't recognize its own URLs

Fixes 
This commit is contained in:
Sébastien Ros 2016-03-30 15:29:41 -07:00
commit 5af991e516
2 changed files with 8 additions and 5 deletions
src/Orchard.Web/Modules/Orchard.Azure/Services/FileSystems

View File

@ -308,9 +308,9 @@ namespace Orchard.Azure.Services.FileSystems {
public string GetPublicUrl(string path) {
path = ConvertToRelativeUriPath(path);
var uri = new UriBuilder(Container.GetBlockBlobReference(String.Concat(_root, path)).Uri);
if (!string.IsNullOrEmpty(_publicHostName)) uri.Host = _publicHostName;
return uri.ToString();
var uriBuilder = new UriBuilder(Container.GetBlockBlobReference(String.Concat(_root, path)).Uri);
if (!string.IsNullOrEmpty(_publicHostName)) uriBuilder.Host = _publicHostName;
return uriBuilder.Uri.ToString();
}
private class AzureBlobFileStorage : IStorageFile {

View File

@ -4,6 +4,7 @@ using Orchard.Azure.Services.Environment.Configuration;
using Orchard.Environment.Configuration;
using Orchard.Environment.Extensions;
using Orchard.FileSystems.Media;
using System;
namespace Orchard.Azure.Services.FileSystems.Media {
@ -64,8 +65,10 @@ namespace Orchard.Azure.Services.FileSystems.Media {
/// <returns>The corresponding local path.</returns>
public string GetStoragePath(string url) {
EnsureInitialized();
if (url.StartsWith(_absoluteRoot)) {
return HttpUtility.UrlDecode(url.Substring(Combine(_absoluteRoot, "/").Length));
var rootUri = new Uri(_absoluteRoot);
var uri = new Uri(url);
if((uri.Host == rootUri.Host || (!string.IsNullOrEmpty(_publicHostName) && uri.Host == _publicHostName)) && uri.AbsolutePath.StartsWith(rootUri.AbsolutePath)) {
return HttpUtility.UrlDecode(uri.PathAndQuery.Substring(Combine(rootUri.AbsolutePath, "/").Length));
}
return null;