Problem About Salesforce SOAP API 32.0 In .Net Project

时间:2021-09-12 15:34:01

最近在集成项目项目中遇到一个问题:在用最新版本(API 32.0)Enterprise WSDL在.Net 中做集成时,初始化SforceService 时会初始化类错误。这算是Salesforce 在新版本SOAP API 中的一个BUG ,在以前版本没有这个问题,需要大家注意下。

具体错误信息如下:

Problem About  Salesforce  SOAP API 32.0 In .Net Project

message: Sync Error,System.TypeInitializationException: The type initializer for 'SyncUtility.SForce.DataUility' threw an exception. ---> System.TypeInitializationException: The type initializer for 'SyncUtility.SForce.ServiceProvider' threw an exception. ---> System.InvalidOperationException: Unable to generate a temporary class (result=1). 
error
CS0030: Cannot convert type
'SyncUtility.SForce.EnterpriseService.ListViewRecordColumn[]' to
'SyncUtility.SForce.EnterpriseService.ListViewRecordColumn' 
error
CS0030: Cannot convert type
'SyncUtility.SForce.EnterpriseService.ListViewRecordColumn[]' to
'SyncUtility.SForce.EnterpriseService.ListViewRecordColumn' 
error
CS0029: Cannot implicitly convert type
'SyncUtility.SForce.EnterpriseService.ListViewRecordColumn' to
'SyncUtility.SForce.EnterpriseService.ListViewRecordColumn[]' 
error
CS0029: Cannot implicitly convert type
'SyncUtility.SForce.EnterpriseService.ListViewRecordColumn' to
'SyncUtility.SForce.EnterpriseService.ListViewRecordColumn[]' 
 
产生问题的原因

是Salesforce新版本的WSDL触发了Microsoft 的关于WSDL 的一个限制。

解决方法如下:

方法一:

在生成Proxy Class 后,替换所有的ListViewRecordColumn[][] 为ListViewRecordColumn[];

方法二:

在WSDL 中进行修改,保存后再生成Proxy Class .具体修改操作如下:

<complexType name="ListViewRecordColumn">
                <sequence>
                    <element name="fieldNameOrPath"          type="xsd:string"/>
                    <element name="value"                    type="xsd:string" nillable="true"/>
                </sequence>
            </complexType>

修改为:

<complexType name="ListViewRecordColumn">
                <sequence>
                    <element name="fieldNameOrPath"          type="xsd:string"/>
                    <element name="value"                    type="xsd:string" nillable="true"/>
                </sequence>
            </complexType>

PS:

在生成WSDL 时,如遇到如下截图所示,这个不是Salesforce 的问题,是Firefox 浏览器显示的问题,大家不要惊慌,也不要纠结。鼠标右键另存为Enterprise.WSDL,文件类型为所有文件,保存后就得到你所需的wsdl .

Problem About  Salesforce  SOAP API 32.0 In .Net Project

Refrence:

Microsoft 关于WSDL 的限制:

https://connect.microsoft.com/VisualStudio/feedback/details/471297

Salesforce Community  关于此问题描述:
 https://developer.salesforce.com/forums/ForumsMain?id=906F0000000AiPEIA0