1

我正在尝试将我的 ASP.Net MVC4 应用程序部署到 Azure,但它在部署过程中崩溃。显然这是因为某些东西正在请求程序集'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'。这一切都在本地完美运行,并且在 Azure 上调试是一场噩梦,因为部署对我来说需要 25-30 分钟。

我原以为我已经将 CLR 配置为不需要 MVC3,即使某些东西需要它,也可以使用:

        <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
            <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
        </dependentAssembly>

如果我查看 ObjectBrowser,似乎没有什么需要 MVC3。找出请求内容的最佳方法是什么?我在项目中有各种 Nuget 包。我猜其中一个正在请求 MVC3?有没有看到所有依赖项等的列表?

我得到:

CLR 异常类型:System.Reflection.ReflectionTypeLoadException “无法加载一种或多种请求的类型。检索 LoaderExceptions 属性以获取更多信息。” Microsoft.WindowsAzure.ServiceRuntime 严重:201:ModLoad:000007fc 906a0000 000007fc907a9000
D:\Windows\Microsoft.NET\Framework64\v4.0.30319\diasymreader.dll 无法创建角色入口点:System.TypeLoadException:由于以下异常,无法加载角色入口点:-- System.IO.FileLoadException:无法加载文件或程序集“System.Web.Mvc,Version=3.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT 异常:0x80131040)文件名:'System.Web.Mvc,版本 = 3.0.0.0,文化 = 中性,PublicKeyToken = 31bf3856ad364e35'

警告:程序集绑定日志记录已关闭。要启用程序集绑定失败日志记录,请将注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) 设置为 1。注意:与程序集绑定失败日志记录相关的一些性能损失。要关闭此功能,请删除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]。

---> System.Reflection.ReflectionTypeLoadException:无法加载一种或多种请求的类型。检索 LoaderExceptions 属性以获取更多信息。在 System.Reflection.RuntimeModule.GetTypes(RuntimeModule 模块) 在 System.Reflection.RuntimeModule.GetTypes() 在 System.Reflection.Assembly.GetTypes() 在 Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.GetRoleEntryPoint(Assembly entryPointAssembly) --- 结束内部异常堆栈跟踪 ---
在 Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.GetRoleEntryPoint(Assembly entryPointAssembly) 在 Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.CreateRoleEntryPoint(RoleType roleTypeEnum) 在 Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.InitializeRoleInternal(RoleType roleTypeEnum) ModLoad: 000007fc a2f00000 000007fca2f96000
D:\Windows \SYSTEM32\clbcatq.dll ntdll!ZwTerminateProcess+0xa: 000007fc`a2fa2eaa c3 ret

  Exception object: 00000000017e0070 Exception type:   System.TypeLoadException Message:          Unable to load the role

由于以下异常导致的入口点: -- System.IO.FileLoadException:无法加载文件或程序集“System.Web.Mvc,Version=3.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT 异常:0x80131040)文件名:'System.Web.Mvc,版本 = 3.0.0.0,文化 = 中性,PublicKeyToken = 31bf3856ad364e35'

警告:程序集绑定日志记录已关闭。要启用程序集绑定失败日志记录,请将注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) 设置为 1。注意:与程序集绑定失败日志记录相关的一些性能损失。要关闭此功能,请删除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]。

InnerException: System.Reflection.ReflectionTypeLoadException,使用 !PrintException 00000000017dcf08 查看更多。StackTrace(生成):StackTraceString:HResult:80131522

4

1 回答 1

1

您可以使用 Reflector 加载 Nuget 包并查看它们的依赖关系。应该很容易发现一个是否依赖于 MVC3。不过,您的程序集绑定看起来不错。您的解决方案中有多个项目吗?其中一个是否会依赖依赖于 MVC3 的 Nuget 包?

这篇文章可能会有所帮助:如何从我的 .NET 解决方案构建“依赖关系树图”

于 2013-01-04T10:10:56.720 回答