我正在尝试使用.NET 4.5中的MVC4实现我自己的自定义ModelBinder,但是得到了最奇怪的错误。我的代码看起来很近。像这样
TableViewModelModel:IModelBinder
public object BindModel(ControllerContext ctx, BindingContext btx)
{
IEnumerable<String> sSearch = ctx.HttpContext.Request.Params.Keys.OfType<String().Where(key => key.StartsWith("sSearch_"));
...
}
NullReferenceException在第一行全部抛出,但没有一个属性实际为null(它们都出现在intellisense调试中)。在一个绝望中,我决定摆脱一些属性,以便更好地了解抛出异常的位置,并且我发现罪魁祸首是Params属性。真正奇怪的是,调试窗口中列出了查询字符串中的所有键,但仍会抛出异常。我真的需要这个人的帮助!
感谢。
答案 0 :(得分:1)
使用Reflector发现错误并分析堆栈跟踪。事实证明,在调用堆栈HttpRequest.Params的某个地方尝试读取我的Principal对象的Identity属性(HttpContext.User)。我有一个IPrincipal的自定义实现,它没有初始化Identity对象 - 而且你有它。
非常感谢那些花时间阅读我的问题的人。