在调用web service方法时,我得到如下错误:
GenericException
发生了意想不到的错误。值不能为空。
参数名称:source在System.Linq.Enumerable。Where[TSource](IEnumerable1 source, Func
2 predicate)
在QuotingGate.CalcsLV.Casco.Standard.Ergo。计算(VehicleQuotingParameters参数,CascoQuote&c:ProjectsxxxWebServicesQuotingGateCalcsLVCascoStandardErgo.cs:line 152
在QuotingGate.CalcsBase.CalculatorBase 4。Quote(In parameters) In c:ProjectsxxxWebServicesQuotingGateCalcsBaseBase.cs:line 138
在Ergo.cs line 152
上有这样的linq查询:
var territory = from c in prices.premiums where c.tariffParam3 == "LV" select c;
谷歌,发现许多情况下,有Single
而不是SingleOrDefault
..但是在我的例子中,linq和relay并不重要是否有结果,对吗?
价格在这里设置:
...
policyDataKASKORetParam1 prices = null;
prices = ws.GetCascoQuotesUnregistered(quote,
parameters.Vehicle.VIN,
parameters.Vehicle.Make,
parameters.Vehicle.Model,
parameters.Vehicle.ManufactureDate.Value.Year,
parameters.Vehicle.Value.Value,
parameters.Vehicle.EngineCapacity ?? 0,
parameters.Insurance.StartDate.Value,
parameters.Insurance.Currency.ToString(), irJaunakLiet, parameters.Client.Code, parameters.Vehicle.OwnerCode, irDefinetieServisi);
enter code here
...
和它调用的方法:
public policyDataKASKORetParam1 GetCascoQuotesUnregistered(CascoQuote quote, string vin, string make, string model, int year, int vehicleValue, int engine, DateTime policyStartDate, string currency, bool irJaunakLiet, string clientCode, string ownerCode, bool irDefinetieServisi)
{
policyDataKASKORetParam1 prices;
string personCode = string.IsNullOrWhiteSpace(Config.FixedOwnerCode) ? clientCode : Config.FixedOwnerCode;
DateTime start = policyStartDate;
DateTime issue = DateTime.Today;
prices = WS.getOfferDataKASKO(SessionKey,
personCode, // Holder Code
null,
null,
vin,
make,
model, // Model
year, // Year
engine, // Engine
string.Empty, // Usage
ownerCode, // Person Code
true,
false,
false,
false,
false,
false,
true,
false,
irJaunakLiet,
false,
irDefinetieServisi,
false, // TODO: All risks
(double)vehicleValue,
currency,
issue,
start,
null,
0d,
null,
null);
if (prices.status != 0)
quote.ErrorList.Add(new QuoteBase.Error(Errors.InsurerError, string.Format("Error message: {0}", prices.statusText)));
return prices;
}
基本上最后一个方法调用Web Service方法。所以总的来说,我是否可以假设Web服务没有返回任何东西,或者是否有其他的可能,为什么它最终为空。(不知道怎么调试,它在远程服务器上运行。尝试WCF跟踪,但没有任何结果…)
问题是在另一个国家,商人告诉我所有的Web服务都应该工作,所以他们告诉我价格。保费不是零…但是没有调试,就不能和他们争论。我应该做一些客户端来运行Web服务,并在我的本地机器上运行它吗?或者是否有其他的可能性来查看运行实例的值?
他们还说Web Service没有改变-我也100%知道我的代码没有改变,所有的工作都很好,就像10天前…
(PS我是Junior,我的导师已经离开了…)~4个月工作经验)
来自MSDN,这里是Where扩展方法的签名:
public static IEnumerable<TSource> Where<TSource>(
this IEnumerable<TSource> source,
Func<TSource, bool> predicate
)
正如你所看到的,source
是对应于集合的参数,你的错误消息表明'参数名称:源',所以我猜prices.premiums
是空的。