C# 对象引用未设置为对象的实例-webservices
我的web服务中出现了这个错误,尽管我看过关于空问题的文章,但我无法找到如何修复这个错误 这是我的代码:C# 对象引用未设置为对象的实例-webservices,c#,web-services,object,instance,webservice-client,C#,Web Services,Object,Instance,Webservice Client,我的web服务中出现了这个错误,尽管我看过关于空问题的文章,但我无法找到如何修复这个错误 这是我的代码: SendInvUpdate.InvServices.UpdateRatePackagesRequest urq = new SendInvUpdate.InvServices.UpdateRatePackagesRequest(); SendInvUpdate.InvServices.UpdateRatePackagesOperationResponse ors = new
SendInvUpdate.InvServices.UpdateRatePackagesRequest urq = new SendInvUpdate.InvServices.UpdateRatePackagesRequest();
SendInvUpdate.InvServices.UpdateRatePackagesOperationResponse ors = new SendInvUpdate.InvServices.UpdateRatePackagesOperationResponse();
protected void Page_Load(object sender, EventArgs e)
{
Int64 HID = 819942;
Int64 HRID = 154482;
SendInvUpdate.InvServices.UpdateRatePackagesRequest request = new SendInvUpdate.InvServices.UpdateRatePackagesRequest();
ChannelManagerAccount account = new ChannelManagerAccount();
request.HotelId = HID;
int avail = 4;
DateTime frodte = Convert.ToDateTime("2012-04-12");
DateTime todte = Convert.ToDateTime("2012-04-30");
int NoofRatePackages = 3;
UpdateRatePackageRequest[] RatePackages = new UpdateRatePackageRequest[NoofRatePackages];
string res;
request.RatePackages = new UpdateRatePackageRequest[NoofRatePackages];
request.RatePackages = RatePackages;
UpdateRatePackageRequest rp = new UpdateRatePackageRequest();
for (int i = 0; i < NoofRatePackages; i++)
{
rp.RatePackageId = HRID;
RateDetails[] Rates = new RateDetails[NoofRatePackages];
rp.Rates = new RateDetails[NoofRatePackages];
rp.Rates = Rates;
RateDetails rd = new RateDetails();
for (int j = 0; j < NoofRatePackages; j++)
{
rd.Availability = avail;
rd.AvailabilityApplicationType = SendInvUpdate.InvServices.AvailabilityApplicationType.SET;
rd.FromDate = frodte;
rd.ToDate = todte;
}
}
SendInvUpdate.InvServices.InventoryServiceClient icc = new SendInvUpdate.InvServices.InventoryServiceClient();
// ( *Line where the error appears*)
ors = icc.UpdateRatePackages(request);
res = ors.Results.ToString();
}
SendInvUpdate.InvServices.updateratepackagerequest urq=new SendInvUpdate.InvServices.updateratepackagerequest();
SendInvUpdate.InvServices.UpdateRatePackagesOperationResponse ors=新建SendInvUpdate.InvServices.UpdateRatePackagesOperationResponse();
受保护的无效页面加载(对象发送方、事件参数e)
{
Int64 HID=819942;
Int64 HRID=154482;
SendInvUpdate.InvServices.UpdateratePackageRequest请求=新建SendInvUpdate.InvServices.UpdateratePackageRequest();
ChannelManagerAccount帐户=新的ChannelManagerAccount();
request.HotelId=HID;
int=4;
DateTime frodte=转换为ToDateTime(“2012-04-12”);
DateTime todte=转换为ToDateTime(“2012-04-30”);
int noofradepackages=3;
UpdateRatePackageRequest[]RatePackages=新的UpdateRatePackageRequest[NoofRatePackages];
字符串res;
request.RatePackages=new UpdateRatePackageRequest[NoofRatePackages];
request.ratepacks=ratepacks;
UpdateRatePackageRequest rp=新的UpdateRatePackageRequest();
for(int i=0;i
我知道这与RateDetails数组和初始化RateDetails的值到请求的那一刻有关,但我不确定如何或如何处理。在调试模式下,当查看rp的值时,rp.Rates[0]、rp.Rates[1]、rp.Rates[2]和RatePackages[0]、RatePackages[1]、RatePackages[2]都没有值,因此我强烈感觉这就是我的问题所在,但我不知道如何修复
如果你能洞悉我的错误,我将不胜感激 将icc服务引用的初始化移到页面中\u加载代码如下所示
SendInvUpdate.InvServices.InventoryServiceClient icc = new SendInvUpdate.InvServices.InventoryServiceClient();
ors = icc.UpdateRatePackages(request); ( Line where the error appears)
我不是asp.net方面的专家,但如果不将全局变量保存在某个持久性容器中(搜索关于会话、视图状态),则无法将代码基于全局变量
编辑:
这里似乎也有问题
UpdateRatePackageRequest[] RatePackages = new UpdateRatePackageRequest[NoofRatePackages];
string res;
request.RatePackages = new UpdateRatePackageRequest[NoofRatePackages];
request.RatePackages = RatePackages;
应仅为request.RatePackages=new UpdateRatePackageRequest[NoofRatePackages]代码>
编辑2:
您向InventoryServiceClient发送一个对象请求
,该对象包含一个UpdateRatePackageRequest数组,但创建该数组后,您不会设置UpdateRatePackageRequest的任何实例。因此,我假设InventoryServiceClient在从数组读取值时失败。
我将尝试以这种方式更改您的for循环
for (int i = 0; i < NoofRatePackages; i++)
{
UpdateRatePackageRequest rp = new UpdateRatePackageRequest();
request.RatePackages[i] = rp;
....
for(int i=0;i
RateDetails出现相同错误。您创建了数组,但没有使用RateDetails的实际实例设置数组的任何值
for (int j = 0; j < NoofRatePackages; j++)
{
RateDetails rd = new RateDetails();
rp.Rates[j] = rd;
....
for(int j=0;j
ores在哪里定义?谢谢,我已经编辑过,应该在我的web服务的新实例的顶部定义ors。谢谢,它不起作用,我编辑了代码,以显示在您的建议后的外观。我希望,如果您在有问题的行上设置断点,并检查请求
a在icc
vars中,您将看到它们不是空的。因此,如果您执行该行,代码出现未处理的异常,这意味着错误是webservice方法UpdateRatePackagesHanks@steve的内部错误。我设置了一个断点,发现没有空值,我还修改了我的问题,希望它能澄清m这对每个人来说都是一个问题。我上周在这个网站上提出的一个问题中,从Web服务中的一个数组示例中得到了这一点,但我现在没有这个链接。它工作正常,因为我能够获得rp.ratepackeid=HRID;as 154482的值。在调用RateDetails实例后,我得到的值为空。