c# - 值不能为空。参数名称 : key

标签 c# asp.net-mvc

<分区>

值不能为空参数名称:key

自从我将 StructureMapControllerFactory 实现为我的 DefaultControllerFactory 以来,我就开始遇到此错误。

实际上,我从 MVC Sample App StoreFront 复制了代码,但我无法弄清楚为什么会不断弹出此错误。即使出现此错误,应用程序仍在运行。

这个错误可能是什么原因?

谢谢你的时间


System.ArgumentNullException was unhandled by user code
  Message="Value cannot be null.\r\nParameter name: key"
  Source="mscorlib"
  ParamName="key"
  StackTrace:
       at System.ThrowHelper.ThrowArgumentNullException(ExceptionArgument argument)
       at System.Collections.Generic.Dictionary`2.FindEntry(TKey key)
       at System.Collections.Generic.Dictionary`2.ContainsKey(TKey key)
       at StructureMap.Util.Cache`2.get_Item(KEY key)
       at StructureMap.BuildSession.CreateInstance(Type pluginType)
       at StructureMap.Container.GetInstance(Type pluginType)
       at StructureMap.ObjectFactory.GetInstance(Type pluginType)
       at Yacht.Web.Controllers.StructureMapControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType) in D:\Documents\WebSites\JOBS\Yacht\Yacht.Web\Controllers\StructureMapControllerFactory.cs:line 16
       at System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName)
       at System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory)
       at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state)
       at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, Object state)
       at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData)
       at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
       at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
  InnerException: 

这是 StructureMapControllerFactory 类

public class StructureMapControllerFactory : DefaultControllerFactory
    {
        protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType)
        {
            return ObjectFactory.GetInstance(controllerType) as Controller;
        }
    }

最佳答案

另请注意,如果模型定义的属性未映射到数据库字段,则可能会发生此错误。追踪这个有点麻烦,所以我会在 SO 上留下答案,以防其他人遇到同样的问题。

我的修复很简单,包括 DataAnnotations:

using System.ComponentModel.DataAnnotations;

然后在特定属性上使用 NotMapped 注释:

[NotMapped]
public string SomeCustomProperty { get; set; }

关于c# - 值不能为空。参数名称 : key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1959890/

相关文章:

asp.net-mvc - ASP.Net MVC - Razor 按月/年列显示客户的帐户总数

jQuery ASP.NET MVC - $.post() 到不同环境中的不同 URL 路径

c# - 客户端验证 mvc 下拉菜单

c# - 使用 SqlDataReader 时,如何使来自 BLOB 的流在普通旧 C# 对象中可用?

c# - 使用 Json.Net 反序列化时出现错误 "Cannot deserialize the current JSON array"

c# - 在 XML 文档中使用带有 < > 字符的 see cref?

c# - 带有动画 GIF 的启动画面在 WPF C# 中没有动画

c# - 使用运行时确定的类型实例化对象

asp.net - .NET Core 中的 ADO.NET 可能吗?

asp.net-mvc - RavenDB部署问题