ASP.NET:Random.Next:NullReferenceException?

时间:2012-08-05 16:23:01

标签: asp.net iis random null nullreferenceexception

我试图在页面加载时将两个标签的文本设置为随机数。这段代码

    Random random = new Random();

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            LINE 22 Label12.Text = random.Next(99).ToString();
            LINE 23 Label13.Text = random.Next(999).ToString();
        }

        foreach (string s in scr1.Style.Keys)
        {
            Response.Write(s + ",");
        }
    }
    ...

适用于localhost但在我的服务器上运行时会抛出NullReferenceException。

堆栈追踪:

[NullReferenceException:对象引用未设置为对象的实例。]    C:\ Users ** \ Documents \ Visual Studio 2010 \ Projects * *中的 .apps。 .Page_Load(Object sender,EventArgs e) ** \ APPS * * aspx.cs:22    System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp,Object o,Object t,EventArgs e)+14    System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender,EventArgs e)+35    System.Web.UI.Control.OnLoad(EventArgs e)+91    System.Web.UI.Control.LoadRecursive()+ 74    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)+2207

1 个答案:

答案 0 :(得分:3)

两个选项:

  • Label12可以为null
  • random可能已被其他一段代码设置为null

诊断问题的第一部分是弄清楚其中的哪一个是这种情况。只需拆分作业:

string randomText = random.Next(99).ToString();
Label12.Text = randomText;

然后查看它失败的那一行。一旦你知道哪个表达式为null,你可以尝试找出为什么它是null。