diff --git a/src/Orchard.Azure.Tests/FileSystems/Media/AzureBlobStorageProviderTests.cs b/src/Orchard.Azure.Tests/FileSystems/Media/AzureBlobStorageProviderTests.cs index 0ce78d3b1..41b1c8c59 100644 --- a/src/Orchard.Azure.Tests/FileSystems/Media/AzureBlobStorageProviderTests.cs +++ b/src/Orchard.Azure.Tests/FileSystems/Media/AzureBlobStorageProviderTests.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using System.Web; using NUnit.Framework; using Orchard.Azure.FileSystems.Media; using Microsoft.WindowsAzure; @@ -243,5 +244,18 @@ namespace Orchard.Azure.Tests.FileSystems.Media { Assert.That(content, Is.EqualTo("fo")); } + + [Test] + public void HttpContextWeaverShouldBeDisposed() + { + _azureBlobStorageProvider.CreateFile("foo1.txt"); + _azureBlobStorageProvider.CreateFile("foo2.txt"); + _azureBlobStorageProvider.CreateFile("foo3.txt"); + + foreach(var f in _azureBlobStorageProvider.ListFiles("")) + { + Assert.That(HttpContext.Current, Is.Null); + }; + } } } \ No newline at end of file diff --git a/src/Orchard.Azure/AzureFileSystem.cs b/src/Orchard.Azure/AzureFileSystem.cs index 1697ba9d3..06b57bdbc 100644 --- a/src/Orchard.Azure/AzureFileSystem.cs +++ b/src/Orchard.Azure/AzureFileSystem.cs @@ -108,14 +108,13 @@ namespace Orchard.Azure { if ( !prefix.EndsWith("/") ) prefix += "/"; - using ( new HttpContextWeaver() ) { - foreach (var blobItem in BlobClient.ListBlobsWithPrefix(prefix).OfType()) { - // ignore directory entries - if(blobItem.Uri.AbsoluteUri.EndsWith(FolderEntry)) - continue; - - yield return new AzureBlobFileStorage(blobItem, _absoluteRoot); - } + using (new HttpContextWeaver()) { + return BlobClient + .ListBlobsWithPrefix(prefix) + .OfType() + .Where(blobItem => !blobItem.Uri.AbsoluteUri.EndsWith(FolderEntry)) + .Select(blobItem => new AzureBlobFileStorage(blobItem, _absoluteRoot)) + .ToArray(); } }