Вот что я попробовал:
1) Загрузка консольных инструментов в приложение с использованием Kudu и их запуск. Ну, это невозможно, потому что запись в реестр не разрешена.
2) Загрузка RemoteAgent с использованием Kudu и его запуск. Я получаю: No DNS entries exist for host xxx. No such host is known.
из интерфейса dotTrace при подключении к URL-адресу, напечатанному в консоли Kudu. Служба приложения может прослушивать только порты 80 и 443.
3) Использование dotTrace SDK и JetBrains.Profiler.Api выглядело многообещающе. Однако он не хочет подключать профилировщик в Azure (в отличие от локально, где у него нет проблем), с этим кодом он попадает в исключение тайм-аута.
private void AttachProfiler(ProfilingType profilingType)
{
var folder = AppDomain.CurrentDomain.BaseDirectory;
FileList = GetListFile(folder);
CurrentProfilingType = profilingType.ToString();
SelfAttach.Attach(new SaveSnapshotProfilingConfig
{
ProfilingControlKind = ProfilingControlKind.Api,
SaveDir = Path.Combine(folder, "Temp") ,
RedistDir = Path.Combine(folder, "_JetBrains.Profiler.SelfSdk.2019.1.3"),
ProfilingType = profilingType,
ListFile = FileList
});
SleepUntilAttachedOrTimedOut();
}
private static string GetListFile(string folder)
{
return Path.Combine(folder, "snapshot_list.xml");
}
private void SleepUntilAttachedOrTimedOut()
{
var totalMilliseconds = 0;
while (!CheckProfilerAttached())
{
var intervalMilliseconds = 250;
Thread.Sleep(intervalMilliseconds);
totalMilliseconds += intervalMilliseconds;
if (totalMilliseconds >= 60000)
{
throw new TimeoutException("Could not attach profiler. Timeout.");
}
}
}
private bool CheckProfilerAttached() => SelfAttach.State == SelfApiState.Active;