1

次のコードを見てください。ですhandler.asxh

public void ProcessRequest(HttpContext context)
{
    context.Response.ContentType = "application/json";
    new RequestManagementFacade().PinRequest(Int32.Parse(context.Request.QueryString["requestId"]), (Boolean.Parse(context.Request.QueryString["isPinned"])));
}

これは、次のエラーを示しています。

Value cannot be null. Parameter name: String

コンテキスト リクエストのクエリ文字列を確認したところ、渡された値がありますが、この段階でコードが壊れています。

このハンドラーは、ビジネス ロジック層に接続します。

4

4 に答える 4

4

コンテキストリクエストクエリ文字列をチェックしたので、渡された値があります

その時、あなたの診断は間違っていると強く思います。価値観が魔法のように失われることはありません-あなたは自分の仮定に疑問を投げかける必要があります。ただし、これは簡単にデバッグできます。コードを次のように変更することをお勧めします。

public void ProcessRequest(HttpContext context)
{
    context.Response.ContentType = "application/json";
    string requestId = context.Request.QueryString["requestId"];
    string isPinned = context.Request.QueryString["isPinned"];
    var facade = new RequestManagementFacade();
    facade.PinRequest(Int32.Parse(requestId), Boolean.Parse(isPinned));
}

そうすれば、ステップスルーして何が起こっているのかを見つけるのは本当に簡単です。

于 2012-12-04T11:50:34.763 に答える
2

有効な文字列値を返すか、返さないcontext.Request.QueryString["requestId"]可能性があります。context.Request.QueryString["isPinned"]両方の値が適切なIDでクエリ文字列に渡されていることを確認してください。もちろんそれらはrequestIdisPinnedです。

于 2012-12-04T11:50:18.807 に答える
1

挿入したハンドラーに値を渡すときに問題が解決しました

"PinRequest.ashx?="+requestId+isPinned"

結果は2Trueになりました

だから私はしゃっくりが文字列名を含めないことであることに気づきました

"PinRequest.ashx?requestId=" + this._requestId + "&isPinned=" + this._isPinned

みんな助けてくれてありがとう

LeviBotelho ありがとうございます

于 2012-12-05T14:34:06.617 に答える