1

.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 プロパティであることがわかりました。本当に奇妙なのは、クエリ文字列のすべてのキーがデバッグ ウィンドウにリストされているにもかかわらず、例外がスローされることです。私は本当にこの人に助けが必要です!

ありがとう。

4

1 に答える 1

2

Reflector を使用してスタック トレースを分析し、エラーを見つけました。コール スタックのどこかで、HttpRequest.Params がプリンシパル オブジェクト (HttpContext.User) の Identity プロパティを読み取ろうとしたことがわかりました。Identity オブジェクトを初期化しない IPrincipal のカスタム実装があります。

私の質問を読んでくれた方々、本当にありがとうございました。

于 2012-08-03T09:14:43.347 に答える