Где сохраняется конфигурация соединителя Episerver Salesforce? - PullRequest
1 голос
/ 29 мая 2019

Работа с сайтом, на котором запущен Episerver с надстройкой Salesforce, чтобы связать формы episerver с Salesforce.Я ввожу имя пользователя / пароль / токен для моего пользователя salesforce на экране конфигурации соединителя salesforce в серверной части episerver, и он сохраняет мои учетные данные.Я перехожу к формам и теперь вижу свои поля Salesforce для сопоставления полей формы.

Проблема заключается в том, что конфигурация подключения Salesforce продолжает исчезать.Через некоторое время при возврате к конфигурации коннектора salesforce в администраторе episerver или при переходе к форме и попытке сопоставления полей соединение salesforce исчезает, и мои поля больше не отображаются.Если я повторно добавлю соединение, поля отображения вернутся.Где эта конфигурация сохраняется в базе данных и что может быть причиной ее переопределения?Можно ли вместо этого настроить значения по умолчанию в веб-конфигурации?

Соответствующие сведения о пакете:

EPiServer.CMS - v11.11.3

EPiServer.MarketingAutomationIntegration.Salesforce - v4.2.0

EPiServer.Marketing.Automation.Forms - v2.1.0

РЕДАКТИРОВАТЬ: похоже, настройка соединителя salesforce сохраняется в dbo.tblBigTable и dbo.tblBigTableReference,Эти записи очищаются при запуске проекта, когда я запускаю его локально, но до сих пор не уверен, почему.Я могу перезапустить сервер dev без очистки этих записей: Выполнение чего-то вроде следующего показывает, где сохраняется часть имени соединителя.Вероятно, в этих таблицах есть другие записи для других полей, настроенных там.

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 Ответ

2 голосов
/ 31 мая 2019

Причина проблемы:

Мне пришлось декомпилировать исходный код Episerver, чтобы найти проблему.Оказывается, проблема в методе Episerver.Marketing.Connector.Framework.MarketingConnectorManager.GetConnectorCredentials в EPiServer, так что это может быть не только для коннектора Salesforce, но и для любого маркетингового коннектора.Проблема в том, что когда учетные данные были созданы в нашей среде DEV, они шифруются в базе данных.Когда учетные данные затем извлекаются в нашем локальном экземпляре, происходит попытка расшифровать учетные данные.Если учетные данные не могут быть расшифрованы, EPiServer удаляет их, а не выдает ошибку или говорит, что действительные учетные данные не найдены.

Обходной путь:

Чтобы обойти эту проблему, вы можете добавить тег machineKey в ваш файл web.config, чтобы decryptionKey использовался совместно между локальной средой и средой разработки:

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