值不能为空。参数名称:String

时间:2012-12-04 11:48:15

标签: c# exception handler request.querystring nul

请查看以下代码。它在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"])));
    }

这显示以下错误。

值不能为空。参数名称:String

由于我有上下文请求查询字符串,因此传递了值,但代码在此阶段中断。

此处理程序将连接到业务逻辑层。

有人可以提供建议吗? 提前致谢

库什

3 个答案:

答案 0 :(得分: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));
}

然后真的简单地介绍并了解发生了什么。

答案 1 :(得分:2)

context.Request.QueryString["requestId"]context.Request.QueryString["isPinned"]可能没有返回有效的字符串值。检查两个值是否都在具有正确ID的查询字符串中传递,这些ID当然是requestIdisPinned

答案 2 :(得分:1)

当将值传递给处理程序时,我已将其插入为

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

这给了我结果2True

所以我意识到打嗝是不包括字符串名称

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

谢谢你们帮助人们

LeviBotelho谢谢你让我检查一下我在检查javascript时错过的东西