ASP.NET Zone

Die ASP.NET Community. Alle Antworten rund um Microsoft® Webtechnologien
Willkommen bei ASP.NET Zone. Anmelden | Registrieren | Hilfe | Impressum | ASP.NET Zone Suchplugin

in
Home Blogs Foren FAQ Communities Fotos Downloads

MasterPage und Aktualisierung einer xaml Datei

Letzter Beitrag 01-03-2012, 13:48 von TiSch. 13 Antworten.
Beiträge sortieren: Zurück Weiter
  •  11-09-2011, 15:49 222982

    MasterPage und Aktualisierung einer xaml Datei

    Guten Tag,

    Ich komme mal wieder nicht wirklich weiter,
    ich will eine Silverlight Anwendung in ein bestehendes Projekt einbinden.
    Was die Silverlight Anwendung macht bzw machen soll ist schnell erklärt.

    Hierbei handelt es sich lediglich um ein Layout, das mit xaml geschrieben wird. Also es enthält keine Interaktion mit dem User. Allerdings sollen Teile, wie z.B. Farben der Componenten aus einer Datenbank geladen werden, dazu im zweiten Problem mehr.

    Das einbinden geht dank Microsoft Visual Studio 2010 auch wunderbar. Nur soll die aspx seite in eine MasterPage eingebaut sein.
    Dazu habe ich auch einiges gefunden nur leider klappt es nicht wirklich. Und zwar, dasss man alles bist auf das Silverlight 'object' auslagern soll in die .Master datei. Nur leider zeigt der mir dabei nichts an so als wäre das Object nicht da.
    Es steht nun noch noch Folgender Code in Master datei:

    <%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" %>
    <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
    </asp:Content>
    <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
        <h2>Hier soll das Layout sein! In einer xaml Datei</h2>

            <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
              <param name="source" value="ClientBin/LayoutApp.xap"/>
              <param name="onError" value="onSilverlightError" />
              <param name="background" value="white" />
              <param name="minRuntimeVersion" value="3.0.40818.0" />
              <param name="autoUpgrade" value="true" />
              <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40818.0" style="text-decoration:none">
                   <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
              </a>
            </object>
            </iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px">
    </asp:Content>

    Angezeigt wird nur die überschrift.
    Der rest steht in der Master drin.

    Das zweite Problem ist, dass das Layout aus einer Datenbank geholt wird. Dies soll nicht statisch, also nur beim Laden passieren sondern alle paar Sekunden.
    Wie kriegt man es hin das der Server alle paar sekunden auf die Datenbank zugreift. (Ob er das nur macht wenn wirklich ein Client dran ist, ist erstmal egal). Die Daten in der Datenbank können sich ändern. Also es kann passieren das ein update von ausserhalb zu einer Änderung der Daten führt. Und ist es hierbei Schlau das Design immer neuzuzeichnen oder nur dann was zu machen wenn sich die Daten geändert haben? Für das erste bräuchte man viele Resourcen fürs Zeichnen. Für das Zweite viel Werte die gespeichert werden. Wobei das bei Silverlight nicht so ein Problem darstellt wie einer Webapplication, so kam mir es bisher vor ;-).


    Ich hoffe es kann mir zumindestens etwas weitergeholfen werden.
  •  11-14-2011, 15:48 223012 Antwort zu 222982

    AW: MasterPage und Aktualisierung einer xaml Datei

    Ich bin nun ein wenig weitergekommen.
    Für die die es interessiert es ist nicht möglich über Silverlight auf eine Datenbank zugreifen (vielleicht ist es möglich aber es ist nicht dafür gedacht). Dafür muss man sich einen WebService bauen.
    Hierbei hatte ich im Visual Studio 2010 ein Problem diesen hinzuzufügen. So leicht wie im normalfall gehen mag ging es bei mir nicht. Und zwar wollte ich WebService im gleichen Projekt erstellen in den auch die .aspx Datei ist. Aber ich die im gleichen Projekt hatte konnte ich den WebService nicht als ServiceReference hinzufügen. Also habe ich ein neues Projekt für den WebService gemacht. Nun kann man den Service hinzufügen.
    Um die geschriebenen Methoden im WebService aufzurufen muss man einen EventHandler schreiben, so wie ich das Verstanden hat ist die notwendig da alle Methoden Asyncron sind.
    Nur leider liefert mir das Result nicht das gewünschte Ergebnis.
    Könnte es vielleicht daran liegen das auf den Rechner auf den ich Entwickel der IIS nicht installiert ist?

    Ich hoffe meine Annahmen sind richtig, und helfen neueinsteigern die ein ähnliches Problem haben dieses schneller zu lösen.
  •  11-15-2011, 13:22 223025 Antwort zu 223012

    AW: MasterPage und Aktualisierung einer xaml Datei

    Der Fehler bei der Verbindung zum WebService war das der Service ein anderen Port benutzt. Und deswegen konnte man beim testen wohl nicht auf diesen zugreifen.
    Das Problem das ich die in den gleichen Project nicht hinzufügen konnte war auch ein sehr simples und hätte mir nach früheren Problemen auch bekannt sein können. Ich kam darauf als ich den den Service einfach mal in Visual Studio mit view browser geöffnet hab. Man muss um in der Silverlight application den Service bekannt zu machen den Service erstmal zugänglich machen. Also die web.config um diese Zeilen erweitern
      <location path="MeinService.asmx">
        <system.web>
          <authorization>
            <allow users="?"/>
          </authorization>
        </system.web>
      </location>

    Nun steht der auch zur Verfügung.
    Und es klappt auch alles so wie gedacht.
    Bis zu diesen Punkt, es fehlt noch das einbinden der MasterPage, und automatischen aktualisieren der Seite.
    Falls jemand dazu weiter weiß kann er sich ja Melden.
    Ich sag bescheid wenn ich dies geschaft hab

    MFG
  •  11-15-2011, 15:12 223026 Antwort zu 223025

    AW: MasterPage und Aktualisierung einer xaml Datei

    Failur3:

    Bis zu diesen Punkt, es fehlt noch das einbinden der MasterPage, und automatischen aktualisieren der Seite.

    Für alle die nicht wissen wie das Automatische Updaten funktioniert. Hier ein Lösung mit Timer von Microsoft ;-)
    http://msdn.microsoft.com/de-de/library/cc189084%28VS.95%29.aspx

    Nun fehlt nur noch das Integrieren in eine MasterPage
  •  11-17-2011, 10:02 223053 Antwort zu 223026

    AW: MasterPage und Aktualisierung einer xaml Datei

    Hi,

    Failur3:

    Nun fehlt nur noch das Integrieren in eine MasterPage

    ich kann das nicht so ganz nachvollziehen. Wenn die Deklaration der Master und der ContentPage stimmt, sollte es kein Problem sein, das Silverlight Control in beiden Seiten einzubinden.

    Schau doch bitte mal in den HTML Quelltext, der letztendlich im Browser ankommt. Ist der der <object ...> Tag noch vorhanden?


    --
    Gruß, Stefan Falz
    Microsoft MVP - Visual Developer ASP/ASP.NET
    ASP.NET Consulting, Development, Coaching

    ASP.NET Zone - Leitfaden für gute Postings

    Xtopia 2008 - Gewinnspiel / Expression Studio und Xtopia Eintrittskarten zu gewinnen
  •  11-17-2011, 11:25 223059 Antwort zu 223053

    AW: MasterPage und Aktualisierung einer xaml Datei

    Guten Morgen Stefan,

    Dank deiner Nachricht habe ich beim Antworten einen "Fehler" gefunden. IE7 war installiert, unter IE8 läuft es so wie es soll.

    Nur unter Firefox 8.0 läuft es nicht.
    <body>
       <div id="silverlightControlHost0">
           <object data="data:application/x-silverlight-2," height="600" type="application/x-silverlight-2" width="900">
                 <param name="source" value="Layout/ClientBin/Debug/Layout1.xap" />
                 <param name="onError" value="onSilverlightError" />
                 <param name="background" value="white" />
                 <param name="minRuntimeVersion" value="3.0.40818.0" />
                 <param name="autoUpgrade" value="true" />
                      <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40818.0" style="text-decoration: none">
                           <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style: none" />
                      </a>
          </object>
          <iframe id="I1" name="I1" style="visibility: hidden; height: 0px; width: 0px; border: 0px">
          </iframe>
      </div>
    </body>

    Der Codeschnipsel ist aus der Code Ansicht des Firefox kopiert (nur ein wenig lesbarer gemacht), beim öffnen merkt man auch das object ist da. 
    Der platz height="600" width="900" wird ausgefüllt ist leider nur weiß, genauso wie das normale aspx SeitenLayout
    Das gedachte Layout wird nicht angezeigt.
    Die Layout1TestPage.aspx wird auch ohne Probleme unter Firefox 8.0 geladen.
    Also dürfte eine Einstellung unter Firefox geändert werden?
  •  11-17-2011, 11:35 223060 Antwort zu 223059

    AW: MasterPage und Aktualisierung einer xaml Datei

    Hi,
    Failur3:

    <param name="source" value="Layout/ClientBin/Debug/Layout1.xap" />

    kann es sein, dass, ausgehend von der aufgerufenen Seite im Browser (also bspw. http://server/Verzeichnis/datei.aspx) der Pfad zur XAP Datei falsch ist? In der Regel liegt der ClientBin Ordner eigentlich im Root der Anwendung. Prüf das mal.


    --
    Gruß, Stefan Falz
    Microsoft MVP - Visual Developer ASP/ASP.NET
    ASP.NET Consulting, Development, Coaching

    ASP.NET Zone - Leitfaden für gute Postings

    Xtopia 2008 - Gewinnspiel / Expression Studio und Xtopia Eintrittskarten zu gewinnen
  •  11-17-2011, 11:48 223061 Antwort zu 223060

    AW: MasterPage und Aktualisierung einer xaml Datei

    Das liegt dort, hat mich auch selbst verwundert. das es unter ein debug verzeichnis liegt.
    Sollte das am besten noch geändert werden?
    Wie gesagt der selbe Code Funktioniert im Internet Explorer 8.0,
    Aber Im Firefox nicht.
  •  11-21-2011, 11:48 223092 Antwort zu 223061

    AW: MasterPage und Aktualisierung einer xaml Datei

    Das Problem ist gelöst, d.h. es Funktioniert. Nur habe ich nicht wirklich was geändert?!
    Ich habe ein Paar Änderungen in der xaml Datei vorgenommen (alle ToolTips rausgenommen). Diese werden nun per Code Behind erstellt.
    Es wurde:
    Rectangle[] rec =new Rectangle[]
    {
           //...namen der Rectangle
    };
    for (int i=0;i<rec.Length;i++)
    {
         //hier die bearbeitung
    }

    Durch

    foreach (UIElement rec in LayoutRoot.Children)
    {
        if (rec is Rectangle)
        {
            //hier die bearbeitung
        }
    }

    Ersetzt.

    Meine Idee woran das liegt, könnte der Login sein.
    Wenn man über den IE auf die entsprechende Seite gehen will, ist diese dafür zugelassen, die Silverlight application nicht bzw wurde nicht eingetragen. Müsste man diese noch hinzufügen?

    Aber sonst läuft es nun auch über den Firefox

    MFG



  •  11-25-2011, 8:54 223137 Antwort zu 223092

    AW: MasterPage und Aktualisierung einer xaml Datei

    Das Problem scheint gelöst zu sein.
    Es ist ein ganz Triviales, wie schon gedacht lag es am Login.
    Das es ja sonst Funktioniert hat. Also wenn man die Silverlight anwendung auch für unregestrierte user freigeben will, darf man nicht vergessen die Entsprechende Datei freizugeben. Oder den Ordner, falls in den alles drin ist was man freigeben will.

    Die Datei ist bei mir z.B. "Layout1.xap". Freigeben tut man diese in der web.config mit folgenden Code
      <location path="Layout">
        <system.web>
          <authorization>
            <allow users="?"/>
          </authorization>
        </system.web>
      </location>

    Layout steht bei mir für den Ordner die ich freigebe.

    Wenn nur alle Lösungen so trivial wären.
  •  11-25-2011, 18:24 223143 Antwort zu 223137

    AW: MasterPage und Aktualisierung einer xaml Datei

    Hi,
    Failur3:

    Es ist ein ganz Triviales, wie schon gedacht lag es am Login.
    Das es ja sonst Funktioniert hat. Also wenn man die Silverlight anwendung auch für unregestrierte user freigeben will, darf man nicht vergessen die Entsprechende Datei freizugeben. Oder den Ordner, falls in den alles drin ist was man freigeben will.

    Danke für die Lösung. Interessant ist das IMHO unter anderem aus dem Grund, dass das unterschiedliche Verhalten zwischen IE und Firefox dann wohl in der automatischen Anmeldung des IE mit seinem Windows Login zu suchen ist.

    War/ist die Anwendung derzeit noch auf deinem lokalen Rechner?


    --
    Gruß, Stefan Falz
    Microsoft MVP - Visual Developer ASP/ASP.NET
    ASP.NET Consulting, Development, Coaching

    ASP.NET Zone - Leitfaden für gute Postings

    Xtopia 2008 - Gewinnspiel / Expression Studio und Xtopia Eintrittskarten zu gewinnen
  •  11-30-2011, 16:08 223163 Antwort zu 223143

    AW: MasterPage und Aktualisierung einer xaml Datei

    Stefan Falz:
    Hi,
    War/ist die Anwendung derzeit noch auf deinem lokalen Rechner?

    Sie ist derzeit noch auf den Lokalen Rechner.

    Ich habe nun noch eine Frage zu diesen Thema.
    Ich hatte 2 Projekte (ASP.NET Projekt und Silverlight Projekt). Bei dieser Variante war der Service im ASP.NET Projekt mit eingebaut.
    Nun wollte ich den aus den Projekt raushaben und ein eigenes WCF Projekt anlegen. Damit sich der Service nicht innerhalb des ASP.NET Projektes befindet. Ich habe einige Probleme beim einbinden auf den IIS. Bzw hauptsächlich ist es ein Problem das der Service anscheinend nicht gefunden wird. Zumindestens für den Anfang sieht es danach aus.
    Ist es überhaupt möglich den Service ausserhalb der Anwendung in der gleichen Solution laufen zu lassen?
    Also das ein Service ausserhalb der Anwendung funktioniert das muss möglich sein. (Siehe google amazon etc)
    So wie ich das nachgelesen hatte muss der Service auf den gleichen Port laufen wie das ASP Projekt.
    Aber Visual Studio 2010 ändert den Port immer automatisch, auch wenn man automatisches auswählen des Portes ausschaltet.
    Nun habe ich auch nachgelesen das man aus sicherheitsgründen den Service ausserhalb des Projektes laufen lassen sollte (Leider ohne richtige begründung).
    Also habe ich nach den Wissen was ich mir nun angeeignet habe ein großes Problem, weil der Port immer verstellt wird.
    Zumindestens ist dies beim Debuggen so. Und wr schonmal mit Hochsprachen Programmiert hat der weiß das man ohne einen Debugger es manchmal gleich sein lassen kann ;-).
    Ich wollte die Anwendung erstmal Lokal testen bevor ich auf den Server gehe...
    Kurz vor den ersten Tests mit den IIS wurde ich dank dieses fehlers wieder hier hin zurückgeworfen.


    Hatte jemand schonmal das Problem?
  •  01-03-2012, 11:44 223494 Antwort zu 223163

    AW: MasterPage und Aktualisierung einer xaml Datei

    Ich habe eine sehr interessante Sache über FireFox und Silverlight herrausgefunden...

         <object data="data:application/x-silverlight-2," type="application/x-silverlight-2"
                width="100%" height="100%">
                <param name="source" value="ClientBin/EineSilverlightApp.xap" />
                <param name="onError" value="onSilverlightError" />
                <param name="background" value="white" />
                <param name="minRuntimeVersion" value="4.0.50826.0" />
                <param name="autoUpgrade" value="true" />
                <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0" style="text-decoration: none">
                    <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight"
                        style="border-style:none" />
                </a>
            </object>

    Wenn ich dieses Object nun in eine MasterPage eingebunden habe, hat dies unter dem IE Funktioniert. Bei FireFox wollte er nichts laden.

    Also nach dem try and error Prinzip gesucht.
    und was ich gefunden habe war folgendes, wenn man nur die Parameter width und height auf abolute werte in Pixel nimmt also:
    [...]
    width="600px" height="800px"
    [...]

    oder ähnliches. Dann Funktioniert es auch mit FireFox.
    FireFox kann anscheinend die angaben in prozent% nicht verarbeiten..

    MFG
    und frohes neues Jahr allen
  •  01-03-2012, 13:48 223496 Antwort zu 223494

    AW: MasterPage und Aktualisierung einer xaml Datei

    Failur3:
    Ich habe eine sehr interessante Sache über FireFox und Silverlight herrausgefunden...
    FireFox kann anscheinend die angaben in prozent% nicht verarbeiten...

    Scheint ein bekanntes Problem zu sein:
    http://www.primordialcode.com/index.php/2008/11/06/silverlight-plugin-height-percentage-problem-firefox/
    http://codebetter.com/petervanooijen/2009/01/27/firefox-and-the-100-div-revisited/
    http://codebetter.com/petervanooijen/2008/12/18/silverlight-firefox-and-100/



    Gruß

    Stack Overflow profile for Tim at Stack Overflow, Q&A for professional and enthusiast programmers
Als RSS Feed in XML ansehen
Powered by Community Server (Commercial Edition)