Habe eine neue DLL-Version einer Komponente downgeloadet und auf einmal bringt mein .NET-4-WinForms-Programm eine Fehlermeldung:
Die Datei oder Assembly „ScintillaNET, Version=2.5.2.0, Culture=neutral, PublicKeyToken=948d6c9751444115“ oder eine Abhängigkeit davon wurde nicht gefunden. Die minimale Berechtigung konnte nicht erteilt werden. (Ausnahme von HRESULT: 0x80131417)
Aaargh!
Ich habe dann wirklich richtig lange gesucht und dann tatsächlich die Lösung gefunden:
Lösung
Die DLL-Datei wurde von Windows als „blockiert“ markiert:
Das hier ist eine Geschichte, geprägt von Freud und Leid. Weil ich sie hier aufschreibe, ist das Leid im Vordergrund. Primär schreibe ich sie zur Selbst-Therapie auf und dass ich mich in einigen Jahren noch auf was berufen kann, wenn mich meine Erinnerung bei der Provider-Wahl zu trügen versucht.
Wir haben zurzeit 3 Webserver, alle mit dem Betriebssystem Windows Server von Microsoft. Einen Server für Zeta Uploader (ein Tool um große Dateien online zu versenden), einen Server für verschiedene Kunden-Websites, und einen Server für die Produktwebsites zu Zeta Producer (ein Content-Management-System) und Zeta Test Management (ein Test-Management-System).
Bis vor 2 Wochen waren alle Server über Jahre hinweg bei 1und1 gehostet. Seit zwei Wochen sind nun 2 der drei Server bei Internet 24 gehostet.
Wir haben über ein Jahr lang gelitten, geschwitzt, geflucht, gebettelt, gehofft und immer wieder Kunden über Downtimes hinweg versucht zu tröste (ich glaube wir waren der beste Nutzer von Uptime Robot). Am Ende hat alles nichts genutzt und wir mussten umziehen.
Was lief alles schief
Die Idee der „Dynamic Cloud Server“ klingt verlockend: Virtualisierte Server (mit Xen) mit schöner Admin-Web-GUI bei der ich via Schieberegler diverse Einstellungen wie RAM, CPU und Festplatte so konfigurieren kann, dass ich sie an unsere Bedürfnisse anpassen kann.
In der Praxis war genau das Gegenteil der Fall: Die Server reagierten träge, langsam und mit häufigen Ausfällen. Meine starke Vermutung ist, dass die Host-Rechner (also die physikalischen Computer, auf denen die virtuellen Computer laufen) so maximal ausgelastet sind, dass ich mit den Schiebereglern zwar meine Wünsche angeben kann, jedoch diese nichts mit der tatsächlichen Ressourcen-Zuteilung in der Praxis zu tun haben. Doch selbst eine schlechte Performance hätte ich verkraftet, wären da nicht die ständigen/häufigen Ausfälle gewesen.
Unser Zeta-Uploader-Server ist die rühmliche Ausnahme: Der läuft weiterhin bei 1und1, und zwar wie die sprichwörtliche 1: Er ist nicht der schnellste, dafür ist er quasi immer erreichbar und quasi nie down. Dieser Server läuft, so wie ich es wohl verstanden habe, auf einer Xen-5.5-Umgebung. Keine Treiber-Issues, nix.
Unsere beiden anderen Server liefen auf einer Xen-6.x-Umgebung.
Und genau diese beiden Server liefen wie Dreck. Nämlich nach Lust und Laune des Hosters. Meistens am Wochenende waren sie nicht erreichbar, erst am Montag, nachdem wohl ein Techniker die Hosts neu gebootet/whatever damit gemacht hat. Das ganze lief regelmäßig, pünktlich zum Wochenende so ab:
Server antwortet nicht mehr.
Control-Center (Web-Oberfläche) erlaubt es nicht den Server aus- und wieder einzuschalten.
Hotline schafft es nicht, Server aus- und wieder einzuschalten.
2nd-Level-Kollegen von Hotline schaffen es nicht, Server aus- und wieder einzuschalten.
Administratoren schaffen es dann (nur Werktags!) wohl irgendwie, den Server auszuschalten.
Ich entdecke zufällig, dass ich Server jetzt wieder hochfahren kann.
Ich fahre Server via Control-Center hoch.
Server startet natürlich nicht normal, sondern im Rescue-Modus.
Ich boote neu im normalen Modus.
Server booten in Zeitlupe.
Nach 40 Minuten(!) warten ist Server dann gebootet.
Server läuft immer noch in Zeitlupe.
Die ersten zig Male habe ich immer versucht, Fehler bei mir selbst zu finden und alles mögliche probiert, leider erfolglos. Irgendwann haben wir dann einen „Platin-Support“ für etwa 10 Euro pro Monat mit dazu gebucht. Effekt war, dass die Warteschleife umgangen wurden, die Supporter dahinter waren genau so höflich und kompetent wie beim Nicht-Platin-Support. Also höflich und hilfsbereit waren sie wirklich, kompetent im Sinne von, dass sie etwas bewirken konnten, waren sie leider nicht. Es hieß am Wochenende dann oft „das müssen wir an den 2nd-Level-Support eskalieren lassen“ (oder so ähnlich), mit dem Zusatz „das kann schon Montag werden, bis es wieder läuft“. Arrgh. Da saß ich immer wie auf Kohlen.
Schön (im sarkastischen Sinne) waren anschließend auch immer die belanglosen, wohl von Robotern erstellten E-Mail-Nachrichten:
Ihr Dynamic Cloud Server ist wieder wie gewohnt erreichbar.
Bitte entschuldigen Sie die entstandenen Unannehmlichkeiten.
Wir wünschen Ihnen weiterhin viel Spaß mit unseren Produkten.
Es hat viele Versuche gedauert, bis 1und1 überhaupt zugegeben hat, dass der Fehler bei ihnen liegt. Es hieß dann lapidar „Es lag eine Störung im Hostsystem vor“. (Ob so was hier [als Bild] wohl repräsentativ ist?)
Lösungsansätze
Irgendwann habe ich dann angefangen, mich weiter zu erkundigen und bin auf die Möglichkeit gestoßen, die Xen-Netzwerk-Treiber in meinem Gast-Windows zu aktualisieren. Da habe ich wirklich viel Zeit investiert und nach viel nachbohren dem 1und1-Support wenigstens die Xen-Versionsnummer entlocken können. Sogar einen Bekannten („Facebook-Freund“), der bei Citrix arbeitet (die Firma hinter Xen) habe ich mit den Fehlern und der Thematik konfrontiert und er hat mir einige Tipps geben können, die gefühlt geholfen haben. Objektiv waren jedoch immer wieder die Aussetzer der Server.
Ich habe meinen Bekannten auch gefragt, ob man mit Xen 6 überhaupt ein stabiles System hinbekommen kann, worauf er mir mit Screenshots von Uptime-Charts von 190+ Tagen geantwortet hat. Es geht also. Xen kann das, die Admins scheinen es hier wohl nicht hin zu bekommen. Warum auch immer, ich vermute einfach Kostendruck.
Eines Tages habe ich dann einen ehrlichen Supporter am Telefon gehabt, der mir am Ende sagte „Ach, wissen Sie, Xen und Windows, das ist auf Dauer einfach nicht stabil hin zubekommen“. Der Tenor war für mich „Damit müssen Sie leben, seien Sie froh, dass es überhaupt läuft“. WTF? Dass unser Xen-5.5-Server stabil läuft ist für mich ein Beweis, dass es durchaus funktionieren kann, ebenso wie die Aussagen meines Bekannten.
Lösung
Es musste also eine Lösung her, und die war eindeutig außerhalb von 1und1 zu sehen. Doch wie vorgehen, um nicht vom Regen in die Traufe zu kommen?
Jeder Hoster, den ich mir so angeschaut habe hatte Vor- und Nachteile. Mal zu groß, mal zu klein, mal keine Windows-Server und mal irgend was anderes seltsames. Mein geschätzter Kollege M. hat dann nach viel Recherche und einigen Telefonaten den Hoster „Internet 24“ in Dresden ausfindig gemacht. Der ist groß genug um saubere Technik und Kompetenz zu liefern und gleichzeitig persönlich genug um immer direkt einen kompetenten Techniker am Draht zu haben.
Seit ca. 2 Wochen laufen jetzt also unsere Server bei Internet 24. Noch zu kurz um eine aussagekräftige Bewertung abzugeben, doch bereits der Anfang war geprägt von lauter positiven Eindrücken, die auch nach dem Kauf weiter anhielten, bis heute.
Epilog
Web-Hosting ist halt wohl ein genau so kaputter Markt wie alle anderen von BWL-ern „optimierten“ Branchen auch. Damit muss ich halt wohl leben und immer wieder mal zum „Server-Nomaden“ werden, wenn ein Hoster zu groß wird und die Qualität nachlässt.
Wenn 1und1 unsern auf Xen 5.5 laufenden Server nach Xen 6.x upgradet gehe ich davon aus, dass ich den auch umziehen muss, weg von 1und1.
Die Server bei Internet 24 sind schöne Intel-Xeon-Rechner mit viel RAM und Hewlett-Packard-RAID; der Support von Internet 24 ist erstklassig und tatsächlich per E-Mail Tag und Nacht sehr schnell und (fast immer) sehr kompetent zu erreichen.
Ich bin richtig glücklich mit Internet 24 und hoffe, das bleibt auch so.
Update 2013-11-03
Ich habe mir mal die Pingdom-Alerts angeschaut und ausgewertet:
Es waren im Schnitt 10 Downtimes pro Monat. Pro Monat! Und das waren nur die, die Pingdom auch gemessen hat. Alles unter 5 Minuten ist da noch gar nicht dabei.
Update Mai 2018
Wir sind jetzt inzwischen fünf Jahre bei „Internet 24“. Das lief dort alles wesentlich stabiler als beim vorherigen Provider.
Unsere Hardware-Server sind inzwischen in die Jahre gekommen, und müssen irgendwann ausgetauscht werden.
Da „Internet 24“ inzwischen (mehrfach?) verkauft wurde, unsere Server inzwischen (mehrfach?) physikalisch in andere Rechenzentren umgezogen wurden, es ein paar wenige technische Peinlichkeiten gegeben hat (z. B. eine Firewall, die auf einmal wieder geschlossene Ports geöffnet hatte), und der Support sich in letzter Zeit auch von persönlichen Ansprechpartnern, hin zu unpersönlichen Web-Ticket-Masken hin geändert hat, haben wir uns entschieden, nochmals umzuziehen.
Die Wahl fiel dabei nach viel Nachdenken, Recherchieren, Ausprobieren und Testen auf Amazon Web Services, AWS.
Wir haben einen Kunden/Partner, der seit über 10 Jahren mit AWS sehr zufrieden ist, und uns die Thematik ausführlicher dargelegt hat. Inzwischen haben wir schon ein paar Linux- und Windows-Server bei AWS, und die Stabilität, Geschwindigkeit und Zuverlässigkeit sind atemberaubend.
Wenn man genau weiß, was man sich zusammen konfiguriert, sind nach unserer Erfahrung auch die Kosten sehr wettbewerbsfähig.
Gegen Mitte/Ende 2018 wollen wir alle Server zu AWS umgezogen haben.
Eine neue Website mit ASP.NET MVC 4, frisch auf einen Server publiziert, lieferte die Fehlermeldung:
Die Datei oder Assembly „DotNetOpenAuth.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=2780ccd10d57b246“ oder eine Abhängigkeit davon wurde nicht gefunden. Die gefundene Manifestdefinition der Assembly stimmt nicht mit dem Assemblyverweis überein. (Ausnahme von HRESULT: 0x80131040)
Im Englischen klingt das ungefähr so:
Could not load file or assembly ‚DotNetOpenAuth.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=2780ccd10d57b246‘ or one of its dependencies. The located assembly’s manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Nach viel Suchen, fand ich schließlich die Lösung:
Da ich dieses „DotNetOpenAuth.Core“ via NuGet installiert hatte, wurde in meiner lokalen Web.config-Datei automatisch Einträge ergänzt. Diese Einträge haben im öffentlichen Web auf dem Webserver noch gefehlt.
Ich wollte unterschiedliche Zeilen in Microsoft Office Excel zählen, dachte das geht ganz einfach, wurde eines Besseren belehrt und bekam dann Hilfe auf Super User:
Das hier soll mal als Referenz/Dokumentation dienen für ein Phänomen, das bei meinem neuen Volkswagen VW Golf GTI 7 auftritt.
Phänomen
Beim Öffnen von Türen oder Kofferraum, um meinen abgestellten Golf GTI 7 zu “betreten”, gibt es nach 1-5 Sekunden einen sehr lauten Plopp/Knack-Geräusch. Höchstwahrscheinlich aus dem Lautsprecher. Manchmal gibt es auch 2-3 Plopps/Knacks in einem.
Häufigkeit
Tritt in 98% der Fälle auf. Wenn der Wagen nur ganz kurz abgestellt ist, ohne zu verschließen, tritt das Ploppen gefühlt seltener auf.
Versuche/Experimente
Öffnen nur der Fahrertür (Plopp kommt)
Öffnen nur der Beifahrertür (Plopp kommt)
Öffnen des Kofferraums (Plopp kommt)
Alles mit Handy in der Tasche (Plopp kommt)
Alles ohne Handy dabei (Plopp kommt)
Andere Personen, ganz ohne mich (Plopp kommt)
Ausstattung des Golf
Falls es relevant ist, hier grob die Ausstattung:
Golf GTI 7
2-Türer
DSG
Bluetooth-Koppelung für iPhone
Freisprecheinrichtung
Verkehrszeichenerkennung
Spurhalteassistent
Tempomat
Abstandssensor
Einparkassistent
Vermutung
Ggf. initialisiert sich der Bus irgendwie und „testet“ dabei die Lautsprecher. Bei meinem PC habe ich mit externen Lautsprechern ebenfalls so ein Phänomen, dass beim Booten von Windows 8 die Lautsprecher mehrfach laut knacken.
Mein Autohaus spielt auf Zeit und rät mir: „Beobachten Sie das noch ein paar Wochen“ (Hallo? Ich „beobachte“ das schon seit 3 Wochen, das reicht mir -_-).
Falls Ihr das Phänomen kennt, ggf. sogar samt Lösung, gerne Kommentare hierher.
Wenn ich eine Lösung finde, dokumentiere ich sie ebenfalls hier im Artikel.
Update 26.07.2013
Gerade hat mein Autohändler zurück gerufen.
Heute morgen haben sie wohl ein Ticket bei VW aufgemacht und VW hat jetzt als Rückantwort gegeben, dass das anscheinend ein bekanntes Problem mit dem Navigationssystem ist (heißt wohl „Discovery Pro“).
So wie ich es verstanden habe, ist zurzeit noch kein Fix bekannt, es gilt wohl die Devise „erst mal abwarten“.
Sobald es dann einen Fix gibt, wird VW wohl meinem Autohändler Bescheid geben und ich poste hier dann gerne, wie die Lösung aussieht. In der Hoffnung, dass es eine Lösung gibt.
Update 31.10.2013
Nach ziemlich starkem Druck (leider) von mir beim Autohändler, habe ich jetzt tatsächlich ein komplett Plopp-freies Auto.
Laut Händler haben sie ein „Software-Update“ eingespielt, und wohl noch ein bisschen was konfiguriert/ausprobiert, um den Plopp in den Griff zu bekommen. Genaueres wollte er nicht rauslassen, nur dass sie das Update sogar teuer bei VW kaufen mussten.
Ich vermute, der Bus wird jetzt anders initialisiert und dadurch wird das Ploppen/Knacken vermieden.
Einmal hat es noch ganz ganz leise mal kurz geziept, seit dem habe ich nichts mehr gehört.
Für ein Projekt müssen wir von Microsoft Office Access 2010 auf einen SQL Server 2000 via ODBC zugreifen.
Die Herausforderung ist, dass der SQL Server 2000 als benannte Instanz („Named instance“) auf dem Server installiert ist (Windows 2008 R2). Also so was wie „MEINSERVER\SQL2000“, anstatt nur „MEINSERVER“.
Lokal auf dem Server kann ich wunderbar auf den SQL Server 2000 zugreifen, alleine via Netzwerk von einem PC mit Windows 7 ging es nicht. Es kam immer wieder die Meldung, dass keine Verbindung hergestellt werden konnte.
Vom Prinzip via cliconfg.exe-Programm auf dem Client einen Alias zu IP-Adresse und Port des SQL Server 2000 machen und dann über den Alias zugreifen.
Zitate aus der Lösung:
Server:
Determine the TCP/IP port number of the instance of SQL Server. To do this, use one of the following methods, depending on which version of SQL Server that you are running.
On the server that is running SQL Server 2000, start the Server Network Utility. To do this, click Start, click All Programs, click Microsoft SQL Server, and then click Server Network Utility.
Click the General tab, and then select the instance that you want from the Instances list.
Click TCP/IP, and then click Properties. The TCP/IP port number for this instance is shown. Note this number so that you can use it later.
Client:
Configure the server alias on the client computer. To do this, use one of the following methods, depending on your version of SQL Server.
Start the Client Network Utility. To do this, click Start, click Run, type cliconfg.exe, and then press Enter.
On the General tab, verify that TCP/IP appears in the list under Enabled protocols by order.
Click the Alias tab, and then click Add.
Under Network libraries, select TCP/IP.
In the Server name text box, type the IP address of the server that is running SQL Server 2000. Note The IP address that you type here is the one that is configured to use the TCP/IP port number.
Click to clear the Dynamically determine port check box, and then type the port number of the instance of SQL Server 2000 in the Port number text box.
Type a name in the Server alias text box, and then click OK.
Dann ging die ODBC-Verbindung („Verbindungstest“ war erfolgreich).