1

我正在尝试在 .NET 4.5 中使用 MVC4 实现我自己的自定义 ModelBinder,但遇到了最奇怪的错误。我的代码看起来大约。像这样

表视图模型模型: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 属性。真正奇怪的是,查询字符串中的所有键都列在调试窗口中,但仍然抛出异常。我真的需要一些帮助这个人!

谢谢。

4

1 回答 1

2

使用 Reflector 发现错误并分析堆栈跟踪。事实证明,调用堆栈 HttpRequest.Params 的某处试图读取我的 Principal 对象 (HttpContext.User) 的 Identity 属性。我有一个 IPrincipal 的自定义实现,它不初始化 Identity 对象 - 你有它。

非常感谢那些花时间阅读我的问题的人。

于 2012-08-03T09:14:43.347 回答