У меня есть HTTP-модуль, который я использую для перенаправления трафика между веб-сайтом в моем центре обработки данных и веб-сайтом, работающим на платформе Azure. Этот HTTP-модуль извлекает свои правила перенаправления из Azure Table Storage.
Перенаправления отлично работают на моей локальной машине разработки, а также при запуске на Azure. Однако, когда я устанавливаю модуль на свои серверы центра обработки данных (IIS 7, WS 2008 R2 Standard 64bit, .NET 4.0, ASP.NET 4.0), я получаю следующую ошибку
Parser Error Message: Could not load file or assembly 'msshrtmi' or one of its dependencies. An attempt was made to load a program with an incorrect format.
Line 124: <add assembly="System.Web.DynamicData, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
Line 125: <add assembly="System.Web.ApplicationServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
Line 126: <add assembly="*" />
Line 127: </assemblies>
Line 128: <buildProviders>
Source File: C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config Line: 126
"msshrtmi.dll" действительно существует в моем каталоге deployment bin.
Если я удалю эту dll, сайт центра обработки данных работает нормально, но модуль HTTPModule не может загрузить свои данные конфигурации из Table Storage и вместо этого выдает следующую ошибку
---> System.TypeInitializationException: The type initializer for 'Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment' threw an exception. ---> System.IO.FileNotFoundException: Could not load file or assembly 'msshrtmi, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
at Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.InitializeEnvironment()
at Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment..cctor()
--- End of inner exception stack trace ---
at Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.get_IsAvailable()
Также я вручную включил "Microsoft.WindowsAzure.ServiceRuntime.dll" как часть развертывания, чтобы убедиться, что она доступна на серверах центра обработки данных.