none
HostInBrowser RRS feed

  • Frage

  • Hallo

    Eine schnelle Frage zum Thema WPF - Anwendung:
    Ich bin leider darauf gestoßen, dass meine WPF-Browseranwendung Sachen wie Datenbankverwaltung und ".show" - Ereignisse nicht akzeptiert. ( Mit "SICHERHEIT = 0" funktioniert der Aufruf auf dem Webserver garnicht )
    Wollte nun den Code in eine normale WPF - Anwendung kopieren, aber mich stört, dass diese nicht in einem Browser angezeigt werden kann.
    Hab gegoogelt und gefunden, dass man irgendwo den "HOST IN BROWSER" - Tag auf "TRUE" setzen kann um dies zu erreichen. Leider bin ich in den Eigenschaften nicht
    fündig geworden.

    Wie bringe ich es fertig, meine normale WPF - Anwendung im Browser anzuzeigen. Wo muss ich Einstellungen setzen ?

    mfg HaTcHeT

    Anhang :

    Hab dies in MSDN gefunden :

    HostInBrowser

    Gibt an, ob eine WPF-Anwendung in einem Browser gehostet wird und entspricht einem der folgenden Werte:

    • true : Erstellt eine XBAP, die eine Hauptanwendungsassembly (.exe), ein Bereitstellungsmanifest (applicationName .xbap) und ein Anwendungsmanifest (applicationName .exe.manifest) enthält.

    • false : Erstellt eine eigenständige Anwendung.

    Wenn HostInBrowser true ist, muss OutputType winexe sein.

    LINK hier!
    Samstag, 20. Juni 2009 09:08

Antworten

  • Hallo HaTcHet,

    du kannst entweder ein Projekt für  WPF-Anwendung (Window) oder eines für WPF-BrowserAnwendung (Page) erstellen. Bei WPF-Browseranwendungen ist das HostInBroser Compilerflag in der Projektkonfiguration auf true.

    Also, wenn du etwas im Browser hosten willst musst du Page anstatt Window verwenden. Ein Window kannst du wie du schon herausgefunden hast aus Sicherheitsgründen nicht anzeigen.

    Mehr dazu hier
    http://msdn.microsoft.com/de-de/library/aa969818.aspx

    Hope it helps.
    Samstag, 20. Juni 2009 13:54
  • Hallo Roland,

    natürlich gibt es eine Möglichkeiter die Sicherheitseinschränkungen zu umgehen.

    In den Projekteigenschaften deiner WPF-Browseranwendung gibt es den Reiter "Security", dort kannst du den RadioButton auf "This is a full trust application" stellen. Dann kannst du auch ein Fenster aufmachen.

    Wie das mit dem Deployment ausschaut und welche Problem du dir damit noch einhandelst kann ich dir nicht sagen. Normalerweise sollte eine Browseranwendung "Full Trust" nicht benötigen. Sie arbeiten gegen einen WebService und öffnen keine Fenster!.
    Samstag, 20. Juni 2009 15:29

Alle Antworten

  • Hallo HaTcHet,

    du kannst entweder ein Projekt für  WPF-Anwendung (Window) oder eines für WPF-BrowserAnwendung (Page) erstellen. Bei WPF-Browseranwendungen ist das HostInBroser Compilerflag in der Projektkonfiguration auf true.

    Also, wenn du etwas im Browser hosten willst musst du Page anstatt Window verwenden. Ein Window kannst du wie du schon herausgefunden hast aus Sicherheitsgründen nicht anzeigen.

    Mehr dazu hier
    http://msdn.microsoft.com/de-de/library/aa969818.aspx

    Hope it helps.
    Samstag, 20. Juni 2009 13:54
  • Danke für die Antwort :)

    Mein Problem ist, dass ich über die Browseranwendung anscheinend keinen Zugriff auf eine lokale normale Datenbank habe, da dies durch die Sicherheitseinstellungen letztendlich am Webserver verhindert wird. Weiters bräuchte ich etwas ähnliches wie ein Popup, welches ich mit "Window1.show" oder so realisieren wollte. Wie eben in einem Windows - Forms - Projekt. Da aber die Browseranwendung dafür nicht zu haben ist wollte ich es mit der WPF - Anwendung probieren, weil es angeblich damit funktionieren sollte. Doch die müsste der Benutzer wohl erst vom Webserver downloaden und starten. Das möchte ich aber vermeiden. Es soll wie ein gewöhnliches HTML - Bestellwesen sein, nur eben mit vs2008 bzw vb.net geschrieben.

    Gibt es keine Möglichkeit die Sicherheitseinschränkungen der Browseranwendung zu umgehen um zu einer vollen Ausnutzung der Komponenten zu kommen?

    Danke im Voraus.

    freundliche Grüße :) Roland
    Samstag, 20. Juni 2009 14:44
  • Hallo Roland,

    natürlich gibt es eine Möglichkeiter die Sicherheitseinschränkungen zu umgehen.

    In den Projekteigenschaften deiner WPF-Browseranwendung gibt es den Reiter "Security", dort kannst du den RadioButton auf "This is a full trust application" stellen. Dann kannst du auch ein Fenster aufmachen.

    Wie das mit dem Deployment ausschaut und welche Problem du dir damit noch einhandelst kann ich dir nicht sagen. Normalerweise sollte eine Browseranwendung "Full Trust" nicht benötigen. Sie arbeiten gegen einen WebService und öffnen keine Fenster!.
    Samstag, 20. Juni 2009 15:29
  • Ich muss diese Art von Programmierung einsetzen, da ich gewisse Projektvorschriften habe.

    Ich habe die "Full Trust" - Option bereits probiert. Im Developer würde dies dann einwandfrei funktionieren, doch wenn ich dieses Projekt nun auf einen Webserver übertrage, lädt er das Programm und bringt dann diese Meldung :

    "Die Vertrauenswürdigkeit ist nicht sichergestellt"

    FEHLERZUSAMMENFASSUNG
        Es folgt eine Zusammenfassung der Fehler. Details zu diesen Fehlern werden später im Protokoll aufgelistet.
        * Ausnahme beim Ermitteln der Vertrauensstellung. Folgende Fehlermeldungen wurden entdeckt:
            + Der Benutzer hat es abgelehnt, der Anwendung die erforderlichen Berechtigungen zu erteilen.
        * Ausnahme beim Downloaden der Anwendung. Folgende Fehlermeldungen wurden entdeckt:
            + Fehler bei der AssertApplicationRequirements-Methode. Ein Commit der Anwendung ist nicht möglich.


    Jetzt seh ich nur noch die Möglichkeit ein Zertifikat für den Internet Explorer zu verfassen um die Vertrauenswürdigkeit sicherzustellen. Stimmt das??

    Wären es möglich mir zu erklären wie ich so ein Zertifikat erstelle ?

    Bedanke mich für die Zeit die Sie meinem Problem opfern :)

    mit freundlichen Grüßen, Roland


    Samstag, 20. Juni 2009 16:42
  • Hallo Roland,

    wenn die Anwendung in der Lokalen Zone läuft brauchst man kein Zertifikat, da reicht die Einstellung im Visual Studio. Aber in der Internet Zone musst du zu den vertrauenswürdigen Herausgebern hinzugefügt werden und dazu benötigst man ein Zertifikat.

    Ein Testzertifikat erstellst du im Visual Studio (Reiter "Signing") oder mit makecert.exe. Für das Ausführen beim Kunden musst du dir aber ein echtes Zertifikat kaufen.

    Der folgende Link beschreibt sehr gut was du alles machen musst.

    How to run WPF - XBAP as Full Trust Application:
    http://blogs.microsoft.co.il/blogs/maxim/archive/2008/03/05/wpf-xbap-as-full-trust-application.aspx

    Weitere Links:
    http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/eb710673-63c0-4371-b4b6-be60150d1a62
    http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/f7576e57-9d15-4c50-b944-3942df29754e

    Habt ihr schon mal überlegt die Anwendung mit Silverlight zu implementieren?

    Hope it helps.
    Samstag, 20. Juni 2009 21:44
  • Hallo Günter,

    Danke für den Blog, werde ich gleich mal ausprobieren.

    zu Silverlight:

    Ich habe bereits auch mit diesem Gedanken gespielt :)
    Hab auch die notwendige Umgebung installiert, bis auf das "Silverlight Template", welches sich nicht installieren lässt. Bringt einen schwerwiegenden Fehler zurück.
    Danach hatte ich diese Möglichkeit verworfen.
    Wäre natürlich toll wenn Silverlight doch irgendwie zu Verwendung kommen könnte.
    Kann es sein, dass VS2008 Express Edition kein Silverlight unterstützt ? ?

    mfg Roland

    Silverlight Template:
    http://www.microsoft.com/downloadS/details.aspx?familyid=C22D6A7B-546F-4407-8EF6-D60C8EE221ED&displaylang=en
    Sonntag, 21. Juni 2009 07:31