ASP.NET MVC 4网站无法启动 - 无法加载类型'System.Reflection.AssemblyMetadataAttribute'

时间:2013-12-09 09:30:06

标签: asp.net-mvc-4 webactivator

我将ASP.NET MVC 4 Web应用程序部署到Windows Server 2003(IIS 6)。但它不会开始。

最初我开发了.NET 4.5的项目,但是当我发现Windows Server 2003不支持.NET 4.5时,不得不为.NET4重建它。 这意味着删除所有第三方引用(使用NuGet),将项目属性中的构建目标更改为.NET4,然后添加引用。 引用的是Ninject,EF和Automapper。

当我尝试加载页面时,出现以下错误:

  

无法从中加载类型'System.Reflection.AssemblyMetadataAttribute'   assembly'mscorlib,Version = 4.0.0.0,Culture = neutral,   公钥= b77a5c561934e089' 。描述:未处理的异常   在执行当前Web请求期间发生。请   查看堆栈跟踪以获取有关错误和位置的更多信息   它起源于代码。

     

异常详细信息:System.TypeLoadException:无法加载类型   程序集'mscorlib中的'System.Reflection.AssemblyMetadataAttribute',   Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'。

     

来源错误:

     

执行期间生成了未处理的异常   当前的网络请求。有关的来源和位置的信息   可以使用下面的异常堆栈跟踪来识别异常。

     

堆栈追踪:

     

[TypeLoadException:无法加载类型   程序集'mscorlib中的'System.Reflection.AssemblyMetadataAttribute',   Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'。]

  System.ModuleHandle.ResolveType(RuntimeModule模块,Int32 typeToken,   IntPtr * typeInstArgs,Int32 typeInstCount,IntPtr * methodInstArgs,   Int32 methodInstCount,ObjectHandleOnStack type)+0
  System.ModuleHandle.ResolveTypeHandleInternal(RuntimeModule模块,   Int32 typeToken,RuntimeTypeHandle [] typeInstantiationContext,   RuntimeTypeHandle [] methodInstantiationContext)+180
  System.Reflection.RuntimeModule.ResolveType(Int32 metadataToken,   键入[] genericTypeArguments,Type [] genericMethodArguments)+192
  System.Reflection.CustomAttribute.FilterCustomAttributeRecord(CustomAttributeRecord   caRecord,MetadataImport范围,汇编& lastAptcaOkAssembly,   RuntimeModule decoratedModule,MetadataToken decoratedToken,   RuntimeType attributeFilterType,Boolean mustBeInheritable,Object []   属性,IList derivedAttributes,RuntimeType&属性类型,   IRuntimeMethodInfo&安培; ctor,布尔& ctorHasParameters,Boolean&   isVarArg)+115
  System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule   decoratedModule,Int32 decoratedMetadataToken,Int32 pcaCount,   RuntimeType attributeFilterType,Boolean mustBeInheritable,IList   derivedAttributes,Boolean isDecoratedTargetSecurityTransparent)+426   System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeAssembly   assembly,RuntimeType caType)+103
  System.Reflection.RuntimeAssembly.GetCustomAttributes(类型   attributeType,布尔继承)+64
  WebActivator.AssemblyExtensions.GetActivationAttributes(大会   装配)+113
  WebActivator.ActivationManager.RunActivationMethods()+216
  WebActivator.ActivationManager.RunPreStartMethods()+28
  WebActivator.ActivationManager.Run()+55

     

[InvalidOperationException:预应用程序启动初始化   方法在WebActivator.ActivationManager类型上运行引发异常   带有以下错误消息:无法加载类型   程序集'mscorlib中的'System.Reflection.AssemblyMetadataAttribute',   Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'..]   System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1   方法)+423
  System.Web.Compilation.BuildManager.CallPreStartInitMethods()+ 306 6   System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager   appManager,IApplicationHost appHost,IConfigMapPathFactory   configMapPathFactory,HostingEnvironmentParameters hostingParameters,   PolicyLevel policyLevel,Exception appDomainCreationException)+677

     

[HttpException(0x80004005):预应用程序启动初始化   方法在WebActivator.ActivationManager类型上运行引发异常   带有以下错误消息:无法加载类型   程序集'mscorlib中的'System.Reflection.AssemblyMetadataAttribute',   Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'..]   System.Web.HttpRuntime.FirstRequestInit(HttpContext context)+9164848   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context)+97   System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr)   258

有什么想法吗?

编辑:使用VS2012开发的网站

1 个答案:

答案 0 :(得分:1)

Could not load type 'System.Runtime.CompilerServices.ExtensionAttribute' from assembly mscorlib

是的,当您在.NET 4.0而不是.NET 4.5上执行代码时,这在技术上可能会出错。该属性已从System.Core.dll移至.NET 4.5中的mscorlib.dll。虽然在一个应该100%兼容的框架版本中听起来像是一个相当令人讨厌的突破性变化,但是[TypeForwardedTo]属性应该会使这种差异不可观察。