1

我有一个调用 Web 服务的 ASP.NET Web 应用程序。此 Web 服务接收一个 Dictionary 对象(我已经填充了会话信息)并将其转换为 XML。应用程序工作正常(并生成 XML)但我收到了这个间歇性异常(通过电子邮件)- 和用户出现错误页面 - 尽管应用程序已成功运行!

资料来源:花园废物

消息:对象引用未设置为对象的实例。StackTrace:位于 C:\Documents and Settings\stevd\My Documents\Visual Studio 2010\Projects\External Web Apps\GardenWaste\GardenWaste\CardSuccess.aspx.cs:line 63 中的 GardenWaste.SignUpSuccess.GWComplete()

我不确定为什么在第 63 行失败 - 此行从 Session 中获取一个对象,并在传递给 Web 服务之前添加到 Dictionary 。并生成正确的 XML(过程结束)!

应用程序服务器日志中没有与此异常相关的任何内容。如果有人可以阐明为什么会发生此错误,那就太好了。我很乐意根据需要包含更多代码。

这是引发异常的方法的代码:

//This method is called on the Page_Load() event
    public void GWComplete()
        {
            try
            {
                //invokes the webservice
                FocusXMLService.Service1Client client = new FocusXMLService.Service1Client();

                Dictionary<string, string> GWDict = new Dictionary<string, string>();

                //The Path and Filename used to create the files

                GWDict.Add("File", "E:\\ash\\focus\\objrepos\\1\\Input\\GreenWaste\\GARDENW-EXT" + System.DateTime.Now.ToString("ddmmmyyyyhhssffff") + ".xml");
                GWDict.Add("SourceName", "FD");

                //This is the line that it suggests there's a failure - although it's produced on the XML!
                GWDict.Add("UniqueReference", Session["UniqueRef"].ToString());

                GWDict.Add("MatterReference", "0001");               
                GWDict.Add("Status", "CURRENT");
                GWDict.Add("Service", "CUSTSERV");
                GWDict.Add("ServiceLevel", "GARDENW");
                GWDict.Add("Category", "GARDENW");
                GWDict.Add("CategoryType", "STARTS");
                GWDict.Add("Description", "Garden Waste Scheme");
                GWDict.Add("LinkedNoteText", "GCCGW");
                GWDict.Add("Title", Session["Title"].ToString());
                GWDict.Add("FirstName", Session["FirstName"].ToString());
                GWDict.Add("Surname", Session["Surname"].ToString());
                GWDict.Add("House", Session["House"].ToString());
                GWDict.Add("Street", Session["Street"].ToString());
                GWDict.Add("AddressLine2", Session["AddressLine2"].ToString());
                GWDict.Add("AddressLine3", Session["AddressLine3"].ToString());
                GWDict.Add("PostCode", Session["PostCode"].ToString());
                GWDict.Add("MobileNo", Session["MobileNo"].ToString());
                GWDict.Add("TelephoneNo", Session["TelephoneNo"].ToString());
                GWDict.Add("EmailAddress", Session["EmailAddress"].ToString());
                GWDict.Add("AddressLLPGRef", Session["AddressLLPG"].ToString());

                GWDict.Add("GWBENEFIT", Session["GWBENEFIT"].ToString());
                GWDict.Add("GWBENREF", Session["GWBENREF"].ToString());
                GWDict.Add("GWASSISTED", Session["GWASSISTED"].ToString());
                GWDict.Add("GWHAVEBINS", Session["GWHAVEBINS"].ToString());
                GWDict.Add("GWHOWMANY", Session["GWHOWMANY"].ToString());
                GWDict.Add("GWHOWMANYB", Session["GWHOWMANYB"].ToString());
                GWDict.Add("GWPAYMETH", "[1] Credit / Debit Card");
                GWDict.Add("GWDDINST", "");
                GWDict.Add("GWDDSORT", "");
                GWDict.Add("GWDDACCT", "");
                GWDict.Add("GWDDNAME", "");
                GWDict.Add("GWDDMAND", "");
                GWDict.Add("GWTERMS", "[Y] Yes");

                //sends the Dictionary object to the Web service
                bool success = client.CreateXML(GWDict);
                if (success)
                {

                }
                else
                    {Response.Redirect("Error.aspx", false);}
            }
            catch (Exception ex)
            {
                //Generates an email notification there's a problem
                WebForm_Exceptions.ExceptionNotifier(ex);
            }

            Session.Abandon();
        }
        }
    }
4

0 回答 0