在调用 Web 服务方法时,我收到如下错误:
GenericException
发生意外错误。值不能为空。
参数名称:source at System.Linq.Enumerable.Where[TSource](IEnumerable1 source, Func
2 predicate)
at QuotingGate.CalcsLV.Casco.Standard.Ergo.Calculate(VehicleQuotingParameters parameters, CascoQuote& quote) in c:\Projects\xxx\WebServices\QuotingGate \CalcsLV\Casco\Standard\Ergo.cs:第 152 行
,位于 QuotingGate.CalcsBase.CalculatorBase`4.Quote(In parameters) in c:\Projects\xxx\WebServices\QuotingGate\CalcsBase\Base.cs:第 138 行
上面Ergo.cs line 152
有这样的 linq 查询:
var territory = from c in prices.premiums where c.tariffParam3 == "LV" select c;
谷歌搜索并找到很多情况,Single
而不是SingleOrDefault
.. 但在我的情况下,它的 linq 和中继无关紧要,是否有任何结果,对吧?
价格在这里设置:
...
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 服务方法。所以我可以假设 Web 服务没有返回任何东西,或者是否有其他可能性是它最终为空的原因。(不知道如何调试它,它在远程服务器上运行..尝试了 WCF 跟踪但没有任何结果..)
问题出在另一个国家,商界人士告诉我所有的 Web 服务都应该工作,所以他们说我的价格。溢价不是空的.. 但是没有调试,不能真正与他们争论。我应该做一个客户端来运行 Web 服务并在我的本地机器上运行它吗?或者是否有另一种可能性来查看运行实例的值?
他们还说 Web 服务没有改变——我也知道 100% 我的代码没有改变,一切都像 10 天前一样工作正常。
(PS我是Junior,导师已经离开了..~4个月的经验而已)