.NET Instrumentation - Сбой вызова функции для пользовательской сборки - веб-приложения Azure - PullRequest
0 голосов
/ 06 июля 2018

Я развернул свой профилировщик инструментария .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.? Есть ли какие-то другие специфические атрибуты безопасности, которые мне нужно установить для сборки, чтобы загрузить ..?

...