У меня есть HTTPModule, который я использую для перенаправления трафика между веб-сайтом в моем центре обработки данных и веб-сайтом, работающим на платформе Azure. Этот HTTPModule получает свои правила переадресации из хранилища таблиц Azure.
Перенаправления работают нормально на моем локальном компьютере-разработчике, а также при запуске на 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" фактически существует в моем каталоге bin для развертывания.
Если я удалю эту DLL, сайт центра обработки данных работает отлично, но HTTPModule не может загрузить свои данные конфигурации из хранилища таблиц и вместо этого выдает следующую ошибку.
---> 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" как часть развертывания, чтобы обеспечить его доступность на серверах центров обработки данных.