更新到Asp.Net MVC 4 RTM后无法加载类型HttpControllerConfigurationAttribute

时间:2012-08-27 21:49:29

标签: asp.net asp.net-mvc-4 asp.net-web-api single-page-application

我正在研究最初在ASP.Net MVC 4 Beta和EF 4.3.1上的单页应用程序。我更新了MVC 4和EF 5的所有NuGet包。现在每当我调用ApiController或DbDataController时,我都会遇到以下异常:

无法从程序集'System.Web.Http,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'加载类型'System.Web.Http.Controllers.HttpControllerConfigurationAttribute'。

at System.ModuleHandle.ResolveType(RuntimeModule module, Int32 typeToken, IntPtr* typeInstArgs, Int32 typeInstCount, IntPtr* methodInstArgs, Int32 methodInstCount, ObjectHandleOnStack type)
at System.ModuleHandle.ResolveTypeHandleInternal(RuntimeModule module, Int32 typeToken, RuntimeTypeHandle[] typeInstantiationContext, RuntimeTypeHandle[] methodInstantiationContext)
at System.Reflection.RuntimeModule.ResolveType(Int32 metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
at System.Reflection.CustomAttribute.FilterCustomAttributeRecord(CustomAttributeRecord caRecord, MetadataImport scope, Assembly& lastAptcaOkAssembly, RuntimeModule decoratedModule, MetadataToken decoratedToken, RuntimeType attributeFilterType, Boolean mustBeInheritable, Object[] attributes, IList derivedAttributes, RuntimeType& attributeType, IRuntimeMethodInfo& ctor, Boolean& ctorHasParameters, Boolean& isVarArg)
at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean mustBeInheritable, IList derivedAttributes, Boolean isDecoratedTargetSecurityTransparent)
at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeType type, RuntimeType caType, Boolean inherit)
at System.RuntimeType.GetCustomAttributes(Boolean inherit)
at System.Web.Http.Controllers.HttpControllerDescriptor.InvokeAttributesOnControllerType(HttpControllerDescriptor controllerDescriptor, Type type)
at System.Web.Http.Controllers.HttpControllerDescriptor.InvokeAttributesOnControllerType(HttpControllerDescriptor controllerDescriptor, Type type)
at System.Web.Http.Controllers.HttpControllerDescriptor.InvokeAttributesOnControllerType(HttpControllerDescriptor controllerDescriptor, Type type)
at System.Web.Http.Controllers.HttpControllerDescriptor..ctor(HttpConfiguration configuration, String controllerName, Type controllerType)
at System.Web.Http.Dispatcher.DefaultHttpControllerSelector.InitializeControllerInfoCache()
at System.Lazy`1.CreateValue()

根据MVC 4发行说明,HttpControllerConfigurationAttribute已被删除,而不是我明确地使用它。

  

每个控制器配置:ASP.NET Web API控制器可以使用自定义属性进行归因,该属性实现IControllerConfiguration以设置自己的格式化程序,操作选择器和参数绑定器。 HttpControllerConfigurationAttribute已被删除。   MVC 4 Release Notes

我的问题是此时可能尝试加载此类型的内容?

编辑:我现在正在考虑这是因为自MVC 4 Beta以来SPA位尚未更新,并且存在控制器配置属性。

2 个答案:

答案 0 :(得分:1)

每个控制器配置:ASP.NET Web API控制器可以使用自定义属性进行归因,该属性实现IControllerConfiguration以设置自己的格式化程序,操作选择器和参数绑定器。 HttpControllerConfigurationAttribute已被删除。 MVC 4发行说明

答案 1 :(得分:0)

您的GAC中可能有旧版本的System.Web.Http。我相信Beta版本我们会对dll进行GAC,因此你会看到这个问题...如果你解开这个老版本的dll,你就不应该看到这个问题。