gelen http modülü başvuru geçerli çerçevesinde sizin için olanaklar birkaç:
web yapılandırmaları değiştirerek sakıncası, ancak AppDomain için bir işleyici kaydetmek için System.Web.PreApplicationStartMethod kullanabilirsiniz bin dışından modülü saklamak gerekmiyorsa .AssemblyResolve olayı sonra olay işleyici yükü var ve
türünü döndür
Web.config'i modifiye etmek istemiyorsanız veya GACing'e gore yaptığınız ve makine düzeyinde web yapılandırmasını değiştirdiğiniz gibi System.Web.PreApplicationStartMethod kümesini kullanarak yığının üst kısmında olmak için olaylarınıza ihtiyacınız varsa Başlangıçta yalnızca bin dizininde çalışarak kod çalıştırmak için daha sonra MVC Razor kitaplıklarından Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility.RegisterModule kullanın. Bunu yapmak, makine modülü listesindeki son modülle aynı sonucu verir.
Web yapılandırmasını değiştirmek istemiyorsanız ve olay yığınında daha erken olması gerekiyorsa, olay işleyicilerini yeniden sıralamak için bir şeyler yapmanız gerekir. Yutma hataları olan bir şeyi denemek ve hata ayıklamak için bunu bir kez yapmalıydım. Bu işlevi ile geldi reflektör içinde ve yaklaşık Biraz dürtme Mevcut etkinlik işleyicileri almak için
Dim t As Type = target.[GetType]()
Public Function GetEventSubscribers(ByVal target As Object, ByVal eventName As String) As [Delegate]()
Dim w = CType(t.GetField("_events", BindingFlags.Instance Or BindingFlags.Static Or BindingFlags.NonPublic).GetValue(target), System.ComponentModel.EventHandlerList)
Dim k = t.GetFields(BindingFlags.[Static] Or BindingFlags.Instance Or BindingFlags.NonPublic).Where(Function(x) x.Name.StartsWith("Event" & eventName)).Select(Function(x) x.GetValue(target)).ToList()
Dim d() As [Delegate] = k.SelectMany(Function(x)
If w(x) Is Nothing Then
New [Delegate]() {}
Else
Return w(x).GetInvocationList()
End If
End Function).ToArray
Return d
End Function
Eğer sizi sağlayacak tüm kayıtlı tanıtıcı delegelere bir eventName ile kendisine HttpApplication örneğini iletirseniz Bunların her birinde RemoveEventHandler() öğesini çağırın.
Hata olayına bunu yaparsanız, kendi işleyicinizi ekleyin, ardından önceden var olan delegeleri doğru sırada yeniden ekleyin, ardından diğer işleyicilerin herhangi birinin karışma şansı olmadan önce işleyicinizin işten çıkmasını sağlayın. Hatta durum ve uygulamanın geri kalanı olay durumunu kendiniz değiştirmediğiniz sürece akıllıca değildir.
Bu son derece yararlı bir ipucu:
dependentAssembly
bölüm bulundu montaj dosyasını olabilir IIS talimatını verir. Teşekkürler – NickSuperb