Используя Visual Studio 2008, я настраиваю клиента, который использует веб-службы.
Это не имеет ничего общего с размерами буфера (так как это типичный ответ, все соответствующие размеры были увеличены).
Я использовал список в качестве параметра метода.
После долгих экспериментов я использовал System.Net.WebClient для создания вручную запроса Soap 1.1 и Soap 1.2 для проверки результатов теста.
using (var webCtx = new System.Net.WebClient())
{
webCtx.Headers.Add(System.Net.HttpRequestHeader.ContentType, "text/xml");
webCtx.Headers.Add("SOAPAction", "http://tempuri.org/HelloWorld");
var uri = new Uri("http://localhost:12345/MyProject/WebService.asmx");
MessageBox.Show(webCtx.UploadString(uri, xml));
}
Где xml - это строковая переменная xml с фактическими данными.
Проблема в том, что одно из полей имеет специальный символ. Вот пример тела сообщения xml.
<PocoClass>
<UnicodeString>123</UnicodeString>
</PocoClass>
Если значение UnicodeString было чем-то простым (например, 123), но как только появился специальный символ, я получил 400 Bad Request.
Теперь я нашел статью базы знаний Майкрософт, описывающую ошибку kb911276 , в которой в основном говорится об установке оперативного исправления. Это действительно не то, что может быть решением проблемы, поэтому мне было интересно, есть ли идеи, как решить эту проблему?
Являются ли единственными решениями для написания какого-либо пользовательского кодирования / декодирования или пользовательских привязок, которые должны быть реализованы сервером и клиентом? Есть ли более простые идеи?
Спасибо
Отредактировано:
Использование списка не является проблемой, так как он обрабатывается VS. Вот более полное (но все же частичное) содержание сообщения мыла.
<HelloWorld xmlns="http://tempuri.org/">
<pocoList>
<PocoClass>
<UnicodeString>123</UnicodeString>
</PocoClass>
</pocoList>
</HelloWorld>