У меня есть служба wcf (WCF_A), которая вызывает другую службу wcf (WCF_B) (в настоящее время я размещаю WCF_B на моей локальной машине с моими учетными данными - в качестве службы Windows), WCF_B внутренне выполняет вызов веб-службы (WS01) это размещено на IIS. Я создал тестовый клиент и вызываю WCF_A -> WCF_B -> WS01. Непосредственно перед выполнением вызова (WS01) я запускаю таймер и останавливаю таймер, когда возвращается вызов веб-службы и результат назначается переменной, последовательность действий такая, как показано ниже
WCF_B
1) Debug.WriteLine(“Call to webservice”)
2) Starttimer
3) Var result = WS01.Function(xxxx)
4) Stop timer
5) Debug.Writeline (timetaken)
6) Debug.WriteLine(“Call from webservice came back”)
При первом вызове функции веб-сервиса я обнаружил, что между этапом (2) и этапом (5) это занимает очень много времени.
Первоначально я думал, что создание прокси занимает много времени, при запуске Fiddler я обнаружил, что вызов веб-службы выполнен и мгновенно возвращает ожидаемые результаты.
После этого я не уверен, что происходит, и процесс, кажется, ждет. (На шаг (5) уходит почти 2,5 минуты.
Как только вызов сделан, если я оборачиваюсь и выполняю тот же вызов с различными параметрами для веб-службы, шаг (5) выполняется в течение примерно 1,1 секунды (время взято). Я не уверен, что здесь происходит. Похоже, что на шаге (3) присваивание переменной результата занимает много времени, но не уверен, почему это происходит только в первый раз.
Я также создал тестовый клиент и напрямую вызываю WCF_B (размещенный с использованием wcf, предоставленного WCFHost), хотя вызов не занимает много времени, так как в предыдущем случае он возвращается через 9,8 с в первый раз и примерно через 1 с после этого опять вызов кажется ожидающим во время назначения.
Есть ли какие-либо указатели на определение того, что происходит?
Спасибо за вашу помощь