Ich erstelle eine neue Web Forms aspnet 4.0 Website und habe Elmah 1.2 mit NuGet installiert. Ich habe eine Zeile zur web.config hinzugefügt, um zum SQL Server Express zu protokollieren, und die entsprechende Tabelle und 3 gespeicherte Prozeduren erstellt. Lokal (Win 7/ IIS 7.5) funktioniert alles gut (wenn ich es über den vs2010 Dev-Server und meinen lokalen IIS ausführe) - ich kann auf elmah.axd/test zugreifen und dann zu elmah.axd zurückkehren, und tatsächlich wurde mein Fehler protokolliert.
Dann veröffentliche ich die Website auf unseren Dev-Server (Win 2008 R2/ IIS 7.5). Wenn ich auf elmah.axd zugreife, informiert es mich, dass keine Fehler vorhanden sind - dann gehe ich zu elmah.axd/test und kehre zu Elmah zurück, und immer noch keine Fehler. Wenn ich das Protokollieren so umstelle, dass es stattdessen im Speicher statt in SQL erfolgt, funktioniert alles einwandfrei.
Ich habe Ausführungsrechte für den App-Pool-Benutzer für alle gespeicherten Prozeduren in der Website hinzugefügt. Ich habe sogar eine separate Verbindungszeichenfolge namens ElmahConnString erstellt, bei der ich mich als SA anmelde - leider kein Glück. (Ich habe versucht, das "a" aus sa zu löschen, um sicherzustellen, dass es kaputt geht, und es hat sicherlich kaputtgegangen - es hat also definitiv diese Verbindungszeichenfolge verwendet).
Meine web.config sieht so aus (die meisten davon wurden von NuGet eingefügt!);
Man wird bemerken, dass dies den am häufigsten gegebenen Antwort für dieses Problem umfasst, nämlich den System.webserver-Abschnitt am Ende :'(
Ich verstehe es nicht? Was übersehe ich?