Laden...

WPF Anwendung stürzt auf TerminalServer ab

Erstellt von Baumunk77 vor 9 Jahren Letzter Beitrag vor 9 Jahren 3.499 Views
B
Baumunk77 Themenstarter:in
41 Beiträge seit 2014
vor 9 Jahren
WPF Anwendung stürzt auf TerminalServer ab

Wir vertreiben eigen entwickelte Software die zwei verschieden Plattformen nutzt WinForms und WPF(da verschieden Module und Anforderungen).
Alle Programme laufen fast immer von einem Netzlaufwerk, von dem File Server (Von manchen Kunden Vorgabe).
So jetzt ist folgende Problematik:
Oft ist Problem dass die Programme die rein WPF sind, werden einfach nicht gestartet. Von Windows kommt einfach „Programm funktioniert nicht mehr“ fertig. Die Exception abzufangen ist zwecklos try Catch hilft nicht, stürzt kommentarlos ab.
WinForms Programme laufen dagegen Problemlos.
Was hilft:

  1. Terminal Server neu zu starten.
    oder 2. Programverzeichnis lokal zu liegen (auf W:\ oder C:)
    oder 3. Programm kopieren und ins gleiche Verzeichnis unter anderer Name hinein kopieren, danach starten, läuft.
    Zu verwendetes Framework ist 4.0. Terminalserver 2008 oder 2012.
    Hatte jemand schon ähnliche/gleiche Problem mit dem Terminalserver in Verbindung mit WPF Anwendungen?
    Viel dank voraus, für die Tipps/Anworten.
W
955 Beiträge seit 2010
vor 9 Jahren

Hallo,

wir wurde die App eigentlich installiert? Setup.exe, OneClick oder XCopy?

B
Baumunk77 Themenstarter:in
41 Beiträge seit 2014
vor 9 Jahren

Mit einem Setup.exe der mit InnoSetup kompiliert ist.

H
523 Beiträge seit 2008
vor 9 Jahren

Liegt es evtl. an den Sicherheitszonen? Stichwort CasPol.exe und LocalIntranet_Zone?

Habt Ihr schonmal mittels procmon.exe oder procdump.exe versucht die Ursache zu ermitteln?

B
Baumunk77 Themenstarter:in
41 Beiträge seit 2014
vor 9 Jahren

Also das machen wir schon:
es wird beim Setup folgende zeile ausgeführt:
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\CasPol.exe
-q -machine -addgroup 1.2 -url "file://R:\Unserprogramme/*" FullTrust -name "Anwendungsname"

Programme selbst befinden sich im Ordner R:\Unserprogramme\Prog

Ist der Befehl eventuell falsch?

49.485 Beiträge seit 2005
vor 9 Jahren

Hallo Baumunk77,

du solltest erstmal versuchen, an die Exception zu kommen. Dazu gibt es mehr Möglichkeiten an try/catch, siehe [FAQ] Programm läuft in anderer Umgebung nicht (richtig) (spezielle den zweiten Beitrag).

herbivore

H
523 Beiträge seit 2008
vor 9 Jahren

Also das machen wir schon:
es wird beim Setup folgende zeile ausgeführt:
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\CasPol.exe
-q -machine -addgroup 1.2 -url "file://R:\Unserprogramme/*" FullTrust -name "Anwendungsname"

Programme selbst befinden sich im Ordner R:\Unserprogramme\Prog

Ist der Befehl eventuell falsch?

Wir hatten mal Probleme einen FullTrust für einzelne Anwendungen zu vergeben. Ist leider schon etwas länger her, so dass ich mich nicht mehr an Details erinnern kann.

Vielleicht mal testweise folgendes probieren:
%WINDIR%\Microsoft.NET\Framework\v4.0.30319\CasPol.exe -q -m -cg LocalIntranet_Zone -allcode FullTrust

4.221 Beiträge seit 2005
vor 9 Jahren

Verwendest Du beim Start der Anwendung Code um festzustellen ob die Anwendung schon läuft ... um diese laufende Instanz dann zu aktivieren ?

Dann könnte es sein, dass die neu gestartete Anwendung merkt, dass sie schon läuft (aber im Context eines anderen Users) und kackt dann ab wenn diese versucht die schon laufende Instanz in den Vordergrund zu holen.

Zugegeben ist einfach ein Schuss in's Blaue... aber könnte ja sein 😃

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

B
Baumunk77 Themenstarter:in
41 Beiträge seit 2014
vor 9 Jahren

Verwendest Du beim Start der Anwendung Code um festzustellen ob die Anwendung schon läuft ... um diese laufende Instanz dann zu aktivieren ?

Das ist zwar der Fall, kann man aber ausschließen, es wird über Mutex geregelt,
also:



mutNK = new Mutex(true, "MyApp", out aIsNewInstance);
                if (!aIsNewInstance)
                {
                    MessageBox.Show("Das Programm MyApp wird bereits ausgeführt!", "MyApp");
                    App.Current.Shutdown();
                }