Episerver Salesforce 连接器配置保存在哪里?
Where is Episerver Salesforce connector configuration saved?
使用站点 运行将 Episerver 与 Salesforce 附加组件结合起来,将 Episerver 表单绑定到 Salesforce。我在 episerver 后端的 salesforce 连接器配置屏幕中为我的 salesforce 用户输入 username/password/token,它保存了我的凭据。我导航到表单,现在可以看到我的 salesforce 字段以将表单字段映射到。
问题是 salesforce 连接配置不断消失。一段时间后,当 return 在 episerver 管理员中访问 salesforce 连接器配置,或者转到一个表单并尝试映射字段时,salesforce 连接消失了,我的字段不再被映射。如果我重新添加连接字段映射 return。此配置保存在数据库中的什么位置,是什么导致它被覆盖?有没有办法在 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
问题原因:
我最终不得不反编译 Episerver 的源代码来找到问题所在。事实证明,问题出在 EPiServer 的 Episerver.Marketing.Connector.Framework.MarketingConnectorManager.GetConnectorCredentials 方法中,因此这可能不是特定于 Salesforce 连接器,而是任何营销连接器。问题在于,当在我们的 DEV 环境中创建凭据时,它们会在数据库中被加密。当稍后在我们的本地实例中获取凭据时,会尝试解密凭据。如果凭据无法解密,EPiServer 会删除它们,而不是抛出错误或说找不到有效凭据。
解决方法:
要解决此问题,您可以向 web.config 添加 machineKey 标签,以便在本地和开发环境之间共享解密密钥:
<system.web>
<machineKey validationKey="YOUR_VALIDATION_KEY_HERE" decryptionKey="YOUR_ENCRYPTION_KEY_HERE" validation="SHA1" decryption="AES" />
....
</system.web>
使用站点 运行将 Episerver 与 Salesforce 附加组件结合起来,将 Episerver 表单绑定到 Salesforce。我在 episerver 后端的 salesforce 连接器配置屏幕中为我的 salesforce 用户输入 username/password/token,它保存了我的凭据。我导航到表单,现在可以看到我的 salesforce 字段以将表单字段映射到。
问题是 salesforce 连接配置不断消失。一段时间后,当 return 在 episerver 管理员中访问 salesforce 连接器配置,或者转到一个表单并尝试映射字段时,salesforce 连接消失了,我的字段不再被映射。如果我重新添加连接字段映射 return。此配置保存在数据库中的什么位置,是什么导致它被覆盖?有没有办法在 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
问题原因:
我最终不得不反编译 Episerver 的源代码来找到问题所在。事实证明,问题出在 EPiServer 的 Episerver.Marketing.Connector.Framework.MarketingConnectorManager.GetConnectorCredentials 方法中,因此这可能不是特定于 Salesforce 连接器,而是任何营销连接器。问题在于,当在我们的 DEV 环境中创建凭据时,它们会在数据库中被加密。当稍后在我们的本地实例中获取凭据时,会尝试解密凭据。如果凭据无法解密,EPiServer 会删除它们,而不是抛出错误或说找不到有效凭据。
解决方法:
要解决此问题,您可以向 web.config 添加 machineKey 标签,以便在本地和开发环境之间共享解密密钥:
<system.web>
<machineKey validationKey="YOUR_VALIDATION_KEY_HERE" decryptionKey="YOUR_ENCRYPTION_KEY_HERE" validation="SHA1" decryption="AES" />
....
</system.web>