【问题标题】:Change salesforce wsdl endpoint to production将 salesforce wsdl 端点更改为生产
【发布时间】:2023-08-23 11:56:01
【问题描述】:

我一直在做一些关于 salesforce.com 集成的工作,并且在测试中一切正常,我们一直在通过更改我们的 API 登录凭据来测试不同的 salesforce 系统。现在该上线了,我发现存储在 WSDL 中的服务端点必须更新。我认为改变这一点的唯一方法是用“live”wsdl 完全替换“dev/test”wsdl,重新构建和重新部署。

必须有一种更简单的方法在开发/测试和实时 wsdl 或 salesforce 端点之间进行交换。这应该怎么做?

【问题讨论】:

标签: c# wsdl salesforce endpoint


【解决方案1】:

您可以使用配置文件覆盖从 WSDL 中提取的 Salesforce Web 服务 URL。

如果失败,请在生成的 Web 引用类上查找 URL 属性。我想你也可以在构造函数中定义它。

如果您使用的是企业 WSDL,并且两个组织之间的架构存在差异,您将需要更新定义。

【讨论】:

  • 我想我需要保留这两个引用,但是在代码中交换它们的最佳方法是什么?我有一个 SforceService 类型的私有成员,用于我的操作,但现在它需要是不同的类型,具体取决于它运行的环境。最优雅的方法是使用 #if !DEBUG 预处理器指令来更改命名空间别名,但我需要在 UAT 上运行发布代码,因此不能使用该方法。
  • @Craig 您是否将两个不同的 Enterprise WSDL 导入到同一个项目中?
  • 是的。我基本上有一个 sforce (live) 参考和一个 sforce.sandbox (dev/test) 参考,并且想找到在两者之间切换的最佳方法,而不必对所有内容进行两次编码。
  • 与其使用 DEBUG 条件编译符号,不如定义自己的符号并设置不同的构建配置以在它们之间切换。 Frankenstein's monster build configurations
  • 使用合作伙伴 API 可能会更好。它将处理来自一个 WSDL 的组织和模式差异。您需要针对差异编写代码,但这并不难。