eine Lösung mit zwei Websites Gegeben:.NET Core RC2 applicationhost.config nicht mit ASP.NET .NET 4.6 kompatibel?
1) ASP.NET basiert auf .NET 4.61
2) .NET Core-RC2
Nach dem Start iisexpress für (2), MSVS aktualisiert die applicationhost. config enthält einige zusätzliche Zeilen, die mit (1) nicht kompatibel zu sein scheinen. Dies wird nicht bemerkt, bis iisexpress das erste Mal herunterfährt und dann versucht, es zu starten (1).
Die inkompatiblen Linien sind:
<section name="aspNetCore" overrideModeDefault="Allow" />
<add name="AspNetCoreModule" image="C:\Program Files (x86)\Microsoft Web Tools\AspNetCoreModule\aspnetcore.dll" />
<add name="AspNetCoreModule" />
Wenn (1) gestartet ist, erscheint ein Dialog, die besagt, und geschrieben wird ein Ereignis "IISExpress starten fehlgeschlagen":
Das Modul DLL ‚C: \ Programme (X 86) \ Microsoft Webtools \ AspNetCoreModule \ aspnetcore.dll konnte aufgrund eines Konfigurationsproblems nicht geladen werden. Die aktuelle Konfiguration unterstützt nur das Laden von Bildern, die für eine AMD64-Prozessorarchitektur erstellt wurden. Das Datenfeld enthält die Fehlernummer. Weitere Informationen zu diesem Problem, einschließlich zur Behebung dieses Typs von Fehlern bei der Prozessorarchitektur, finden Sie unter http://go.microsoft.com/fwlink/?LinkId=29349.
Mögliche Lösungen?
A) Die zusätzlichen Zeilen vor dem Start entfernt (1), wie erreicht man das automatisch?
B) Verwenden Sie eine andere applicationhost.config für jede Website, gibt es eine Umgebungsvariable, um dies zu setzen?
C) Das im Ereignisprotokoll gemeldete Problem direkt beheben. Irgendwie funktioniert es, wenn die .NET Core RC2-Site gestartet wird, das ist seltsam.
D) Verwenden Sie separate Lösungsdateien, die sich in verschiedenen Verzeichnissen befinden. Dies ist nicht wünschenswert, da es eine ziemlich komplexe Lösung ist.
Eine mögliche Lösung besteht darin, applicationHost.config manuell zu bearbeiten, sodass die beiden Webanwendungen in verschiedenen Anwendungspools ausgeführt werden (.NET 4.6.1-Anwendung in einem Pool mit CLR 4 und ASP.NET Core in einem Pool ohne CLR) und mit separater Modulkonfiguration, um dieses ASP.NET Core-Modul nur in der ASP.NET Core App zu laden. –
@LexLi, ich habe versucht, etwas Ähnliches zu Ihrem Ratschlag zu machen, indem ich den 3. vom Default-Bereich Location = "" auf die spezifische Position des Kernnetzes verschoben habe und beide Seiten laufen lassen konnte. Aber wenn ich die Core-Site neu anlege und starte, fügt MSVS die Zeile wieder dem Bereich Location = "" hinzu. Ich nehme an, wenn das MSVS neu geschrieben würde, wenn ich auch in separate App-Pools ausbrechen würde, richtig? Weil MSVS den globalen Modulabschnitt schreibt. – crokusek
Es gibt auch diese "preConditions" in einigen der DLL-Zeilen. Ich habe versucht, Bitness64 zu dem zu addieren, über den sie sich beschweren, aber es warf einen Fehler auf. – crokusek