Wir haben hier einen Windows 2008 Webserver mit IIS7, auf dem laufen jede Mengen Anwendungen erfolgreich und seit langer Zeit. Nun habe ich eine neues Silverlight 3 Programm für das ich eine virtuelle Anwendung erzeugt habe. Da gehört auch ein WCF Service dazu.
Serverfehler in der Anwendung /svcs1.
Konfigurationsfehler
Beschreibung: Fehler beim Verarbeiten einer Konfigurationsdatei, die für diese Anforderung erforderlich ist. Überprüfen Sie die unten angegebenen Fehlerinformationen, und ändern Sie die Konfigurationsdatei entsprechend.
Parserfehlermeldung: Der Verbindungsname LocalSqlServer wurde in der Anwendungskonfiguration nicht gefunden, oder die Verbindungszeichenfolge war leer.
Quellfehler:
Zeile 164:connectionStringName="LocalSqlServer" Zeile 165:applicationName="/" Zeile 166:type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> Zeile 167: Zeile 168: </providers> |
Quelldatei: C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Config\machine.config Zeile: 166
Versionsinformationen: Microsoft .NET Framework-Version:2.0.50727.4016; ASP.NET-Version:2.0.50727.4016
Ziemlich uncool die Fehlermeldung.
Vor allem, was soll das mit dem LocalSqlServer String? Das ganze ist ja in der machine.config angelegt und die ist seit Installation des Systems unverändert. Der Connection String wird ja auch nur benötigt wenn man die Standard Membership Funktion mit dem SQLExpress Server verwendet. Das tue ich aber nicht.
Strukturierte Fehlersuche
zunächst einmal wildes rumraten in der machine.config. Dann Einsicht: “die anderen Anwendungen laufen ja- es muss an der Anwendung liegen”. Dann leere Anwendung im IIS erstellen und test.aspx erzeugt. Auch Fehler.
Was ist nun noch ein Unterschied? Web.config. Also Web.Config von funktionierender Anwendung kopiert und : geht!
Nun in Web Config der Silverlight Anwendung einfach den Rolemanager entfernt. Das geht in IIS mit der modularen Architektur ganz wunderbar.
<roleManager enabled="false">
<providers>
<remove name="AspNetSqlRoleProvider"/>
</providers>
</roleManager>
Überraschung: meine Silverlight Anwendung läuft. Es muss wohl ein Kompatibilitäts Problem sein mit dem Roleprovider aus IIS7 und net 3.5 SP1. Wieder mal ein Beispiel für absolut bescheuerte Fehlermeldungen.