.NET Instrumentation - сбой при вызове функции для пользовательской сборки - веб-приложения Azure

Я развернул свой профилировщик инструментария .NET в веб-приложениях Azure с помощью Visual Studio 2012. Мой профилировщик выполняет инструментирование байтового кода, как показано ниже:

FunctionA()
{
   --> Injected C# function Call 
   functionA's body
   -->Injected C# function Call
}

Внедренный вызов функции находится в отдельной сборке dll. В физическом ящике сборка будет добавлена ​​в GAC. Но в Azure он будет находиться в папке в расположении веб-приложения, которое будет проверено в файле web.config.

Используя DefineAssemblyRef из IMetaDataAssemblyEmit, я определяю сборку и ее функцию в каждом модуле, загружаемом в процесс. Введенный вызов функции проблема работает только для функций модулей веб-приложения ..! Другие модули, такие как System.Web.dll или System.Data.dll, не могут вызвать функцию, из-за чего веб-приложение Azure не загружается с ошибкой 502.

Вскоре внедрение в модули, отличные от веб-приложения, терпит неудачу. Я предполагаю, что это проблема безопасности при загрузке пользовательской сборки, и я попытался установить [assembly: System.Security.AllowPartiallyTrustedCallers] и PermissionSetAttribute(SecurityAction.Demand, Name = "FullTrust")], а также некоторые другие атрибуты безопасности .. ничего не помогло .. Как заставить эту вспомогательную сборку загружаться модулями .Net.? Есть ли какие-либо другие специфические атрибуты безопасности, которые мне нужно установить для сборки, чтобы она загружалась ..?

Я недостаточно знаю о лазурном, но вы можете получить подсказку, если сможете включить FusionLog (или его эквивалент в лазурном). Вы также можете попробовать использовать событие AppDomain.AssemblyResolve, чтобы вручную загрузить сборку. Я недостаточно знаю об Azure, но могу представить, что он может творить чудеса препроцессора nGen.

Louis Somers 09.07.2018 13:39

Разве вы не сталкиваетесь с той же проблемой локально при инструментировании процесса IIS? Я подозреваю, что вспомогательная сборка изначально не находится на пути проверки, пока загружаются системные сборки, но она попадает туда, когда IIS полностью загружает ваш веб-сайт и читает ваш web.config.

Claudiu Guiman 19.02.2019 22:16
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
5
2
119
0

Другие вопросы по теме