Массивы в веб-сервисах - ссылка на объект не установлена ​​на экземпляр объекта - PullRequest
2 голосов
/ 27 марта 2012

Я отправляю мыльные сообщения, которые содержат массивы.У меня проблемы с массивами в моем коде.Это дает вышеупомянутые ошибки, я искал везде, даже писал и переписывал свой код снова и снова, но я не могу найти, где я иду не так.

Буду очень признателен, если кто-нибудь укажет мне правильное направление:

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 (отправитель объекта, EventArgs e) {SendSoapMessage ();}

protected void 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;

    }

Моя проблема в массивах или есть что-то дляделать с самим мыльным сообщением?

строка, где подсвечивается ошибка:

для (int i = 0; i

Пожалуйста, помогите!

1 Ответ

1 голос
/ 27 марта 2012
for (int i = 0; i < ureq.RatePackages.GetLength(0); i++)

Если там происходит ошибка, то либо ureq, либо RatePackages равно null.Перейдите в отладчик и посмотрите, какой из них null.Похоже, вы устанавливаете ureq, но вы все равно должны проверить оба.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...