我有一个ASP.NET Web服务,我试图从BizTalk中调用它。现在我已经设法实际输入了webservice,但是对象无法映射并且总是返回NULL。在尝试和测试之后,我终于发现使映射失败的一件事是根节点上的命名空间。现在我不知道如何删除该命名空间,或者以某种方式尝试调整web服务以使用命名空间更好?
我的服务方式:
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服务器上的错误信息是“无法在服务上映射篮子。”
答案 0 :(得分:2)
我放弃了实体框架并使用为WCF服务定义的命名空间创建了自己的对象,现在它可以工作了。感谢您的帮助,我将继续玩它,直到我了解更多=)