Как реализовать SoapHttpClientProtocol

Поскольку этот вопрос говорит мне, что SoapHttpClientProtocol не является потокобезопасным. И мое реальное тестирование говорит мне, что это правда, так как мои свойства SoapHeader продолжают смешиваться между вызовами. Есть ли способ убедиться, что я могу использовать это в потоках и сохранить мои свойства правильными? И убедитесь, что я не сталкивался с приведенным в этом вопросе примером того, как один поток думает, что соединение открыто, когда другой поток закрыл его? Нужно ли беспокоиться о значениях заголовка мыла после того, как мой запрос был сделан? Как я могу убедиться, что свойства установлены так, как я их установил, пока запрос не был выдан?

1 ответ

Решение

Первое, что я хотел бы спросить, работает ли ваш сервис правильно, если вы не делаете его многопоточным. Если вы делаете последующие звонки, все ли они работают правильно и дают ли вы желаемый результат? Если нет, то проблема на стороне сервера более чем вероятна.

Чтобы увидеть, что вы отправляете, вы можете сериализовать мыльное сообщение до его отправки. Убедитесь, что он генерируется правильно.

Моя работа блокирует доступ ко многим веб-сайтам, но у CodeProject есть несколько примеров, если я правильно помню.

Если работает один поток, создайте слой сериализации и запишите файлы на диск в многопоточном сценарии. Затем вы можете увидеть, что работает, а что нет, исходя из того, что ваш код считает отправкой.

Более чем вероятно, что ваши вызовы смешиваются сервером, поскольку вы пытаетесь установить несколько соединений, в то время как ваша конечная точка может восприниматься как одно значение, что-то вроде того, что вы находитесь за межсетевым экраном NAT. Это означает, что вы можете получить соединение, но один из ваших других потоков сначала получает свое сообщение. Если это так, вы можете попробовать раскрутить каждый поток в своем домене приложений и посмотреть, поможет ли он вам. Не говоря о том, что это сработает, но я не уверен в том, что еще можно попробовать.

Другие вопросы по тегам