2012-08-02 85 views
1

我想在.NET 4.5中使用MVC4实现我自己的自定义ModelBinder,但得到最怪异的错误。我的代码看起来近似。这样NullReferenceException在自定义IModelBinder

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在第一线媒体链接抛出,但没有属性实际上是空(它们都出现在智能感知调试)。在绝望中,我决定摆脱一些属性,以便更好地了解抛出异常的位置,并发现导致Params属性的罪魁祸首。奇怪的是querystring中的所有关键字都在调试窗口中列出,但是仍然会引发异常。我真的需要一些人的帮助!

谢谢。

回答

1

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

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