diff --git a/src/ImageProcessor.Web/NET45/HttpModules/ImageProcessingModule.cs b/src/ImageProcessor.Web/NET45/HttpModules/ImageProcessingModule.cs
index db378fae4..a91d6e07a 100644
--- a/src/ImageProcessor.Web/NET45/HttpModules/ImageProcessingModule.cs
+++ b/src/ImageProcessor.Web/NET45/HttpModules/ImageProcessingModule.cs
@@ -157,12 +157,11 @@ namespace ImageProcessor.Web.HttpModules
/// The id representing the .
///
///
- /// The for the given id.
+ /// The for the given id.
///
private static SemaphoreSlim GetSemaphoreSlim(string id)
{
- SemaphoreSlim semaphore = SemaphoreSlims.GetOrAdd(id, new SemaphoreSlim(1, 1));
- return semaphore;
+ return SemaphoreSlims.GetOrAdd(id, new SemaphoreSlim(1, 1));
}
///
@@ -362,7 +361,7 @@ namespace ImageProcessor.Web.HttpModules
PermissionSet permission = new PermissionSet(PermissionState.None);
permission.AddPermission(new AspNetHostingPermission(AspNetHostingPermissionLevel.Unrestricted));
bool hasPermission = permission.IsSubsetOf(AppDomain.CurrentDomain.PermissionSet);
-
+
bool isAllowed = true;
// Run the rewritten path past the authorization system again.
@@ -385,17 +384,21 @@ namespace ImageProcessor.Web.HttpModules
{
if (isRemote)
{
- Uri uri = new Uri(requestPath + "?" + urlParameters);
-
- RemoteFile remoteFile = new RemoteFile(uri, false);
-
- // Prevent response blocking.
- WebResponse webResponse = await remoteFile.GetWebResponseAsync().ConfigureAwait(false);
-
SemaphoreSlim semaphore = GetSemaphoreSlim(cachedPath);
try
{
- semaphore.Wait();
+ // This should not happen :(
+ if (semaphore != null)
+ {
+ semaphore.Wait();
+ }
+
+ Uri uri = new Uri(requestPath + "?" + urlParameters);
+
+ RemoteFile remoteFile = new RemoteFile(uri, false);
+
+ // Prevent response blocking.
+ WebResponse webResponse = await remoteFile.GetWebResponseAsync().ConfigureAwait(false);
using (MemoryStream memoryStream = new MemoryStream())
{
@@ -430,24 +433,32 @@ namespace ImageProcessor.Web.HttpModules
}
finally
{
- semaphore.Release();
+ // This should not happen :(
+ if (semaphore != null)
+ {
+ semaphore.Release();
+ }
}
}
else
{
- // Check to see if the file exists.
- // ReSharper disable once AssignNullToNotNullAttribute
- FileInfo fileInfo = new FileInfo(requestPath);
-
- if (!fileInfo.Exists)
- {
- throw new HttpException(404, "No image exists at " + fullPath);
- }
-
SemaphoreSlim semaphore = GetSemaphoreSlim(cachedPath);
try
{
- semaphore.Wait();
+ // This should not happen :(
+ if (semaphore != null)
+ {
+ semaphore.Wait();
+ }
+
+ // Check to see if the file exists.
+ // ReSharper disable once AssignNullToNotNullAttribute
+ FileInfo fileInfo = new FileInfo(requestPath);
+
+ if (!fileInfo.Exists)
+ {
+ throw new HttpException(404, "No image exists at " + fullPath);
+ }
// Process the Image
imageFactory.Load(requestPath)
@@ -465,7 +476,11 @@ namespace ImageProcessor.Web.HttpModules
}
finally
{
- semaphore.Release();
+ // This should not happen :(
+ if (semaphore != null)
+ {
+ semaphore.Release();
+ }
}
}
}