Develop
ErrorCompilation
Service_Creatio
#7.18

Коллеги всем доброго времени суток.

Наблюдаю следующую проблему. После разворачивания приложения On-site и выполнения компиляции возникают следующие ошибки.

 

Build CaptureOutput - System.UnauthorizedAccessException: Access to the path 'c:\windows\system32\inetsrv\NuGet\Migrations' is denied.
2023-02-07 02:27:29,403 [82] INFO IIS APPPOOL\Dev Build CaptureOutput -    at System.IO.FileSystem.CreateDirectory(String fullPath, Byte[] securityDescriptor)
2023-02-07 02:27:29,403 [82] INFO IIS APPPOOL\Dev Build CaptureOutput -    at System.IO.Directory.CreateDirectory(String path)
2023-02-07 02:27:29,403 [82] INFO IIS APPPOOL\Dev Build CaptureOutput -    at NuGet.Common.Migrations.MigrationRunner.GetMigrationsDirectory()
2023-02-07 02:27:29,403 [82] INFO IIS APPPOOL\Dev Build CaptureOutput -    at NuGet.Common.Migrations.MigrationRunner.Run()
2023-02-07 02:27:29,403 [82] INFO IIS APPPOOL\Dev Build CaptureOutput -    at Microsoft.DotNet.Configurer.DotnetFirstTimeUseConfigurer.Configure()
2023-02-07 02:27:29,403 [82] INFO IIS APPPOOL\Dev Build CaptureOutput -    at Microsoft.DotNet.Cli.Program.ConfigureDotNetForFirstTimeUse(IFirstTimeUseNoticeSentinel firstTimeUseNoticeSentinel, IAspNetCertificateSentinel aspNetCertificateSentinel, IFileSentinel toolPathSentinel, Boolean isDotnetBeingInvokedFromNativeInstaller, DotnetFirstRunConfiguration dotnetFirstRunConfiguration, IEnvironmentProvider environmentProvider, Dictionary`2 performanceMeasurements)
2023-02-07 02:27:29,403 [82] INFO IIS APPPOOL\Dev Build CaptureOutput -    at Microsoft.DotNet.Cli.Program.ProcessArgs(String[] args, TimeSpan startupTime, ITelemetry telemetryClient)
2023-02-07 02:27:29,403 [82] INFO IIS APPPOOL\Dev Build CaptureOutput -    at Microsoft.DotNet.Cli.Program.Main(String[] args)
2023-02-07 02:27:29,403 [124] INFO IIS APPPOOL\Dev Build BuildInternalNetStandard - WorkspaceCompiler.Build finished at 00:00:06.7546725
2023-02-07 02:27:29,403 [124] INFO IIS APPPOOL\Dev Build BuildInternalNetStandard - Время компиляции: 00:00:06.7550266

c:\windows\system32\inetsrv\NuGet\Migrations - данной директории нет на пк. Пробовал создать и раздать права - без изменений ошибка воспроизводится.

Кто ни будь сталкивался с подобной проблемой и как  ее решить?

Благодарю!

Нравится

4 комментария

Проблема была в dotnet 7. После удаления sdk и runtime - ошибка ушла.

корректно работает со следующими библиотеками:

3.1.301 [C:\Program Files\dotnet\sdk]

6.0.405 [C:\Program Files\dotnet\sdk]



Microsoft.AspNetCore.App 3.1.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]

Microsoft.AspNetCore.App 3.1.32 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]

Microsoft.AspNetCore.App 6.0.13 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]

Microsoft.NETCore.App 3.1.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]

Microsoft.NETCore.App 3.1.32 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]

Microsoft.NETCore.App 6.0.13 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]

Microsoft.WindowsDesktop.App 3.1.5 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

Microsoft.WindowsDesktop.App 3.1.32 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

Microsoft.WindowsDesktop.App 6.0.13 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]  

Не так давно столкнулся с такой же проблемой, решил ее созданием пути руками

c:\windows\system32\inetsrv\NuGet\Migrations

и дал ему права доступа для пользователя. Больше данной ошибки не было

Можно добавить, что если в настроках пула в IIS установлено Identity = ApplicationPoolIdentity, то на уровне файловой системы для папки "c:\windows\system32\inetsrv\NuGet\Migrations" нужно давать доступ на чтение и изменение для роли IIS_IUSRS. Это решение помогло устранить проблему.

Тоже столкнулся с этой проблемой. Долго не понимал в чём проблема.

Создал папку c:\windows\system32\inetsrv\NuGet\Migrations, раздал на неё полный доступ - не помогло.

Удалил dot.net 7 - не помогло.

Удалил Visual Studio 2022 - проблема исчезла.

Поставил заново Visual Studio 2022, с которой заново установился dot.net 7 - ошибок при компиляции уже не было.

Не знаю, что произошло и почему исчезли ошибки. Заметил только одно, что после установки винды я сразу же поставил Visual Studio 2022, а уже после все необходимые компоненты для разворачивания сайта, а не наоборот, как я делал ранее

Показать все комментарии
Develop
package
CLIO
Studio_Creatio
#7.18

Коллеги всем доброго времени суток!

Подскажите есть ли возможность создавать пакет- проект под NetStandart?

Кто ни будь сталкивался с такой задачей?

Нравится

3 комментария

Алексей, добрый день!

В пакете-проекте проект, для этого пакета, создается в ручную, после компиляции этого проета ми получим библиотеки которые будут подгружены приложением Creatio. Будет ли код под framework или и  под netstandard это уже не имеет значения. Важно что dll для framework должны располагаться в  Files\Bin\ пакета, а для netstandard в Files\Bin\netstandard

Дима Вовченко,

благодарю.

Есть еще один вопрос.

Пытаюсь создать модель в проекте через команду но мне выдает ошибки:

 clio add-item model ExcelReportLog  -e ExcelReports

Your app does not contain clio API.

You should consider install it via the 'clio install-gate' command.

System.Net.WebException: The remote server returned an error: (404) Not Found.

   at System.Net.HttpWebRequest.GetResponse()

   at Creatio.Client.ATFWebRequestExtension.GetServiceResponse(HttpWebRequest request)

   at Creatio.Client.CreatioClient.ExecuteGetRequest(String url, Int32 requestTimeout)

   at Clio.Program.GetClassModels(String entitySchemaName, String fields)

   at Clio.Program.AddModels(ItemOptions opts)

Хотя cliogate я поставил на среду. В чем может быть проблема?

 

Дима Вовченко,

правильно я понял, что мы создаем через clio новый проект, пишем наш код билдим и потом полученную библиотеку подставляем в 

Files\Bin\ и Files\Bin\netstandard?

И не важно что сам проект будет framework  v4.7.2?

Или нужно заводить проект под netstandard?

 

Показать все комментарии
RabbitMQ
Develop
nlog
Service_Creatio_customer_center_edition
#7.18

Всем доброго времени суток!

Столкнулся со следующей проблемой.

Кейс такой нужно писать логи через NLog в очереди RabbitMQ.

Для этого использую библиотеку Nlog.RabbitMQ.Target.dll

Добавляю ее в папку MyApp\bin\ 

Затем настраиваю файлы nlog.config:

nlog.targets



        

    

    

    

    

    

    

    

                xsi:type="RabbitMQ"

                appid="CreatioDemo"

                topic="${uppercase:${level}}"

                username="${rmqUser}" 

                password="${rmqPassword}" 

                hostname="${rmqHost}" 

                exchange="${rmqExchange}"

                exchangeType="topic"

                port="${rmqvPort}"

                vhost="${rmqvHost}"

                layout="${Date} [${ThreadIdOrName}] ${uppercase:${level}} ${UserName} ${MethodName} - ${Message}"

                messageSource="nlog://${machinename}/${logger}"

                useJSON ="true">

            

            

 

при перезапуске пула конект к Rabbit создается но логи не пишуться.

Для этого нужно добавить Nlog.RabbitMQ.Target.dll в папку MyApp\Terrasoft.WebApp\bin\

И тут возникает проблема при перезапуске пула или при логине в систему:

Изображение удалено.

[FileLoadException: Could not load file or assembly 'System.Threading.Tasks.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]

   StackExchange.Redis.PhysicalConnection.BeginConnectAsync(LogProxy log) +0

   StackExchange.Redis.PhysicalBridge.GetConnection(LogProxy log) +461

   StackExchange.Redis.ServerEndPoint.CreateBridge(ConnectionType type, LogProxy log) +98

   StackExchange.Redis.ServerEndPoint.GetBridge(ConnectionType type, Boolean create, LogProxy log) +60

   StackExchange.Redis.ConnectionMultiplexer.ActivateAllServers(LogProxy log) +195

   StackExchange.Redis.d__142.MoveNext() +7816

[AggregateException: One or more errors occurred.]

   System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) +4593189

   System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) +13992992

   StackExchange.Redis.ConnectionMultiplexer.ConnectImpl(Object configuration, TextWriter log) +220

   Terrasoft.Redis.StackExchangeAdapters.RedisClientsManagerAdapter..ctor(String connectionStringName, RedisConfigSection configSection) +273

 

Проверил версию  System.Threading.Tasks.Extensions в сборке Nlog.RabbitMQ.Target.dll  и ту что используется в Ceratio - совпадают.

Подскажите как можно это исправить?

Нравится

1 комментарий

Алексей, добрый день!

Исходя их ошибки попробуйте перезапустить redis.

Поскольку на данный момент система не поддерживает внедрение Nlog.RabbitMQ.Target.dll, то более детальной рекомендации мы дать не можем. Советую ознакомиться с этим обсуждением.

Показать все комментарии
EntityEventAsyncExecutor
C#
Develop
Sales_Creatio_enterprise_edition
7.17

Всем доброго времени суток!

Столкнулся с проблемой, при сохранении Entity на событийном слое не срабатывает асинхронные операции.

Сохранение происходит в классе обработчике который подписан на очередь Rabbit

Выдает следующую ошибку:

EntityEventAsyncExecutor SendMessage - OnSavedMyEntityAsyncOperations

System.InvalidOperationException: Не удалось получить контекст выполнения фоновой операции. Для сервисов без авторизации необходимо вызвать Terrasoft.Web.Common.SessionHelper.SpecifyWebOperationIdentity.

   в Terrasoft.Core.ServiceBus.BusUtils.CreateUserContext(String userName, String sessionId, Guid externalAccessId)

   в Terrasoft.WebApp.ActorSystem.UserContextProvider.GetUserContext()

   в Terrasoft.ActorSystem.ActorReference.Tell(AppContextMessage message)

   в Terrasoft.Core.ActorSystem.Entities.EntityEventAsyncExecutor.SendMessage(Object parameters, Type operationType)

Как бороться с такой проблемой, может кто знает?

Спасибо!

Нравится

1 комментарий

Здравствуйте!

 

Просьба обратиться в тех. поддержку и предоставить реализацию сервиса, логи приложения и бинарные файлы приложения. К сожалению, тут я Вам не смогу помочь с решением данного вопроса, так как понадобиться более глубокий анализ проблемы.

Показать все комментарии
ATF.Repository
Develop
C#
7.16
Sales_Creatio_enterprise_edition

Всем доброго времени суток!

Столкнулся с такой проблемой, валятся ошибки при использовании ATF.Repository объектной модели и выгрузке данных в список:

 

[Schema("Account")]
    public class Account : BaseModel
    {       
 
        [SchemaProperty("Name")]
        public string Name { get; set; }        
 
        [DetailProperty("Account")]
        public virtual List<AccountWorkingTime> WorkingTimes { get; set; }
    }
 
[Schema("AbWorkingTimeStation")]
    public class AccountWorkingTime : BaseModel
    {
        [SchemaProperty("Account")]
        public Guid AccountId { get; set; }
 
        [LookupProperty("DayOfWeek")]
        public virtual DayOfWeek DayOfWeek { get; set; }
 
        [SchemaProperty("From")]
        public DateTime From { get; set; }
 
        [SchemaProperty("To")]
        public DateTime To { get; set; }
 
    }
 
namespace PlatformIntegration.Files.cs
{
    [DefaultBinding(typeof(IAccountAdapter))]
    public class AccountAdapter : IAccountAdapter
    {
        public UserConnection UserConnection { get; set; }
 
        public AccountAdapter(UserConnection userConnection)
        {
            UserConnection = userConnection;
        }
        private IRepository _repository;
 
        private IRepository Repository
        {
            get => _repository ??= new Repository
                {UserConnection = UserConnection, UseAdminRight = false};
            set => _repository = value;
        }
 
        public Models.Account GetAccountById(Guid id)
        {
            var account = Repository.GetItem<Models.Account>(id);
            return account;
        }        
    }
}

При отработке метода GetAccountById - вылазят ошибки https://prnt.sc/uh1zso

Terrasoft.Web.Common.ServiceModel.ErrorHandler HandleError - Error getting value from 'WorkingTimes' on 'Castle.Proxies.AccountProxy'.

Newtonsoft.Json.JsonSerializationException: Error getting value from 'WorkingTimes' on 'Castle.Proxies.AccountProxy'. ---> System.Reflection.TargetInvocationException: Адресат вызова создал исключение. ---> System.InvalidCastException: Объект должен реализовывать интерфейс IConvertible.

   в System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)

   в ATF.Repository.Repository.FillPropertyValue[T](T model, PropertyInfo propertyInfo, Object value)

   в ATF.Repository.Repository.FillPropertyValues[T](T model, IDictionary`2 values)

   в ATF.Repository.Repository.CreateItem[T](IDictionary`2 values)

   в ATF.Repository.Repository.LoadModelByValues[T](IDictionary`2 values)

   в ATF.Repository.Repository.<>c__DisplayClass64_0`1.b__0(IDictionary`2 recordValues)

   в System.Collections.Generic.List`1.ForEach(Action`1 action)

   в ATF.Repository.Repository.GetItems[T](String filterPropertyName, Guid filterValue)

   --- Конец трассировки внутреннего стека исключений ---

   в System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)

   в System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)

   в System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)

   в System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)

   в ATF.Repository.Repository.FillDetailValue[T](T model, ModelItem detail)

   в ATF.Repository.Builder.InstanceProxyHelper`1.FillProperty(IInvocation invocation, PropertyInfo property)

   в ATF.Repository.Builder.InstanceProxyHelper`1.InternalGet(IInvocation invocation, PropertyInfo property)

   в ATF.Repository.Builder.InstanceProxyHelper`1.Intercept(IInvocation invocation)

   в Castle.DynamicProxy.AbstractInvocation.Proceed()

   в Castle.Proxies.AccountProxy.get_WorkingTimes()

   в GetWorkingTimes(Object )

   в Newtonsoft.Json.Serialization.DynamicValueProvider.GetValue(Object target)

   --- Конец трассировки внутреннего стека исключений ---

   в Newtonsoft.Json.Serialization.DynamicValueProvider.GetValue(Object target)

   в Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CalculatePropertyValues(JsonWriter writer, Object value, JsonContainerContract contract, JsonProperty member, JsonProperty property, JsonContract& memberContract, Object& memberValue)

   в Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)

   в Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType)

   в Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value, Type objectType)

   в Newtonsoft.Json.JsonConvert.SerializeObjectInternal(Object value, Type type, JsonSerializer jsonSerializer)

   в Newtonsoft.Json.JsonConvert.SerializeObject(Object value)

   в AutobookingPlatformIntegration.AccountIntegrationService.GetAccountById(Guid id)

   в SyncInvokeGetAccountById(Object , Object[] , Object[] )

   в System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)

   в System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)

   в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)

   в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)

   в System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)

 

Кто нибудь сталкивался с таким поведением?



 

 

Нравится

3 комментария

Нашел в чем проблема. Не может десерелизовать в модель колонку с типом Время - https://prnt.sc/uhpw7o в DateTime. Кто работал с данным репозиторием знает решение данной проблемы?

Алексей, не вижу никаких упоминаний о ATF.Repository, кроме этой темы. Речь о тех ATF, которые сделали «.NET Core connector»? Там указан адрес на GitHub для связи с разработчиками. Возможно, они подскажут по этому механизму.

Зверев Александр,

да, эти, писал и на почту, правда по другому вопросу, по текущему на гитхабе- пока ответа не получал

Показать все комментарии
Develop
Разработка
Разработка в файловой системе
7.16
Sales_Creatio_enterprise_edition

Всем добрый день!

Столкнулся с следующей проблемой перестали выгружаться пакеты в ФС, пишет. что изменений не обнаружено. Редис чистил, пересоздавал приложение в IIS, удалял пакеты из папки Pkg в конфигурации - не помогает.

Кто нибудь сталкивался с такой проблемой?

Нравится

1 комментарий
Лучший ответ

Скорее всего включена разработка в файловой системе, когда она включена то при разратобке используется локальный статический контент (к примеру C# файлы)

Скорее всего включена разработка в файловой системе, когда она включена то при разратобке используется локальный статический контент (к примеру C# файлы)

Показать все комментарии
CLIO
Develop
Разработка
7.16
Sales_Creatio_enterprise_edition

Всем доброго времени суток!

Столкнулся с такой проблемой.

Устанавливаю пакет через CLIO - выдает ошибки - https://prnt.sc/tqkuyw

В чем может быть проблема?

Версия системы 7.16.2.1600 

 

Или может быть создать пакет в системе, вытянуть его через clio конвертировать в пакет-проект, написать нужный функционал и затем задеплоить обратно? 

Нравится

16 комментариев

так же при выполнении команды clio install-gate -e dev выдает ошибки - https://prnt.sc/tqnh3s

Алексей, по первому скриншоту, похоже, дело в файловой системе Вашего ПК, не может получить доступ к определённой папке.

 

По второму, у Вас как-то получилось вместо названия объекта «7.16.2», что делать нельзя, названия должны быть с латинскими буквами и без точек. Возможно, при оформлении перепутали с версией.

Зверев Александр,

Странно как то получается создаю новый пакет Test и сразу  пушу его в систему и выдает такое - 

https://prnt.sc/tr3etj. Тут ну никак и нигде не задается имя 7.16.

Помимо всего даже когда устанавливаю пакет через интерфейс Creatio такая же ошибка. Из-за чего так получается есть предположение?

Если и через интерфейс такое же, то тем более, дело в самом пакете. Сравните с теми, которые ставятся нормально, может, что-то перепутано в полях? Вы создали пакет командой к clio?

Зверев Александр,

"Вы создали пакет командой к clio?" - пакет Test да. 

 

Просто создали так?

Creating new package

To create new package project, use the next command:

 clio new-pkg &lt;PACKAGE_NAME&gt;

you can set reference on local core assembly with using Creatio file design mode with command in Pkg directory

 clio new-pkg &lt;PACKAGE_NAME&gt; -r bin

Может, что-то делали с версией?

Set package version

Set a specified package version into descriptor.json by specified package path.

clio set-pkg-version &lt;PACKAGE PATH&gt; -v &lt;PACKAGE VERSION&gt;

 

Вообще, не видя создавшегося пакета, сложно  сказать, что в нём не так.

Зверев Александр,

просто clio new-pkg <PACKAGE_NAME>

Значит, смотреть внутрь пакета, где там упоминается «7.16.2». А падает только при установке на конкретный Ваш сайт? А если ставить на демку, то то же самое?

Зверев Александр,

Устанавливал созданный пакет через clio на облачный дев, через интерфейс системы, стал без ошибок.

 

Значит, всё же дело не в пакете, а в сайте, куда его ставили? Может, версии отличаются?

Зверев Александр,

версия сайта 7.16.2.1600, при создании пакета через clio задушить не получается, а вот при выгрузке из системы и конвертации, а потом пишите, то получилось...ещё те танцы с бубном))), но перед этим пришлось переустановить сайт.

Теперь бы разобраться как вызывать классы из данного пакета в других схемах конфигурации)

Здравствуйте, Алексей!

Files позволяют быстрее разрабатывать независимую функциональность, т.к. не требуют компиляции всей конфигурации. Из Files нельзя ссылаться на код в схемах. Из схем нельзя ссылаться на Files. Files могут ссылаться на sdk ядра.

Мотков Илья,

Добрый день. Я бы добавил, что есть способы достучаться из схем в функциональность Files. Через тот же ClassFactory

Здравствуйте, Алексей!

 

Ещё дополню, что все классы схем располагаются в неймспейсе Terrasoft.Configuration, если другое не задано.

 

Пакеты по сути просто папки, а конфигурация компилируется целиком, и все классы в конфигурации видны другим классам в конфигурации не зависимо от пакета.

 

Если речь о классах во внешних библиотеках – то обращаться так же как и из пакета в котором эта библиотека привязана.

Если речь о пакете-проекте, то он компилируется самостоятельно и тогда зависимая библиотека должна быть указана в проект-файле пакета-проекта.

Коллеги, разобрался в чем проблема... при создании нового пакета в этих папках - https://prnt.sc/u638lk генерируется текстовый файл placeholder, вот из-за него и вываливается ошибка при деплое пакета в среду, после удаления деплой прошел корректно и ошибка -

"Terrasoft.Common.InvalidNameException: Название объекта "7.16.2" некорректно" не выскакивала

Алексей, разработчики сообщили, что мы поищут способ решения этой проблемы, на текущий момент данную проблему можно обойти, указав в ConnectionStrings.config в секции tempDirectoryPath простой пусть С:\Temp

Проблема заключается в том, что по умолчанию берется Temp директория пользователя, а она имеет очень большую вложенность и Windows формирует сокращение, которое не правильно разбирается регулярным выражением.

Показать все комментарии
Develop
WebServices
7.16
Sales_Creatio_enterprise_edition

  Всем доброго времени суток! Подскажите, возможно ли использовать анонимный ws в качестве веб-хука, например для Telegram-bot?

Благодарю.

Нравится

3 комментария
Лучший ответ

1. Создаем анонимный сервис.

2. Добавляем в него метод по аналогии с HandleWebHookEvents в MandrillService:

[OperationContract]

        [WebInvoke(Method = "*", UriTemplate = "HandleWebHookEvents")]

        public void HandleWebHookEvents(Stream mandrill_events) {

}

Он принимает stream, и может ничего не возвращать. 



Как читать raw поста можно погуглить либо взять из того же метода пример.

Алексей, по поводу веб-хуков см. в этом обсуждении. Там упоминаются готовые примеры в системе и сторонних дополнениях.

1. Создаем анонимный сервис.

2. Добавляем в него метод по аналогии с HandleWebHookEvents в MandrillService:

[OperationContract]

        [WebInvoke(Method = "*", UriTemplate = "HandleWebHookEvents")]

        public void HandleWebHookEvents(Stream mandrill_events) {

}

Он принимает stream, и может ничего не возвращать. 



Как читать raw поста можно погуглить либо взять из того же метода пример.

Чтобы быстро понять, что приходить в вебхуке и как это парсить, используйте https://webhook.site/.&nbsp;

Показать все комментарии
JScript
Develop
7.16
Sales_Creatio_enterprise_edition

Всем доброго времени суток! Столкнулся с такой проблемой. При добавлении БП в раздел "съезжает" ранее добавленная кнопка - https://prnt.sc/tn9xut.

Как с этим бороться?

Заранее благодарю.

Нравится

3 комментария

Добрый день, приложите еще и кусок кода, в котором создаете кнопку, чтобы больше понимания было

Вадим Косарев,

	diff: /**SCHEMA_DIFF*/[
			{
				"operation": "insert",
				"parentName": "ActionButtonsContainer",
				"propertyName": "items",
				"name": "SimpleInfoButton",
				"values": {
					"layout": { "column": 1, "row": 6, "colSpan": 1},
					"itemType": Terrasoft.ViewItemType.INFORMATION_BUTTON,
					"content": { "bindTo": "Resources.Strings.InfoButtonCaption" }
				}
			}
		]/**SCHEMA_DIFF*/,

 

Алексей, процессы открывает кнопка ProcessRunButton. Она реализована в BaseDataView (базовой схеме раздела) кодом:

{
	"operation": "insert",
	"name": "ProcessRunButton",
	"parentName": "SeparateModeActionButtonsContainer",
	"propertyName": "items",
	"values": {
		"itemType": Terrasoft.ViewItemType.BUTTON,
		"caption": {"bindTo": "Resources.Strings.RunProsessButtonCaption"},
		"imageConfig": {"bindTo": "Resources.Images.ProcessButtonImage"},
		"iconAlign": Terrasoft.controls.ButtonEnums.iconAlign.LEFT,
		"classes": {
			"imageClass": ["t-btn-image left-12px t-btn-image-left proc-btn-img-top"],
			"textClass": ["t-btn-text t-btn-left actions-button-margin-right"]
		},
		"menu": {"items": {"bindTo": "getFilteredBySectionProcesses"}},
		"visible": {"bindTo": "getIsRunProcessButtonVisible"}
	}
},

В отличие от Вашего элемента, она входит в SeparateModeActionButtonsContainer, а уже тот —в ActionButtonsContainer:

{
	"operation": "insert",
	"name": "SeparateModeActionButtonsContainer",
	"parentName": "ActionButtonsContainer",
	"propertyName": "items",
	"values": {
		"itemType": Terrasoft.ViewItemType.CONTAINER,
		"visible": {
			"bindTo": "IsCardVisible",
			"bindConfig": {
				"converter": function(value) {
					return !value;
				}
			}
		},
		"wrapClass": ["separate-action-buttons-container-wrapClass"],
		"items": []
	}
},

Возможно, Ваша кнопка с учётом иерархии контейнеров не там, где должна была находиться? Или дело в «"layout": { "column": 1, "row": 6, "colSpan": 1}», ведь нумерация идёт с нуля и 1 — это уже второй, с учётом видимой кнопки процессов?

Показать все комментарии

Коллеги всем доброго времени суток!

Кто нибудь пробовал уже разрабатывать на системе ориентированной под linux?

Как там происходит разработка в ФС и отладка серверного кода, как подсоединятся к процессу и т.д., в общем весь тот процесс, что делаем на Windows?

Благодарю!

Нравится

4 комментария

Насколько понимаю, в версии на .NET Core, которая используется под Linux, сейчас возможности разработки ограничены. Там даже нет раздела «Конфигурация»:

Большинство инструментов разработки и кастомизации уже поддерживают работу на платформе .NET Core. Реализована поддержка Low-code инструментов: дизайнера процессов, мастера раздела, мастера деталей и мастера мобильного приложения.

Также поддерживают работу на платформе утилиты командной строки, которые помогают разрабатывать и автоматизировать процессы разработки: WorkspaceConsole, clio.

В процессе разработки поддержка раздела [Конфигурация]. Планируется также поддержка дизайнера объектов. Сейчас разработка этими инструментами может происходить на Windows, изменения, сделанные этими инструментами, переносятся пакетами на Linux.

Добрый день! Хотелось бы вернутся к вопросу отладки серверного кода под Linux. Спасибо!

Дмитрий Каплин,

В данном случае есть возможность провести отладку удалённо с Windows-машины. Рекомендуем использовать инструкцию ниже.

 

У вас на Linux развернут некий продукт (например по пути: '/home/user/creatioApps/Product'). В дальнейшем мы будем использовать пути, указанные для примера, у вас же будут свои пути.

 

Нужно:

1. На Linux по пути /home/user/creatioApps/Product/WorkspaceConsole/Terrasoft.Tools.WorkspaceConsole.dll.config

настраиваете конфигурационный файл, а именно соединение к базе данных, в секции <connectionStrings>.

Настройки соединения с базой данных можно скопировать с конфигурационого файла по пути /home/user/creatioApps/Product/ConnectionStrings.config

2. Для логов WorkspaceConsole на Linux создаете папку /home/user/creatioApps/Logs

3. На Linux переходите в папку /home/user/creatioApps/Product/WorkspaceConsole и запускаете следующую команду:

dotnet Terrasoft.Tools.WorkspaceConsole.dll -operation=UpdateWorkspaceSolution -workspaceName=Default -webApplicationPath="/home/user/creatioApps/Product" -confRuntimeParentDirectory="/home/user/creatioApps/Product" -logPath="/home/user/creatioApps/Logs" -autoExit=true

У Вас будут другие пути.

4. Файлы того же же продукта для Linux, который развернут на Linux, разместить на Windows (например, по пути: 'C:\Product').

Можно распаковать туда файлы из архива продукта для Linux.

5. Скопировать все файлы с Linux по пути /home/user/creatioApps/Product/Terrasoft.Configuration/Autogenerated/Src

на Windows машину по пути C:\Product\Terrasoft.Configuration\Autogenerated\Src

6. На Linux по пути /home/user/creatioApps/Product/Terrasoft.WebHost.dll.config

настраиваете конфигурационный файл, а именно меняете или добавлятете в секции  <appSettings> следующую насройку:

<add key="LoadAssemblyFromByteArray" value="false" />

Таким образом включается отладка для конфигурационной сборки.

ВНИМАНИЕ: чтобы отладка работала, среда .Net загружает сборку по прямой ссылке, однако она тогда же и блокирует перезапись этой сборки,

а перезапись сборки происходит во время компиляции и установки пакетов.

Поэтому ОТКЛЮЧАЙТЕ ОТЛАДКУ НА ПРОДУКТОВОЙ СРЕДЕ и ПЕРЕД КОМПИЛЯЦИЕЙ или УСТАНОВКОЙ ПАКЕТОВ

7. Перезапустите приложение на Linux

8. На Windows открываете проект по пути "C:\Product\Terrasoft.Configuration\Terrasoft.Configuration.Dev.csproj"

9. Подсоединяетесь к процессу на Linux, по инструкции "Удаленная отладка .NetCore приложений в Linux под Windows.pdf", которая находится во вложении.

10. Находите необходимый Вам файл в C:\Product\Terrasoft.Configuration\Autogenerated\Src и устанавливаете точку остановки.

 

Среда разработки может отображать точку остановки, как недоступную для отладки, но пусть это Вас не смущает, она отработает когда поток выполнения попадет в эту точку.



Так же необходимо подключить vsdbg, для того чтобы MSVS могла подключиться к .net процессу. 

Install vsdbg to remote host (following script install to ~/vsdbg)

curl -sSL https://aka.ms/getvsdbgsh | bash /dev/stdin -v latest -l ~/vsdbg



Тут есть два варианта, это пересобрать docker image, включив в него вышеописанную строку.  Или каждый раз после перезапуска докера, выполнять команду:

docker exec -it curl -sSL https://aka.ms/getvsdbgsh | bash /dev/stdin -v latest -l ~/vsdbg



Интонируя данный прокси MSVS для отладки.  Также можно воспользоваться Rider, он сам ставит нужный модуль, для отладки при первом подключении.

Добавить комментарий

Павел,

Можете ознакомиться с ответом выше.

Показать все комментарии