Ноль просто означает ноль. Там нет никаких проблем с безопасностью.
Поскольку веб-сервис является общедоступным API, вам следует тщательно проверять все входные данные и ожидать возникновения некорректно сформированного ввода. Вы никогда не можете предположить, что код клиента делает правильные вещи и не отправляет вам ноль (злонамеренно или иным образом).
Таким образом, пустые строки или другие значения часового не спасают вас от проверки ввода, и они также не обязательно облегчают жизнь. Семантически пустые строки тоже не равны нулю, они пусты.
Что бы это ни стоило, xml, сгенерированный .net SoapFormatter для пустого значения, ничего не значит, и это не то же самое, что пустая строка. Это тривиальный пример, но информативный. Если вы отправляете null, вы также отправляете меньше данных, что может быть чем-то, что нужно учитывать.
{
[WebMethod]
public MyClass HelloWorld()
{
MyClass val = new MyClass()
{
IsValid = false,
HelloString = "Hello World",
BlankString = "",
Nested = new NestedClass { Name = "Bob" }
};
return val;
}
}
public class MyClass
{
public bool IsValid { get; set; }
public string HelloString { get; set; }
public string BlankString { get; set; }
public string OtherString { get; set; }
public NestedClass Nested { get; set; }
public NestedClass NullNested { get; set; }
}
public class NestedClass
{
public string Name { get; set; }
}
дает следующий ответ xml. Обратите внимание, что OtherString
и NullNested
полностью отсутствуют в ответе, что отличается от BlankString
.
<MyClass>
<IsValid>false</IsValid>
<HelloString>Hello World</HelloString>
<BlankString />
<Nested>
<Name>Bob</Name>
</Nested>
</MyClass>