У меня есть веб-служба ASP.NET, и я пытаюсь вызвать ее из BizTalk. Теперь мне удалось ввести веб-сервис, но объект не может быть отображен и всегда возвращает NULL. После попытки и тестирования я, наконец, обнаружил, что единственное, что делает его неудачным при сопоставлении, - это пространство имен на корневом узле. Теперь я понятия не имею, как я могу удалить это пространство имен или было бы лучше как-то попытаться настроить веб-сервис для использования пространства имен?
Мой метод обслуживания:
public bool CreateBasket(Basket basket) { if(basket == null) throw new Exception(string.Format("Basket could not be mapped on the service.")); _entities.AddToBaskets(basket); foreach (var item in basket.Items) { _entities.AddToItems(item); } return _entities.SaveChanges() > 0; }
Объект корзины создается моделью сущности.
Этот звонок работает:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <CreateBasket xmlns="http://tempuri.org/"> <basket xmlns:ns0="http://schemas.datacontract.org/2004/07/OC.SampleCustomer.WCFService" xmlns:ns1="http://schemas.datacontract.org/2004/07/System.Data" xmlns:ns2="http://schemas.datacontract.org/2004/07/System.Data.Objects.DataClasses" xmlns:ns3="http://schemas.microsoft.com/2003/10/Serialization/"> <ns0:BillingId>5</ns0:BillingId>
Этот звонок не работает:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <CreateBasket xmlns="http://tempuri.org/"> <ns0:basket xmlns:ns0="http://schemas.datacontract.org/2004/07/OC.SampleCustomer.WCFService" xmlns:ns1="http://schemas.datacontract.org/2004/07/System.Data" xmlns:ns2="http://schemas.datacontract.org/2004/07/System.Data.Objects.DataClasses" xmlns:ns3="http://schemas.microsoft.com/2003/10/Serialization/"> <ns0:BillingId>5</ns0:BillingId>
Редактировать BizTalk получает ошибку, которую я добавляю в свой метод обслуживания в теле получения. Поэтому мое сообщение об ошибке на сервере biztalk: «Невозможно сопоставить корзину в службе».
Я отказался от структуры сущностей и создал свои собственные объекты с определенными пространствами имен для службы WCF, и теперь это работает.Спасибо за помощь, я буду продолжать играть с ней, пока не пойму больше =)