7

我正在研究最初在 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 发行说明

我的问题是此时可能会尝试加载这种类型?

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

4

2 回答 2

1

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

于 2012-08-27T21:52:37.400 回答
0

您的 GAC 中可能有旧版本的 System.Web.Http。我相信在 Beta 版本中我们对 dll 进行了 GAC,因此您会看到这个问题……如果您取消 Gac 这个旧 dll,您应该不会看到这个问题。

于 2012-08-28T21:12:06.457 回答