在上下文中为空。请求

时间:2012-10-11 06:23:04

标签: c# null httpcontext

如何在Context.Request中允许null:

context.Response.Write(retrieveList(context.Request["SalCode"].ToString(null), context.Request["groupKeyword"].ToString(), context.Request["text"].ToString()));

2 个答案:

答案 0 :(得分:2)

首先,Request["..."]已经返回string,因此无需在其上调用ToString(),因此在此阶段,如果它返回{{1}则无需担心(即如果请求中没有密钥)。

因此你可以打电话给例如。

null

不用担心三者中的任何一个是否为空。

如果任何输入为空,则可以更改retrieveList( context.Request["SalCode"], context.Request["groupKeyword"], context.Request["text"]); 以正确响应。例如,您可以返回 null:

retrieveList

然后,请注意private string /*or whatever*/ retrieveList( string salCode, string groupKeyword, string text) { if (String.IsNullOrEmpty(salCode) || String.IsNullOrEmpty(groupKeyword) || String.IsNullOrEmpty(text)) { return null; } ... } 并不关心你是否给它一个Response.Write,它只是没有写任何内容,所以你可以保持对null的呼叫,如上所述。

或者,您可以检查返回值并写一条消息Write

null

答案 1 :(得分:0)

TYou没有指明任何东西!请添加信息,您甚至没有指定发生此问题的环境,类或一般上下文。我们也不知道retrieveList()的签名是什么!这让我们很难帮到你!你有多想回答这个问题,我的一位同事曾经面对过一次:'这个废话不起作用!' ? (是的,这甚至不是一个问题,而是发生在现实生活支持情境中!)

我注意到的一件事是你使用* T * oString()而不是* t * oString(),我认为这是一个错字。 (已编辑,因为很明显这是C#)另外,我不知道.toString(null)的含义。您是否想告诉我们该语句导致NullPointerException?在这种情况下,您可能会花更多的精力让我们理解您的问题,例如:把它写下来......

顺便说一句,如果是这样,我会说,这将解决你的问题:

Object salCode = context.Request["SalCode"];
context.Response.Write(retrieveList(salCode==null?"":salCode.ToString(), context.Request["groupKeyword"].ToString(), context.Request["text"].ToString()));

编辑我认为(但无法测试)如果null是问题,这将解决它。但是,如果底层代码在指定空String时无法正常工作,那么应该在retrieveList()中检查这个(从引用的帖子粘贴):

private string retrieveList(string SalCode, string groupKeyword, string text)
{
    SqlConnection _sqlCon = default(SqlConnection);
    SqlCommand _sqlCom = default(SqlCommand);
    SqlDataReader _sqlReader = default(SqlDataReader);
    StringBuilder _sb = new StringBuilder();
    List<TokenInputJSON> _out = null;

    try
    {
        _sqlCon = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["SalesianBlastConnectionString"].ConnectionString);
        _sqlCom = new SqlCommand("getTokenInput", _sqlCon);
        _sqlCom.CommandType = CommandType.StoredProcedure;
        _sqlCon.Open();

        //This is the edited part
        if(SalCode==null || SalCode.Equals("")) {
            _sqlCom.Parameters.Add(new SqlParameter("@salCode", SqlDbType.VarChar, 4)).Value = SalCode;
        }
        //... continue with the other parts

快速检查:我刚才有一个想法:在调用retrieveList时使用常量值来查明这是否是问题所在:

context.Response.Write(retrieveList("enterAValidSalCodeHere", context.Request["groupKeyword"].ToString(), context.Request["text"].ToString()));