C#在什么都没有的地方报错

最离谱的来了,在代码基本清空的情况下居然也能报input=null,已经试过清缓存或重新编译

值不能为 null。
参数名: input
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.ArgumentNullException: 值不能为 null。
参数名: input

源错误:

[没有相关的源行]

源文件: D:\vs\project\自查剧本\web\handler\search.ashx.cs 行: 18

堆栈跟踪:

[ArgumentNullException: 值不能为 null。
参数名: input]
System.Text.RegularExpressions.Regex.IsMatch(String input) +6780315
web.handler.search.ProcessRequest(HttpContext context) in D:\vs\project\自查剧本\web\handler\search.ashx.cs:18
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +195
System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) +50
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +73

版本信息: Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.8.4494.0

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
using System.Text;
using System.Data;
using System.Text.RegularExpressions;

空指针这么明显

img


这不是告诉你了么,在search.ashx.cs这个文件第19行,空指针,如果像你说的,19行没啥错的话,你重新编译下代码

[ArgumentNullException: 值不能为 null。
参数名: input] 这个参数为空了。贴全你的代码看看


string input = context.Request.Params["input"].ToString();

前后2个input分别是什么?

string input = context.Request.Params["input"].ToString() ;
ToString() 之前要保证有 input 这个参数 ,没有这个参数 值为 null
,null执行 toString() 就会报错
正确的写法

string input = context.Request.Params["input"] ? .context.Request.Params["input"] ToString() : "" ;
```c#

代码甩出来,分分钟的事,小老弟呢

检查一下是不是字母拼错了

ToString()空引用,input值不为null就不会了