SalesForce Web服务 - 无法识别请求元素

时间:2013-02-20 06:23:45

标签: c# soap salesforce asmx

我们正在使用SalesForce的出站通知服务。

从SalesForce WSDL生成代理并尝试将其发送到我的ASMX Web服务后,我收到以下错误

请求元素http://soap.sforce.com/2005/09/outbound'>没被认可。

在我的C#ASMX网络服务上

[WebService(Namespace = "http://services.company1.com.au/services")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
[SoapDocumentService(RoutingStyle = SoapServiceRoutingStyle.RequestElement)]
public class ImportPosition : WebService, NotificationPort

SalesForce WSDL具有以下soap定义

<definitions targetNamespace="http://soap.sforce.com/2005/09/outbound"
         xmlns="http://schemas.xmlsoap.org/wsdl/"
         xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
         xmlns:tns="http://soap.sforce.com/2005/09/outbound"
         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
         xmlns:ent="urn:enterprise.soap.sforce.com"
         xmlns:ens="urn:sobject.enterprise.soap.sforce.com">

如果我将C#ASMX Web服务名称空间更改为“http://soap.sforce.com/2005/09/outbound”,则请求成功进入,但作为空对象。

使用Wireshark我可以看到以

形式出现的SOAP消息
<notifications xmlns="http://soap.sforce.com/2005/09/outbound"

知道导致此命名空间问题的原因是什么?感谢

1 个答案:

答案 0 :(得分:0)

原来我使用了错误的工具来生成我的代理。

我应该使用wsdl.exe而不是svcutil.exe

创建Web服务以接收SalesForce出站通知的提示

use .asmx 
WS-I Basic Profile 1.1 
Web Service Description Language (WSDL) 1.1
Simple Object Access Protocol (SOAP) 1.1