Episerver Salesforce连接器配置保存在哪里?

时间:2019-05-29 17:19:42

标签: salesforce episerver

使用带有Epiforce附加组件的运行Episerver的站点来将Episerver表单绑定到Salesforce。我在Episerver后端的salesforce连接器配置屏幕中为我的salesforce用户输入用户名/密码/令牌,它保存了我的凭据。我导航到表单,现在可以看到我的salesforce字段以将表单字段映射到。

问题是salesforce连接配置不断消失。在一段时间后返回Episerver管理员中的salesforce连接器配置,或者转到表单并尝试映射字段时,salesforce连接消失了,我的字段也不再映射。如果我重新添加连接,则字段映射将返回。此配置保存在数据库中的什么位置,导致它被覆盖的原因是什么?有没有办法在Web配置中配置默认​​值?

相关软件包详细信息:

EPiServer.CMS-v11.11.3

EPiServer.MarketingAutomationIntegration.Salesforce-v4.2.0

EPiServer.Marketing.Automation.Forms-v2.1.0

编辑: 看起来salesforce连接器设置已保存到dbo.tblBigTable和dbo.tblBigTableReference。当我在本地运行项目时,这些记录会在启动项目时清除,但仍然不确定为什么。我可以重新启动开发服务器,而无需清除以下记录: 运行类似以下内容的内容显示连接器名称部分的保存位置。这些表中可能还有其他条目,用于在那里配置的其他字段。

select * from dbo.tblBigTable where String01 like '%my-connector-name%'
StoreName | ItemType | String01 | String02
Marketing_Automation_Connector_Credentials |
Episerver.Marketing.Connector.Framework.Data.ConnectorCredentialStoreData, Episerver.Marketing.Connector, Version=5.4.0.0, Culture=neutral, PublicKeyToken=null |
my-connector-name | 
!!=!encrypt!=!!0...

select * from dbo.tblBigTableReference where StringValue like '%my-connector-name%'

Type | PropertyName | CollectionType | ElementType | StringValue

3 | ActiveConnectors | 
System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | 
System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | 
my-connector-name

1 个答案:

答案 0 :(得分:1)

问题原因:

我最终不得不反编译Episerver的源代码以查找问题。事实证明,问题出在EPiServer的Episerver.Marketing.Connector.Framework.MarketingConnectorManager.GetConnectorCredentials方法中,因此这可能不是特定于Salesforce连接器,而是任何营销连接器。问题在于,在我们的DEV环境中创建凭据时,它们将在数据库中被加密。稍后在本地实例中获取凭据时,会尝试解密凭据。如果无法解密凭据,则EPiServer会将其删除,而不是抛出错误或说未找到有效的凭据。

解决方法:

要解决此问题,可以将machineKey标记添加到web.config中,以便在本地和开发环境之间共享解密密钥:

<system.web>
        <machineKey validationKey="YOUR_VALIDATION_KEY_HERE" decryptionKey="YOUR_ENCRYPTION_KEY_HERE" validation="SHA1" decryption="AES" />
        ....
</system.web>