LINQPad теперь является моим предпочтительным инструментом для взаимодействия с Tridion через его API-интерфейс Core Service.
Если вы просто загружаете обычный LINQPad , он может подключаться к службам данных WCF (обычноизвестные как источники OData), базы данных SQL Server и на рынок служб данных Azure.Поскольку базовая служба Tridion не относится ни к одному из этих типов, вы не можете создать постоянное соединение с ней.
Но вы все равно можете использовать LINQPad в качестве упрощенной альтернативы Visual Studio, выполнив следующие действия:
- Переключить язык LINQPad на «Программу на C #»
- Вставить фрагмент кода ниже
- Добавить необходимые ссылки DLL из фрагмента кода
- Добавить необходимые ссылки на пространство имен изфрагмент кода
- Укажите свои собственные значения для имени хоста, имени пользователя и пароля
- Введите свой код
LINQPad может работать с несколькими языками.По умолчанию используется «C # Expression», что означает, что вы можете просто указать один «оператор» на панели кода.Это прекрасно работает при работе, например, с базами данных SQL, для которых доступен драйвер, но недостаточно для взаимодействия с базовой службой Tridion.Поэтому сначала вам нужно переключить его с языка «C # Expression» на язык «C # Program» на панели инструментов в верхней части вашего запроса.
После переключения языка я обычно начинаю со следующего шаблона
void Main()
{
// System.Runtime.Serialization.dll
// System.ServiceModel.dll
// System.Net.dll
// Namespaces:
// System.Net
// System.ServiceModel
// Tridion.ContentManager.CoreService.Client
var binding = new NetTcpBinding { MaxReceivedMessageSize = 2147483647, ReaderQuotas = new XmlDictionaryReaderQuotas { MaxStringContentLength = 2147483647, MaxArrayLength = 2147483647 } };
var endpoint = new EndpointAddress("net.tcp://<hostname>:2660/CoreService/2011/netTcp");
var DEFAULT_READ_OPTIONS = new ReadOptions();
CoreServiceClient client = new CoreServiceClient(binding, endpoint);
client.ChannelFactory.Credentials.Windows.ClientCredential = new NetworkCredential("<username>", "<password>");
try {
// TODO: fill in the blanks
} finally {
if (client.State == CommunicationState.Faulted) client.Abort(); else client.Close();
}
}
После вставки этого кода откройте окно свойств запроса (F4) и добавьте System.Runtime.Serialization.dll
, System.ServiceModel.dll
и System.Net.dll
на вкладку Дополнительные ссылки.Убедитесь, что у вас есть копия Tridion.ContentManager.CoreService.Client.dll на вашем компьютере, и добавьте ссылку на нее.(Вы можете найти это в Tridion / bin / client на вашем сервере)
Добавьте System.Net
, System.ServiceModel
и Tridion.ContentManager.CoreService.Client
на вкладку Импорт дополнительных пространств имен.
Измените <hostname>
, <username>
и <password>
значений в коде и проверьте, если соединение установлено успешно.
После этого заполните пробелы и начните веселиться с Core Service API.
Iрекомендуем постоянно держать документацию по API ядра службы (в формате CHM) открытой.С этим открытием я обнаружил, что могу продвинуться довольно далеко даже без автозаполнения.А если вы сохраните только что созданный запрос, вы можете легко клонировать его с помощью ctrl-shift-C и получить новый запрос с уже заполненными языком, ссылками на DLL и пространствами имен.
Обновление
Более простой способ подключения к Tridion из LINQPad теперь задокументирован здесь: https://sdltridionworld.com/articles/sdltridion2011/using_linqpad_with_tridion.aspx