Вопрос

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

Это было полезно?

Решение

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top