diff --git a/src/Orchard.Azure/AzureFileSystem.cs b/src/Orchard.Azure/AzureFileSystem.cs index 521f9c1cf..5e49d8f83 100644 --- a/src/Orchard.Azure/AzureFileSystem.cs +++ b/src/Orchard.Azure/AzureFileSystem.cs @@ -298,26 +298,37 @@ namespace Orchard.Azure { return "application/unknown"; } - string applicationHost = System.Environment.ExpandEnvironmentVariables(@"%windir%\system32\inetsrv\config\applicationHost.config"); - if (File.Exists(applicationHost)) { - var xdoc = XDocument.Load(applicationHost); - var mimeMap = xdoc.XPathSelectElements("//staticContent/mimeMap[@fileExtension='" + extension + "']").FirstOrDefault(); - if(mimeMap != null) { - var mimeType = mimeMap.Attribute("mimeType"); - if(mimeType != null) { - return mimeType.Value; + try { + string applicationHost = System.Environment.ExpandEnvironmentVariables(@"%windir%\system32\inetsrv\config\applicationHost.config"); + string webConfig = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("/").FilePath; + + // search for custom mime types in web.config and applicationhost.config + foreach (var configFile in new[] {webConfig, applicationHost}) { + if (File.Exists(configFile)) { + var xdoc = XDocument.Load(configFile); + var mimeMap = xdoc.XPathSelectElements("//staticContent/mimeMap[@fileExtension='" + extension + "']").FirstOrDefault(); + if (mimeMap != null) { + var mimeType = mimeMap.Attribute("mimeType"); + if (mimeType != null) { + return mimeType.Value; + } + } } } - } - // search into the registry - RegistryKey regKey = Registry.ClassesRoot.OpenSubKey(extension.ToLower()); - if (regKey != null) { - var contentType = regKey.GetValue("Content Type"); - if (contentType != null) { - return contentType.ToString(); + // search into the registry + RegistryKey regKey = Registry.ClassesRoot.OpenSubKey(extension.ToLower()); + if (regKey != null) { + var contentType = regKey.GetValue("Content Type"); + if (contentType != null) { + return contentType.ToString(); + } } } + catch { + // if an exception occured return application/unknown + return "application/unknown"; + } return "application/unknown"; } diff --git a/src/Orchard.Azure/Orchard.Azure.csproj b/src/Orchard.Azure/Orchard.Azure.csproj index 3c949b0f3..b1a6d05ff 100644 --- a/src/Orchard.Azure/Orchard.Azure.csproj +++ b/src/Orchard.Azure/Orchard.Azure.csproj @@ -63,6 +63,7 @@ True + 3.5