2009-10-07 5 views
2

У меня есть многомерная коллекция фиксированного размера, открытая через контракт WCF, и я хочу иметь возможность возвращать null для любых координат в коллекции, которая не была заполнена. Когда я пытаюсь это сделать, я получаю исключение, указывающее, что это не поддерживается: «FaultException`1: ссылка на объект не установлена ​​в экземпляр объекта».Может ли метод контракта WCF возвращать null?

Я задавался вопросом, можно ли использовать какой-либо флаг OperationContract, но никто не выделяется.

Является ли это возможным, или существует какое-то внутреннее ограничение в WCF?

Thanks

ответ

5

В WCF ничего не мешает вам вернуть null из любого метода контракта на операцию.

Исключением является FaultException<NullReferenceException>, что означает, что где-то в вашем серверном коде вы ссылаетесь на объект, который установлен в null. Проверьте свой серверный код.

+0

Спасибо за быстрый ответ. Я снова проверю свою работу и отправлю дальше. Приношу свои извинения за то, что потратил ваше время, если окажется, что у меня есть. – dcw

3

Да, они могут, мои делают все время. Не могли бы вы разместить соответствующие биты контракта на обслуживание и/или контракты с данными, чтобы мы могли увидеть, где может быть проблема?

+0

Спасибо за быстрый ответ. Я снова проверю свою работу и отправлю дальше. Приношу свои извинения за то, что потратил ваше время, если окажется, что у меня есть. – dcw

1

Как указано в Gart и Christian, вы действительно можете вернуть null из методов контракта WCF. Фактически я был пойман своей (попыткой) умностью, где внешний (контрактный) тип был преобразован из внутреннего типа с помощью оператора неявного преобразования, в рамках реализации которого свойства внутреннего типа были доступны в качестве аргументов конструктору внешнего типа. Следовательно, NullReferenceException.

Doh! мне. Cred to G & C. Gart получает «принять» волосы, так как чтение его дало мне лампочку.

Смежные вопросы