两者之间的 WSDL 不应该完全不同!当然,除非在沙盒中创建了很多新对象和自定义字段并且尚未推送到生产环境中......
您是否有任何机会混合了企业(强类型版本)和合作伙伴(更通用的)WSDL?查看此帮助主题以获取更多信息: http: //www.salesforce.com/us/developer/docs/api/Content/sforce_api_quickstart_intro.htm#choose_wsdl
如果您真的关心数据模型,您可能会决定使用合作伙伴版本(生成的代码有点难看,因为它为您提供了通用的 sObjects 而不是更具体的 Account、Contact 等)。我总是对企业版很好(沙盒中的东西最终将其投入生产,一旦不同的系统开始依赖数据模型,团队就会尽可能地开始同步他们的版本)。
区分它们对我有用的方法是检查端点(在文件的最底部)。我正在做 PHP 集成,所以对我来说,动态翻转端点不是问题,而是“信任”相同的对象结构。不知道它在 C# 世界中的样子,这条信息最终在解析代码中的什么位置......祝你好运!
企业 - 沙盒
<service name="SforceService">
<documentation>Sforce SOAP API</documentation>
<port binding="tns:SoapBinding" name="Soap">
<soap:address location="https://test.salesforce.com/services/Soap/c/26.0/(18 char sandbox Id)"/>
</port>
</service>
企业 - 生产
https://login.salesforce.com/services/Soap/c/26.0/(prod id)
Partner WSDLs have "u" in the URL instead of "c" and they don't carry specific organisation's id: https://test.salesforce.com/services/Soap/u/26.0"/
(my small trick to memorize this is to think about it as "Client" or "Customized" and "Universal")
Edit:
of course if you'll stick to "enterprise" the only endpoint you can really count on is production. Sandbox org ids change every time they're refreshed.