使用带有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
答案 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>