Создаю веб-сервис XML-RPC. В серверном коде создаю структуру
[XmlRpcMissingMapping(MappingAction.Ignore)]
public struct proverka
{
[XmlRpcMissingMapping(MappingAction.Error)]
public int chislo;
public string stroka;
}
//и код обработчика:
public class Handler1 : XmlRpcService
{
[XmlRpcMethod("Test")]
public string MyService(proverka arg)
{
return "chislo=["+arg.chislo+"] stroka=["+arg.stroka+"]";
}
}
Далее запускаю сервис, отправляю ему следующий запрос:
<methodCall>
<methodName>Test</methodName>
<params>
<param>
<value>
<struct>
<member>
<name>stroka</name>
<value><string>Hello!</string></value>
</member>
</struct>
</value>
</param>
</params>
</methodCall>
И сервис почему-то даже не спотыкается на том, что не передан обязательный параметр chislo (отмеченный [XmlRpcMissingMapping(MappingAction.Error)]). Всё отрабатывает и возвращает строку chislo=[0] stroka=[Hello!]. То есть как-будто бы атрибут [XmlRpcMissingMapping(MappingAction.Error)] у поля chislo не указан вовсе.
На странице описания сервиса отображается всё правильно — stroka optional, chislo — нет.