【问题标题】:Arrays in webservices - Object reference not set to an instance of an objectWeb服务中的数组-对象引用未设置为对象的实例
【发布时间】:2012-03-27 03:30:18
【问题描述】:

我正在发送包含数组的肥皂消息。我的代码中有数组问题。它给出了上述错误,我到处寻找,甚至一遍又一遍地编写和重写我的代码,但我似乎找不到哪里出错了。

如果有人能指出我正确的方向,将不胜感激:

UpdateRatePackages.IService.InventoryServiceClient isc = new UpdateRatePackages.IService.InventoryServiceClient();
    UpdateRatePackages.IService.UpdateRatePackagesRequest ureq = new UpdateRatePackages.IService.UpdateRatePackagesRequest();
    UpdateRatePackages.IService.UpdateRatePackagesOperationResponse ores = new UpdateRatePackages.IService.UpdateRatePackagesOperationResponse();

protected void Page_Load(object sender, EventArgs e) { 发送肥皂消息(); }

受保护的无效 SendSoapMessage() {

        Int64 HID = 717759;
        Int64 HRID = 85264;
        int avail = 6;
       // RateDetails.AvailabilityApplicationType val  = RateDetails.AvailabilityApplicationType.SET;
       for (int i = 0; i < ureq.RatePackages.GetLength(0); i++)
        {
            ureq.RatePackages[i].RatePackageId = HRID;
            for (int j = 0; j < ureq.RatePackages[j].Rates.GetLength(0); j++)
            {
                ureq.RatePackages[i].Rates[j].Availability = avail;
                ureq.RatePackages[i].Rates[j].AvailabilityApplicationType = UpdateRatePackages.IService.AvailabilityApplicationType.SET;
                ureq.RatePackages[i].Rates[j].FromDate = Convert.ToDateTime("2012-03-21");
                ureq.RatePackages[i].Rates[j].ToDate = Convert.ToDateTime("2012-03-31");
            }

           // isc.UpdateRatePackages(request);

        }

数据在网络服务中定义:

     public class UpdateRatePackagesRequest
    {
        public string Username;
        public string Password;
        public UpdateRatePackageRequest[] RatePackages;


    }

    public class UpdateRatePackageRequest
    {
        public Int64 RatePackageId;
        public RateDetails[] Rates;

    }


    public class RateDetails
    {
        public decimal Rate;
        public enum RateApplicationType { SET, INCREASE, DECREASE, INCREASE_PERCENT, DECREASE_PERCENT } ;
        public int Availability;
        public enum AvailabilityApplicationType { SET , INCREASE, DECREASE };
        public bool StopSell;
        public string Inclusions;
        public int MinimumNightStay;
        public DateTime FromDate;
        public DateTime ToDate;

    }



    public class UpdateRatePackageResult
    {
        public Int64 RatePackageId;
        public Boolean Success;
        public string Message;

    }

    public class UpdateRatePackagesResponse

    {
        public UpdateRatePackageResult[] Result;

    }

我的问题是在数组中还是与肥皂消息本身有关?

错误突出显示的行:

for (int i = 0; i

请帮忙!

【问题讨论】:

  • 堆栈跟踪是什么?异常发生在哪一行?
  • 在第 100 行,这是我在引号中粘贴的行
  • 哦,明白了...好的,那么ureqRatePackagesnull,您是否尝试过设置断点并检查其中之一?
  • 是的 RatePackages 为空,我该如何解决这个问题?

标签: c# arrays web-services initialization


【解决方案1】:
for (int i = 0; i < ureq.RatePackages.GetLength(0); i++)

如果错误在那里发生,那么ureqRatePackagesnull。在调试器中单步执行,看看哪个是null。看起来你正在设置ureq,但无论如何你都应该检查一下。

【讨论】:

  • RatePackages 为空,我该如何解决?
  • @user1270384 查看应该设置RetePackages 的内容,并确保将其设置为有效值。我不知道你的代码是什么样的,所以我不能告诉你更多。愿原力与你同在! :)
  • 好的,感谢您的帮助。上面的代码中是否有一些我可以添加来帮助你的东西?
  • @user1270384 这应该是非常基本的东西......几乎和“hello world”一样基本。至少,您应该初始化您的数组,这是初始化数组的一种方法:int[] numbers = new int[10]; 填充它是创建一个 for 循环 for(int i = 0; i &lt; numbers.Length; i++) 并在数组的每个元素中存储一个数字的问题。跨度>
  • 随意发布另一个更具体的问题,并记住用相关标签标记问题(这会让更多人看到它)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多