Ладно, наконец-то я решил эту проблему и через 16 часов без перерыва это то, что я придумал.Достаточно странно, запутанно и странно, что здесь требуется пост для потомков:
Шаг 1:
Создать веб-проект, ссылающийся на библиотеку классов, которая ссылается на npgsql.DLL (который в свою очередь ссылается на Mono.Security.dll).Добавьте ссылку на веб-сервис в веб-проект и используйте его на некоторой странице.
Клиент SOAP теперь работает нормально
Шаг 2: (и этопотребовалось 10 часов, чтобы изолировать)
Добавьте Class1.cs в библиотеку классов, на которую ссылаются, и убедитесь, что этот класс использует класс из npgsql.dll, затем используйте этот класс в своем веб-проекте, но используйте место, где код ISНИКОГДА НЕ ИСПОЛЬЗУЕТСЯ.
Теперь клиент SOAP аварийно завершает работу с тайм-аутом
Как мог код, который никогда не вызывался, изменить поведение клиента SOAP, что было для меня лучше для большей частичасов?
Ответ
При ссылке на класс из npgsql.dll (даже если код никогда не вызывался), npgsl.dll и Mono.Security.dll былископировать в папку bin
И по какой-то неизвестной причине Mono.Security.dll не позволяет SOAP-клиенту устанавливать несертифицированные соединения.
Простое удаление файла Mono.Security.dll из папки bin немедленно решило проблему.
Я понятия не имею, зачем нужен Mono.Security.dll или что он портит.SOAP, или как получилось, я могу удалить его из папки bin и запустить все так же хорошо.
Ну, и это история самой странной ошибки, которую я видел за долгое время.