den normalen Zugabe zu dem Web-Config und ist Ordner nach der Tat der Annahme nicht funktioniert für Sie eine sind paar Möglichkeiten für Sie im aktuellen Rahmen:
Wenn Sie nichts dagegen haben die Web-configs zu verändern, müssen aber das Modul außerhalb des bin speichern Sie System.Web.PreApplicationStartMethod verwenden können, einen Handler für AppDomain registrieren Ereignis .AssemblyResolve dann muss der Ereignishandler den Typ
laden und zurückgeben
Wenn Sie die web.config nicht ändern möchten oder Ihre Ereignisse oben im Stapel haben möchten, wie Sie es durch GACing erhalten und die Webkonfiguration auf Maschinenebene ändern, können Sie System.Web.PreApplicationStartMethod verwenden Um Code beim Start zu starten, indem Sie sich im Verzeichnis bin befinden, verwenden Sie dann Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility.RegisterModule aus den MVC Razor-Bibliotheken. Dadurch erhalten Sie ungefähr das gleiche Ergebnis wie das letzte Modul in der Maschinenmodulliste.
Wenn Sie die Webkonfiguration nicht ändern möchten und früher im Ereignisstapel sein müssen, müssen Sie etwas tun, um die Ereignishandler neu zu ordnen. Ich musste dies einmal tun, um etwas zu debuggen, das Fehler verschluckte. Ein wenig Stocher etwa in Reflektor und ich kam mit dieser Funktion bis zu erhalten, die bestehenden Event-Handler
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
Wenn Sie passieren die Httpapplication-Instanz, um es mit einem Eventname Sie alle registrierten Handler Delegierten erhalten, die es Ihnen erlaubt, Rufen Sie RemoveEventHandler() für jeden von ihnen auf.
Wenn Sie das mit dem Fehlerereignis tun, dann fügen Sie Ihren eigenen Handler hinzu, fügen Sie dann die bereits vorhandenen Delegierten in der richtigen Reihenfolge erneut hinzu, dann wird der Handler zuerst ausgelöst, bevor einer der anderen Handler die Möglichkeit hat, den Fehler zu beheben Selbst der Zustand und der Rest der Anwendung scheinen nicht so klüger zu sein, solange Sie den Ereigniszustand nicht selbst ändern.
Dies ist ein äußerst nützlicher Tipp. Vielen Dank – NickSuperb