Hallo Comunity
Ich habe ein Problem mit dem Starten einer installierten Maui Blazor App (TargetFrameworks: net7.0-windows10.0.19041.0) auf einer Windows 11 Umgebung.
Dieselbe App wurde bereits auf eine Windows 10 Umgebung ausgeliefert und funktioniert einwandfrei.
Folgender Fehler wird mir im Eventviewer geworfen:
Name der fehlerhaften Anwendung: App.UI.exe, Version: 1.0.0.0, Zeitstempel: 0x641de100
Name des fehlerhaften Moduls: Microsoft.ui.xaml.dll, Version: 3.0.0.2303, Zeitstempel: 0x6c39c3fc
Ausnahmecode: 0xc000027b
Fehleroffset: 0x00000000007cd8bc
ID des fehlerhaften Prozesses: 0x0x36FC
Startzeit der fehlerhaften Anwendung: 0x0x1DA2772FF15253E
Pfad der fehlerhaften Anwendung: C:\Program Files\WindowsApps\00000000-0000-0000-0000-000000000000_1.0.43.0_x64__9whhhhhpecwpc\App.UI.exe
Pfad des fehlerhaften Moduls: C:\Program Files\WindowsApps\Microsoft.WindowsAppRuntime.1.2_2000.802.31.0_x64__8wekhhhhhbbwe\Microsoft.ui.xaml.dll
Berichtskennung: 63da460c-17d5-47f8-8994-46f17a616413
Vollständiger Name des fehlerhaften Pakets: 00000000-0000-0000-0000-000000000000_1.0.43.0_x64__9whhhhhpecwpc
Anwendungs-ID, die relativ zum fehlerhaften Paket ist: App
Nachfolgende Tools habe ich nachinstalliert, um ggf. den Fehler wegzubekommen:
- dotnet-hosting-7.0.11-win.exe
- dotnet-sdk-7.0.404-win-x64.exe
- windowsappruntimeinstall-x64.exe
- windowsdesktop-runtime-7.0.10-win-x64.exe
- microsoft.ui.xaml.2.8.6.nupkg
- MicrosoftEdgeWebview2Setup.exe kann nicht nachinstalliert werden, da dies bereits ein Teil von Windows 11 ist.
- Installierte Microsoft Edge WebView2-Laufzeit Version: 119.0.2151.97
- RegEdit Eintrag unter Windows 10 ersichtlich unter Windows 11 nicht. EdgeUpdate Ordener nicht vorhanden
Erwähnter RegEdit Eintrag: "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}"
Bereits installiert ist Microsoft Visual C++ 2015-2022 Redistributable (x64)
Die Maui Blazor App wird über das VisualStudio 2022 veröffentlicht und als Quer-geladenes MSIX Paket (Release /x64) bereitgestellt.
Auch wenn ich die App nicht als MSIX verpacke und an die entsprechende Stelle auf der Zielumgebung hinkopiere, erhalte ich beim Starten der Applikations.exe die selbe Fehlermeldung wie über die gestartete MSIX installierte Installation.
An der Einstellung von Sprache & Regionen kann es auch nicht liegen, dies stimmt so weit überein.
Hat noch, wer eine Idee, was ich noch versuchen oder ggf. vergessen haben könnte?
Beste Grüsse
Dolce
Hallo Abt
Nicht dass ich etwas gegen konstruktive Kritik einzuwenden hätte, nur bei einem Beispielprojekt will ich keinen Blumentopf mit der Architektur gewinnen.
Trotzdem vielen Dank das Du Dich auf das Abenteuer eingelassen hast.
Zum Connection String:
Mit dem ganzen gepuzzle, konnte ich den Connection String auslesen und somit war dies kein Leerstring in der Registrierungsklasse. War er denn bei Dir immer leer? Hast Du es für Dich fixen und woanders lauffähig installieren können?
Direkt auf Maui zugreifen:
Da es mein erstes Maui Projekt ist, ist der Weg auch für mich noch etwas holprig. Aber die Migration nach Rest wird nicht schwer sein, es wird eine reine Fleißarbeit werden.
Und da ich noch nicht allzu viel aus der DB konsumiere, wird sich auch hier der Aufwand in überschaubaren Grenzen halten.
Reine Verständnisfrage:
Wenn ich eine Maui Blazor App erstelle, diese in eine msix Datei packe und dann woanders (Windows) installiere, handelt es sich dann dabei um eine Desktopapp?
Cheers
In der Config ist kein Typo enthalten und den SQL-Server kann ich auch nicht ohne weiteres neu aufsetzen, da dieser noch von einem anderen Tool verwendet wird. Ggf. werde ich aber eine eigene Instanz installieren und meine Versuche noch einmal ausführen & mir das mit dem Config-File merken/umsetzen.
Ich habe ein kleines Projekt erstellt, welches meinen Umstand verdeutlicht. Bei Interesse könnt Ihr Euch dies einmal ansehen, kompilieren und auf einem anderen Server installieren.
Ggf. könnt Ihr etwas erkennen, was mir nicht aufgefallen ist oder gänzlich unbekannt ist.
Zur Verdeutlichung:
- Das UI Projekt ist in MAUI Blazor implementiert und stellt die grafische Oberfläche
- Das Entity Projekt ist selbsterklärend und als Klassenbibliothek erstellt
- Das Server-Side Projekt ist als Blazor Server App implementiert, um darüber die EF Migrationen durchführen zu können
Der SQL Server ist auf dem selben Server installiert, auf welchem in der App rumgeklickt werden soll (für den Anfang).
Remoteverbindung ist eingeschaltet
TCP/IP sind aktiv
Named Pipe ist nicht vorhanden
Firewall Regeln wurden bereits für: 135; 1433;1434;4022 & 1434 UDP erstellt (eingehend und ausgehend)
Die Firewall ist ausgeschaltet
Der Virenschutz ist ausgeschaltet
Das dotnet-sdk-7.0.400-win-x64 wurde installiert
Erhalte aber immer noch denselben Verbindungsfehler...
Habe eine Winform gebaut um den Connectionstring zu prüfen (Mit der Winforms App funktioniert die Verbindung einwandfrei).
Nice to know
Das UI wurde als MAUI Blazor-App entwickelt, damit die Applikation als Desktop Applikation installiert werden kann. Eigentlich sollte die Applikation meiner Meinung nach unabhängig von der Webassembly und den Zugriff auf die Datenbank genutzt werden können.
Auch wenn ich die App mittels msix auf dem Server installiere und der SQL-Server auch auf diesem Server installiert ist?
Hallo Abt
Im Moment ist es noch eine Server-Side App, um dem Kunden etwas zum Klicken in die Hand zu geben, da die Rest-API noch nicht gebaut wurde.
Die Maui-App funktioniert bei mir ohne Probleme, wenn ich diese lokal installiere.
Cheers
Hallo zusammen
Ich habe mir eine Maui Blazor-Hybrid App in .NET 7 gebaut, welche ganz ordentlich was hermacht und lokal wunderbar läuft.
Nach der Installation der App auf einem anderen Windows 10 Pro x64 Server, erhalte ich die Fehlermeldung, dass der Sql-Server-Express (2019) nicht erreicht werden kann.
Error:
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SNI_PN11, error: 26 - Error Locating Server/Instance Specified)
Über das Management Studio kann ohne Probleme eine Verbindung mit der entsprechenden Datenbank hergestellt werden.
Ich habe unterschiedlichste ConnectionStrings versucht:
- mit & ohne User+PW
- mit & ohne IP-Addresse
- mit & ohne Local Angabe
Geprüfte aber erfolgslose Connection-Strings:
- "Data Source=.\\SQLEXPRESS; Initial Catalog=DemoDatabase; User Id=SimpleUser; Password=SimpleUserPassword; TrustServerCertificate=True; Encrypt=False"
- "Data Source=.\\SQLEXPRESS; Initial Catalog=DemoDatabase; Integrated Security=True"
- "Data Source=DNS-Name\\SQLEXPRESS; Initial Catalog=DemoDatabase; Integrated Security=True; TrustServerCertificate=True; Encrypt=False"
- "Data Source=DNS-Name\\SQLEXPRESS; Initial Catalog=DemoDatabase; User Id=SimpleUser; Password=SimpleUserPassword; TrustServerCertificate=True; Encrypt=False"
- "Data Source=DNS-Name\\SQLEXPRESS; Initial Catalog=DemoDatabase; Integrated Security=True"
- "Data Source=DNS-Name\\SQLEXPRESS; Initial Catalog=DemoDatabase; User Id=sa; Password=sapassword; TrustServerCertificate=True; Encrypt=False"
- "Data Source=IP-Address\\SQLEXPRESS; Initial Catalog=DemoDatabase; User Id=sa; Password=sapassword; TrustServerCertificate=True; Encrypt=False"
- "Server=.\\SQLEXPRESS; Database=DemoDatabase; User Id=SimpleUser; Password=SimpleUserPassword; TrustServerCertificate=True; Encrypt=False"
SQL-Server Management Einstellungen:
- Ich habe die SQL Server Remote Einstellung geprüft
- Ich habe den SQL Port geprüft und versucht auf Default (1433) gestellt
SQL-Profiler
Bei allen versuchen wird kein Event im Trace-Log des SQL-Profiler geloggt
Registriert wird der DatabaseContext in meinem Projekt mittels:
builder.Services.AddDbContextFactory<DatabaseContext>((DbContextOptionsBuilder options) ⇒
options.UseSqlServer(connectionString));
Habt Ihr noch ein paar Ideen, was ich versuchen könnte, um eine erfolgreiche Datenbankverbindung herstellen zu können?
Gruss Dolce
Habe es jetzt mit einer zusätzlichen Klasse gelöst, was ich eigentlich nicht wirklich wollte und schreibe den Stream mittels JsonSerializer in diese Klasse.
var appSettings = System.Text.Json.JsonSerializer.Deserialize<AppSettings>(assembly.GetManifestResourceStream(strAppConfigStreamName));
var connectionString = appSettings.ConnectionStrings.Default;
Trotzdem vielen Dank
Hallo Abt
Auf der verlinkten Seite war ich bereits und hat mir nicht weitergeholfen.
Ich würde gerne den ConnectionString nach dem Einlesen wieder auslesen und in der MauiProgram.cs Klasse weiterverwenden.
Dolce
Hallo zusammen
Meine Frage ist, wie kann ich einen Wert in der MauiProgram.cs Klasse aus der appsettings.json auslesen, nachdem diese eingelesen wurde.
Das ein Lesen der appsettings.json funktioniert einwandfrei, aber ich komme einfach nicht an die Werte heran, den ich würde gerne den ConnectionString nach dem Einlesen wieder auslesen und in der MauiProgram.cs Klasse weiterverwenden.
appsettings.json inhalt
{
"ConnectionStrings": {
"SQL": "Data source connection"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}
Einlesen des appsettings.json in der MauiProgram.cs
string stringAppConfigStreamName = string.Empty;
stringAppConfigStreamName = "{MyMauiProjectName}.appsettings.json";
var assembly = IntrospectionExtensions.GetTypeInfo(typeof(MauiProgram)).Assembly;
var stream = assembly.GetManifestResourceStream(stringAppConfigStreamName);
var config = new ConfigurationBuilder()
.AddJsonStream(stream)
.Build();
Beste Grüsse
Dolce