Переадресация сборки не работает
Я пытаюсь развернуть тестовое веб-приложение в Azure, но когда я запускаю эмулятор Azure на своем локальном компьютере, я получаю эту ошибку из консоли эмулятора Azure, прикрепленной к моей WebRole:
System.TypeLoadException: Unable to load the role entry point due to the following exceptions:
-- System.IO.FileLoadException: Could not load file or assembly 'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
File name: 'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
=== Pre-bind state information ===
LOG: User = COLLAB\mirko.lugano
LOG: DisplayName = System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
(Fully-specified)
LOG: Appbase = file:///C:/Code/Application/.Azure/csx/Debug/roles//approot/bin
LOG: Initial PrivatePath = C:\Code\Application\.Azure\csx\Debug\roles\\approot\bin
Calling assembly : ActionMailer.Net.Mvc, Version=0.7.4.0, Culture=neutral, PublicKeyToken=e62db3114c02a1c2.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Code\Application\.Azure\csx\Debug\roles\\base\x64\WaIISHost.exe.Config
LOG: Using host configuration file:
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
LOG: Post-policy reference: System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
LOG: Attempting download of new URL file:///C:/Code/Application/.Azure/csx/Debug/roles//approot/bin/System.Web.Mvc.DLL.
WRN: Comparing the assembly name resulted in the mismatch: Major Version
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.
---> System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
at System.Reflection.RuntimeModule.GetTypes()
at System.Reflection.Assembly.GetTypes()
at Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.GetRoleEntryPoint(Assembly entryPointAssembly)
--- End of inner exception stack trace ---
at Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.GetRoleEntryPoint(Assembly entryPointAssembly)
at Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.CreateRoleEntryPoint(RoleType roleTypeEnum)
at Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.InitializeRoleInternal(RoleType roleTypeEnum)
[fabric] Role state Unknown
Все работало нормально, пока на моем локальном компьютере был установлен MVC3 (сборка MVC3 была в GAC), но поскольку я удалил MVC3 (на Azure не установлен MVC), я получаю эту ошибку. В мое веб-приложение регулярно включается MVC4, и это прекрасно работает. Затем я подумал о перенаправлении привязки сборки и заметил, что в моем файле web.config у меня уже есть:
...
...
что должно быть уже правильно, согласно документации, которую я прочитал в интернете. Я также попытался установитьSpecificVersion собственность моя (System.Web.Mvc.dll
версия 4.0.0.0) чтобыложный но безрезультатно. Я что-то пропустил? не должен»созывающее собраниеActionMailer.Net.Mvc
быть автоматически перенаправлены на правильную версию сборки MVC? Любые идеи с благодарностью. Благодарю.