мы получаем вышеуказанную ошибку, когда наш веб-сервис вызывается на одном сервере, а не на другом.Вот код, который используется ....
foreach (Service service in serviceSetup.Services)
{
if (service.CallService == true)
{
serviceConfig = ServiceConfigurationFactory.CreateConfiguration(service.Name, service.URL);
aSyncRequest = new ASyncRequest(serviceConfig.GetEnrichmentXML);
IAsyncResult res = aSyncRequest.BeginInvoke(request, null, null);
results.Add(res);
waitHandles.Add(res.AsyncWaitHandle);
}
}
bool terminExists = false;
if (waitHandles.Count > 0)
{
WaitHandle.WaitAll(waitHandles.ToArray(), Convert.ToInt32(Utils.AppSetting("ServiceWaitTime")));
foreach (IAsyncResult res in results)
{
if (res.IsCompleted)
{
try
{
returnEnrichmentXML = aSyncRequest.EndInvoke(res);
if (!string.IsNullOrEmpty(returnEnrichmentXML.ABIQ))
{
//need to see if we insert or concat the return enriched data as skinny can be done locally in electRa
//prior to QuotesHub
int index = enrichmentXML.ABIQ.IndexOf("99TERMIN|");
if (index > -1)
{
enrichmentXML.ABIQ = enrichmentXML.ABIQ.Insert(index, returnEnrichmentXML.ABIQ);
terminExists = true;
}
else
{
enrichmentXML.ABIQ = string.Concat(enrichmentXML.ABIQ, returnEnrichmentXML.ABIQ);
enrichmentABIQAdded = true;
}
}
if (!string.IsNullOrEmpty(returnEnrichmentXML.FullResults))
{
enrichmentXML.FullResults = string.Concat(enrichmentXML.FullResults, returnEnrichmentXML.FullResults);
}
}
catch (Exception ex)
{
ExceptionHandler.HandleException(ex);
throw ex;
}
}
}
}
Нет, я только что подумал, что, возможно, я не вызываю EndInvoke для результатов, которые не завершены.Поэтому я предполагаю, что .NET будет хранить это в памяти, пока GC не очистит его.Я не думаю, что это вызовет проблему переполнения стека.
Мы также получаем проблему, даже если сделан только один асинхронный вызов.Я не большой эксперт по серверам, но сервер, на котором он работает, гораздо хуже, чем тот, на котором он не работает.
Есть идеи ??
Приветствия