Требуется ли пространство имен WCF DataContract

У меня есть клиент WCF и служба WCF,

На каждом конце есть DataContract. Мне требуется пространство имен для десериализации объекта на клиенте.

т.е. удар не работает

[DataContract]
public class Framework
{
    [DataMember]
    public string Name { get; set; } 
}

но это делает:

[DataContract(Namespace = "http//mysite.co.uk"]
public class Framework
{
    [DataMember]
    public string Name { get; set; } 
}

Почему это? Я бы подумал, что выход из пространства имен означал бы, что они оба по умолчанию перешли на http://tempuri.org, и с обоими все будет в порядке. .

Кажется странным, что требуется пространство имен.

Есть ли у кого-нибудь объяснение такому поведению?


person big_tommy_7bb    schedule 11.01.2013    source источник


Ответы (1)


По умолчанию он должен использовать пространство имен tempuri, как вы указали. Я делал это много раз, поэтому знаю, что это работает. Я предполагаю, что входящие данные используют пространство имен http//mysite.co.uk, поэтому это приводит к сбою. Пространство имен DataContract должно соответствовать пространству имен, используемому в сообщении SOAP.

Вы используете сборки или обнаружение для совместного использования контракта на обслуживание? Возможно, ваш контракт с одной стороны устарел и его необходимо обновить (повторно запустив обнаружение или повторно развернув общую сборку).

person luksan    schedule 11.01.2013