2012-08-02 81 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對象 - 並且你有它。

非常感謝那些花時間閱讀我的問題的人。