Программно зарегистрируйте HttpModules во времени выполнения

Для нескольких столбцов и функции, применяемой к значениям столбца.

При обновлении значений из функции RHS должен быть объектом списка, поэтому использование цикла на .SD с lapply сделает трюк.

Пример ниже конвертирует целочисленные столбцы в числовые столбцы

a1 <- data.table(a=1:5, b=6:10, c1=letters[1:5])
sapply(a1, class)  # show classes of columns
#         a           b          c1 
# "integer"   "integer" "character" 

# column name character vector
nm <- c("a", "b")

# Convert columns a and b to numeric type
a1[, j = (nm) := lapply(.SD, as.numeric ), .SDcols = nm ]

sapply(a1, class)
#         a           b          c1 
# "numeric"   "numeric" "character" 
44
задан alexandrul 25 May 2009 в 05:58
поделиться

2 ответа

Это должно быть сделано в только правильное время в жизненном цикле HttpApplication, который является, когда объект HttpApplication инициализирует (многократно, однажды для каждого экземпляра HttpApplication). Единственный метод, где это работает корректное, является HttpApplication Init ().

Для снятия трубки модуля через код можно выполнить код как следующее вместо определения HttpModule в web.config:

  public class Global : System.Web.HttpApplication
  {
     // some modules use explicit interface implementation
     // by declaring this static member as the IHttpModule interface
     // we work around that
     public static IHttpModule Module = new xrnsToashxMappingModule();
     public override void Init()
     {
         base.Init();
         Module.Init(this);
     }
  }

Все, что Вы делаете, переопределить Init HttpApplication () метод и затем получить доступ к методу Init статического экземпляра. Init () модуля поднимает трубку событие, и от Вас идут.

Через блог

Rick Strahl
52
ответ дан 26 November 2019 в 21:57
поделиться

Поймите, это старый вопрос, но asp.net 4 предоставляет некоторые новые возможности, которые могут здесь помочь.

В частности, ASP.NET 4 предоставляет возможность PreApplicationStartMethod , которую можно использовать для программного добавления HttpModules.

Я только что написал об этом в блоге http://www.nikhilk.net/Config-Free-HttpModule-Registration.aspx .

Основная идея состоит в том, что вы создаете производное HttpApplication , которое предоставляет возможность динамически добавлять HttpModules во время запуска, а затем инициализирует их в конвейер всякий раз, когда каждый экземпляр HttpApplication создается внутри app-домен.

28
ответ дан 26 November 2019 в 21:57
поделиться
Другие вопросы по тегам:

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