如何检查Request.QueryString是否为空

时间:2014-07-11 11:19:42

标签: c# asp.net asp.net-mvc

我有自己的HandleErrorAttribute,它从ExceptionHttpContext读取数据,将它们插入模板并向管理员发送电子邮件。它通常工作正常,但在某些情况下它会在尝试检查QueryString是否为空时断开。

var requestParams = "";
if (context.Request.QueryString != null && context.Request.QueryString.Keys.Count > 0)
{
    foreach (String key in context.Request.QueryString.Keys)
    {
        requestParams += key + ": " + context.Request.QueryString[key] + "<br />";
    }
}
else
{
    requestParams = "[ no query string data ]";
}

在检查条件(NullReferenceException)时,即使我在调试中看到QueryString不为空且Keys.Count等于0,它也会中断。

我在这里缺少什么?如何正确检查空QueryString

堆栈跟踪:

w System.Web.Hosting.IIS7WorkerRequest.GetQueryStringPtr(Int32& length)
w System.Web.Hosting.IIS7WorkerRequest.GetQueryStringRawBytes()
w System.Web.HttpRequest.get_QueryStringBytes()
w System.Web.HttpRequest.FillInQueryStringCollection()
w System.Web.HttpRequest.EnsureQueryString()
w System.Web.HttpRequest.get_QueryString()
w System.Web.HttpRequestWrapper.get_QueryString()
w project.Infrastructure.Attributes.ErrorHandlingAttribute.BuildErrorEmail(Exception exc, HttpContextBase context) w c:\Users\Marcin Bigoraj\Documents\Visual Studio 2012\Projects\project\Infrastructure\Attributes\ErrorHandlingAttribute.cs:wiersz 141
w project.Infrastructure.Attributes.ErrorHandlingAttribute.<>c__DisplayClass2.<OnException>b__1() w c:\Users\Marcin Bigoraj\Documents\Visual Studio 2012\Projects\project\Infrastructure\Attributes\ErrorHandlingAttribute.cs:wiersz 182
w System.Threading.Tasks.Task.InnerInvoke()
w System.Threading.Tasks.Task.Execute()

2 个答案:

答案 0 :(得分:6)

检查此代码

if (Request.QueryString.Keys.Count > 0)
{

}

答案 1 :(得分:0)

您可以通过检查其计数来确定QueryString中是否有任何值:

Request.QueryString.Count > 0;

这就足够了。