#c# #visual-studio #wcf #soap #case-sensitive
#c# #visual-studio #wcf #soap #чувствителен к регистру
Вопрос:
У меня есть клиент C # WCF, который должен вызывать веб-службу WCF третьей части: беда веб-службы в том, что тип параметра равен имени метода и изменяется только с учетом регистра: когда я выполняю следующий вызов, где тип переменной lclassname имеет то же имя, что и тип переменной lclassname.имя класса метода (измените только с учетом регистра):
var lclassName = new className()
...
...
var lreturnValue = new ClassName(lclassName);
Я заметил в необработанном XML-запросе, что Visual Studio делает нечто подобное, когда я пытаюсь вызвать веб-службу, используя ссылку на класс клиента.cs, созданную Visual Studio с помощью функции Add Service reference:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ClassName xmlns="">
<ClassName...>
</ClassName...>
</ClassName...>
</s:Body>
</s:Envelope>
Я отследил http-запрос SOAP raw, выполненный Visual Studio, по всей системе.Диагностика.TextWriterTraceListener в web.config.
если вы заметили Visual Studio, измените первую букву регистра типа параметра. Почему?
Я вызываю стороннюю веб-службу и не могу изменить тип параметра.
Есть ли способ сообщить Visual Studio при вызове клиента WCF через SOAP, чтобы не изменять имена методов? (Например, с некоторыми атрибутами или некоторыми параметрами в endpoint web.config)
Спасибо.
Комментарии:
1. Это зависит от того, является ли первая буква имени вашего класса прописной или строчной. Вызов службы WCF через агент генерации VS не изменит первую букву className.