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 谢谢你让我检查我在检查它的 javascript 时遗漏的东西

于 2012-12-05T14:34:06.617 回答
0

Int32.Parse(myString)在使用将字符串转换为 int 并随后将值分配给对象的属性时遇到错误。使用另一种方法将(Convert.ToInt32(myString))字符串转换为 int 对我有用。

于 2022-02-11T13:42:03.967 回答