Как я Динамично Загружаю блоки Не на Диске в веб-приложение .NET ASP?

Предполагается, что оно соответствует любому количеству подкаталогов:

** Если «глобстар» находится один в части пути, то он сопоставляет ноль или более каталогов и подкаталогов, ищущих совпадения. Он не сканирует каталоги с символическими ссылками.

https://github.com/isaacs/node-glob

У вас есть каталоги с символическими ссылками?

Симлинки

Я не думаю, что вам придётся прыгать, чтобы пройтись по вашим символьным каталогам. Я рекомендую вам взглянуть на node.js fs.readdir рекурсивный поиск в каталоге и посмотреть, можно ли применить какое-либо из этих решений к вашему варианту использования. Ничто в вопросе или ответах не касается конкретно символических ссылок, поэтому я не знаю, есть ли для вас решение или нет. Если вы можете получить массив разыменованных путей, используя одно из этих решений, то вы можете просто передать массив в gulp.src().

7
задан ROMANIA_engineer 13 January 2018 в 08:38
поделиться

4 ответа

Если вы прочитали документацию по AppDomainManager , вы увидите примечание:

Не используйте AppDomainManager для настройки домена приложения в ASP.NET. В ASP.NET конфигурация должна обрабатываться хостом.

Следовательно, вы не должны использовать переменные среды или реестр для настройки AppDomainManager.

Я считаю, что вы можете добиться желаемого, просто добавив обработчик событий AssemblyResolve в AppDomain.CurrentDomain. Я создал простой веб-сайт, и он работает должным образом - динамическая сборка не выгружается между загрузками страниц.

protected void Page_Load(object sender, EventArgs e)
{
   AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(AssemblyResolve);
   Assembly assembly = Assembly.Load("PhantomAssembly");
   Type t = assembly.GetType("PhantomAssembly.Test");
   MethodInfo m = t.GetMethod("GetIt");
   Response.Write(m.Invoke(null, null));
   t.GetMethod("IncrementIt").Invoke(null, null);
}

private static Assembly AssemblyResolve(object sender, ResolveEventArgs args)
{
   Assembly asssembly = Assembly.Load(File.ReadAllBytes(@"C:\PhantomAssembly.dll"));
   return asssembly;
}
11
ответ дан 6 December 2019 в 19:41
поделиться

Если проблема в том, что домен приложения создается и уничтожается при каждом запросе страницы, это, безусловно, можно решить, удерживая ссылку на него в состоянии приложения ASP.NET. Вы можете создать его, например, один раз в Global.asax.

1
ответ дан 6 December 2019 в 19:41
поделиться

Вы можете проверить статью MSDN о жизненном цикле приложения ASP.NET и изучить загрузку вашей сборки в событие Application_Start.

1
ответ дан 6 December 2019 в 19:41
поделиться

Мое решение аналогичной проблемы может быть полезным.

0
ответ дан 6 December 2019 в 19:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: