我创建了通过C#的Salesforce平台进行通信,使用他们的WSDL服务。 恰巧,SalesForce公司(而不是逻辑上)允许其平台的“沙箱”的实例和其平台的“生产”的实例。 我的应用程序的设计与生产工作,但我一直在使用沙盒集成测试和单元测试。 我现在达到了,我需要部署到生产点。 不过,我面临一个很大的问题,因为如果我以往任何时候都需要建立和测试新功能,我将不得不从生产实例的WSDL更新到沙盒的实例,然后交换来回我添加新的功能。 这是因为两个WSDL文件是完全不同的 ,我必须从他们生成的代码! 这不仅是草率的,很危险。 我可能会影响我的一些实时系统中的数据。
我想找到一种方法,使用注册表项,文本值,或者告诉我的应用程序,它WSDL来使用一些配置设置。 麻烦的是? 我想不出一个如何接近这一点。 非常反对我的代码引用从WSDL生成。 有任何想法吗?
WSDL中不应该是两者之间完全不同! 当然,除非有很多新的对象和自定义字段的已在沙箱中创建并没有推到生产...
是否有你已经混合任何机会的企业(强类型版本)和合作伙伴(更通用的一种)的WSDL? 检查此帮助主题的更多信息: http://www.salesforce.com/us/developer/docs/api/Content/sforce_api_quickstart_intro.htm#choose_wsdl
如果你真的关心数据模型,你可能会决定使用合作伙伴的版本(生成的代码是有点难看,那么因为它给你的通用sObjects,而不是更具体的客户,联系人等)。 我总是用细企业版(从沙箱的东西,最终取得了它的生产和一次不同的系统开始依靠刚开始同步他们的版本中,如果可能的数据模型队)。
方法来区分他们,为我工作是检查端点(在文件的最底部)。 我是做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)
合作伙伴的WSDL有“U”的网址,而不是“C”,他们不携带特定组织的ID: https://test.salesforce.com/services/Soap/u/26.0"/
(我的小窍门记住这是考虑它作为“客户”或“定制”和“通用”)
编辑:当然,如果你坚持“企业”你真的可以指望的唯一终点是生产。 沙箱组织IDS改变每次刷新的是时间。
文章来源: How can you use two WSDLs and maintain a test instance with a C# application?