Laden...
Avatar #avatar-2711.jpg
1nf1n1ty myCSharp.de - Member
Software Engineer Dabei seit 02.07.2007 286 Beiträge
Benutzerbeschreibung

Forenbeiträge von 1nf1n1ty Ingesamt 286 Beiträge

19.08.2021 - 07:54 Uhr

Hallo ihr zwei,

grml... wieso bin ich nicht auf die Idee gekommen bei github zu suchen? Vielen Dank für den Fund, das hilft mir weiter. Danke auch für den Hinweis mit der Bitmaskierung, war mir garnicht mehr so präsent, da ich normalerweise wenig mit Netzwerken in der Form zu tun habe.

Viele Grüße

18.08.2021 - 19:24 Uhr

Hallo zusammen,

ich bin auf der Suche nach einer Library, die in der Lage ist mir für eine Netzadresse (z.B. 10.0.15.0/24) eine Liste aller möglichen IP-Adressen zurückzugeben.

Das Beispiel hat grundsätzlich ja 256 mögliche Adressen. Davon geht 10.0.15.0 an das Netzwerk und 10.0.15.255 wäre die Broadcast-Adresse. Damit bleiben 254 Adressen übrig.

Ich möchte gerne eine Liste/Array von diesen Adressen haben, also: 10.0.15.1, 10.0.15.2, ... 10.0.15.254 als string oder anderes Objekt.

Ich habe bereits die Lib IPNetwork2 gefunden, die liefert mir aber leider nicht das, was ich brauche (oder ich bin blind).

Muss ich das selbst bauen oder gibt es dafür vielleicht schon etwas cooles?

Vielen Dank und viele Grüße

02.12.2020 - 12:07 Uhr

Die ReportEngine ist die (gute) alte Crystal Reports Engine.

Ich habe in der Tat deinen Vorschlag (eigene Applikation) umgesetzt. .NET Core bietet zwar den Ansatz auf COM zuzugreifen, aber es hatte bei meinen Tests (und ich habe wirklich noch viel versucht) nicht funktioniert. Das COM nun aber absolut tot sein soll war mir so nicht bewusst, da ja erst die Unterstützung dafür in .NET Core Einzug erhalten hatte. Ich habe in der Vergangenheit schon einiges mit COM gemacht und das hatte bisher eigentlich immer funktioniert.

Wie dem auch sei: den Aufruf des neuen Tools habe ich nun soweit gekapselt, dass es eine Klasse zur Unterstützung der Ansteuerung des Tools gibt. Sie ruft das Tool im Hintergrund mit entsprechenden Parametern auf. Das Tool muss dann zwar mit ausgeliefert werden, ist dann aber so. Es funktioniert so jedenfalls super und es ist ja nicht als langfristige Lösung geplant. Für die Übergangsphase reicht das so erstmal.

Vielen Dank für eure Impulse.

30.11.2020 - 15:23 Uhr

Hallo T-Virus,

ja, mit dem COM-Ansatz erkauft man sich die Abhängigkeit zum .NET Framework, das ist richtig. Es existiert jedoch bereits eine .NET Core Anwendung, die als Rahmen fungiert. Es ging nun lediglich darum damit auch Reports zu erzeugen. Da es schon einige sind erschien der Ansatz das über COM zu wrappen als einfacherere/schnellere Lösung um zumindest kurzfristig zu starten ohne an den Grundlagen der Reports zuviel rumzubasteln (und ggf. etwas kaputt zu machen).

Mittelfristig wäre der Weg eher den alten Kram abzulösen und auf neue Füße zu stellen, das wiederum ist aber dann ein größeres Projekt.

Viele Grüße

30.11.2020 - 13:30 Uhr

Moin zusammen,

ich hoffe der Titel und das Forum passen, sonst bitte verschieben. Ich habe eine .NET Core 3 Anwendung, die von einer .NET Framework 4.5 Anwendung portiert wird. Ursprünglich wurde da eine Reporting-Engine verwendet, die es unter .NET Core nun nicht mehr gibt. Es handelt sich aber um sehr viele Reports, die nach Möglichkeit nicht alle neu erstellt werden sollen.

Mein Erster Ansatz war mit dem Windows Compatibility Pack zu arbeiten. Den musste ich leider canceln, weil die Reportkomponente Verweise auf System.Windows.Forms und System.Web enthält. Diese kann ich in einem .NET Core-Projekt leider nicht hinzufügen.

Meine Idee war nun den Zugriff über COM möglich zu machen. D.h. .NET Core macht einen COM-Call auf eine .NET Framework Assembly, welche wiederum den Report erzeugt und ein PDF in ein Verzeichnis legt und ein Ergebnis zurückmeldet. Mein Problem befindet sich beim Aufrufen des .NET Frameworks.

Ich habe die Assembly sichtbar gemacht (ComVisible(true)), alles mit GUIDs und ProgID versehen wie man das eben macht. Anschließend habe ich die Assembly referenziert. Der Aufruf der Methode klappt auch, allerdings bekomme ich dann eine FileNotFoundException. Verwiesen wird in dieser auf System.Configuration.ConfigurationManager aus dem .NET Framework.

Und da hänge ich jetzt fest. Ich brauche nun eine Idee warum die Assemblies nicht geladen werden. Muss ich mich in dem Falle selbst darum kümmern? Wenn ja: Wie stelle ich das an? Ich muss ja an jede Abhängigkeit denken.

Vielen Dank für die Hilfe

30.06.2016 - 10:09 Uhr

Hallo zusammen,

ich habe bei meiner Recherche nicht das gefunden, was ich gesucht habe. OWIN war bisher bei dem was ich programmiere kein Thema und ich hatte damit immer etwas anderes in Verbindung gebracht. Ich wollte außerdem lieber jemanden fragen, der sich mehr mit sowas auskennt. Einfach drauf los irgendwas zu programmieren, was es vielleicht schon gibt oder am Ende in einer Sackgasse zu landen finde ich nicht so klug.

@Khalid: Danke für das Stichwort OWIN. Das sieht super aus.

29.06.2016 - 23:56 Uhr

Hallo zusammen,

danke schonmal für die Antworten. Das der Dienst am besten weiss was er tut ist mir schon klar, ich habe aber nicht genau ausgeführt was ich eigentlich möchte. Die Informationen Start, Pause und Stopped geben mir nicht die Informationen die ich wissen will. Was ich wissen will ist:

  • Was tut er derzeit
  • letzten 10 Aktionen inkl. Timestamp
  • aufgetretene Fehler
  • etc.

Über ein Objekt kann ich ja jederzeit Informationen darüber speichern, was er gerade tut bzw. die letzten Aktionen sichern. Mir ging es primär darum wie ich diese dann vom Dienst abrufen kann. Das ganze soll so einfach/billig/wenig Aufwand wie möglich erzeugen. Das der Windowsdienst z.B. mit Hilfe einer REST-Schnittstelle abgerufen werden kann klingt recht interessant und einfach. Ich würde gerne mehr darüber wissen. Könntest du vielleicht ein kleines Beispiel dazu posten? Gibt es dabei bestimmte Dinge zu beachten oder ggf. Einschränkungen?

Abgeholt werden diese Informationen von einem externen Monitoring-System, das diese Informationen zyklisch abfragt und auswertet. Über REST sollte das mit dem Monitoring funktionieren.

Vielen Dank und viele Grüße

24.06.2016 - 14:07 Uhr

Hallo zusammen,

ich habe einen Windows-Dienst geschrieben, der verschiedene Operationen durchführt. Dieser Dienst loggt dabei die ganze Zeit mit was er tut und kann dies bei Bedarf in eine Logdatei schreiben. Diesen Dienst würde ich gerne nun an ein Monitoring anschließen und wollte dafür am Dienst etwas bereitstellen, was mir sagt ob:

  1. Der Dienst läuft (Das kann man über den Servicestatus ja abfragen)
  2. Was er gerade tut.

Letzterer Punkt ist der, von dem ich nicht weiss wie man das realisieren kann. Ist es möglich den Status des Dienstes auf irgendeinerweise abzufragen?

Ich bin für jede Hilfe dankbar.

Viele Grüße

19.06.2015 - 10:06 Uhr

Hallo zusammen,

danke schonmal für die Antworten. Es soll schon als C# Programm sein, da ich die Daten ggf. noch anpassen muss (in andere Formate bringen, etc.). Es handelt sich auch um mehrere Dateien, die in bestimmer Reihenfolge importiert werden müssen wegen ggf. vorhandener Referenzen.

Da es hier um nächtlich ein paar Millionen Datensätze geht wäre zu lange sowas wie 12 Stunden. Mit 1-2 Stunden kann ich leben. Wichtig ist mir, dass ich zu jedem Datensatz, der nicht imporitert wurde, eine detailierte Fehlermeldung bekomme. Diese Informationen schreibe ich zusammen mit der Zeile in eine neue Datei. Was auch immer das Problem ist, Contraint verletzt, Daten abgeschnitten, etc.: Ich möchte genau wissen was das Problem war.

Das BulkCopy schaue ich mir mal näher an, das scheint vielversprechend zu sein. Weitere Vorschläge nehme ich auch gerne an.

Vielen Dank schonmal und viele Grüße

18.06.2015 - 19:08 Uhr

verwendetes Datenbanksystem: SQL Server 2008

Hallo zusammen,

ich möchte in mehreren Datenbanktabellen große Datenmengen importieren. Die Daten stehen in CSV-Dateien, die eingelesen werden. Je nachdem ob ein Datensatz vorhanden ist oder nicht möchte ich ein Insert oder Update machen. In einigen Tabellen möchte ich auch nur ein Insert machen und im Fehlerfall dies ggf. in eine Fehlerdatei schreiben mit der genauen Meldung (z.B. Insert wegen Contraint CNST_XY fehlgeschlagen).

Das Ganze wird ein Importlauf, der jede Nacht einmal laufen muss. Wir reden hier von mehreren Millionen Datensätzen. Benutzt werden soll klassisch der SQLClient, also SqlAdapter oder son Kram. Das habe ich bisher nur für wenige Datensätze verwendet, nicht aber für solch riesige Mengen.

Was ist die beste/schnellste Methode Datensätze einzufügen und trotzdem gescheite Fehlermeldungen zu bekommen ohne das das Programm zu lange läuft?

Bin jeden Vorschlag dankbar.

Viele Grüße

05.09.2014 - 23:22 Uhr

Hallo zusammen,

in der Anwendung instanziiere ich eine neue View, indem ich meinem ContentControl als Content ein neues ViewModel zuweise. Die Animation selber sollte garnicht so aufwendig sein, wollte einen Grow oder Slide-Effekt haben. Definiert hatte ich Sie in der View. Folgender Link hat mir weitergeholfen, vielleicht hilft er dem nächsten ja ebenfalls:

http://www.codeproject.com/Articles/136786/Creating-an-Animated-ContentControl

05.09.2014 - 01:29 Uhr

Guten Abend,

ich habe folgedes Szenario und Problem:

Ich habe eine Anwendung, in dessen Fenster sich ein ContentControl befindet. Der Content wird über ein Binding auf ein ViewModel gesetzt. Das funktioniert über die sicher allseitsbekannte Methode mit den DataTemplates, die in den App.Resources gesetzt werden.

Nun ist es so, dass ich dem ContentContol gerne Animationen mitgeben möchte, sprich wenn der Benutzer das ViewModel ändert, dann möchte ich die Änderung visuell animieren. Dazu habe ich bereits in einer abgeleiteten Klasse Animationen definiert, da ich den Übergang an einer zentralen Stelle haben wollte. Leider habe ich nun festgestellt, dass ich über die Content-Eigenschaft des ContentControls garkeine Instanz der View habe, sondern durch das Binding eine Instanz des ViewModels.

Intern muss es dort einen Mechanismus geben, der es schafft durch das Binding im zugewiesenen DataTemplate die passende View zu finden bzw. eine Instanz dafür zu initalisieren.

Genau diese Instanz möchte ich jetzt anhand des ViewModels auf der Content-Eigenschaft haben.

Wie komme ich an diese ran?

Vielen Dank für die Hilfe.

27.08.2013 - 11:37 Uhr

Ok ich habe das Problem nun doch gefunden. Meine Lösung:

Ich habe für die 2. Gruppe einen Unterbericht erstellt und diesem die gleiche Datenquelle gegeben. Probleme hatte ich dabei noch weil Crystal Reports die Datensätze nicht richtig zusammengefasst hat. Crystal Reports hat anscheinend ein Problem damit Daten zusammenzufassen, wenn diese nicht sortiert sind. Nachdem ich entsprechende Gruppen hinzugefügt, die Unterberichtsverknüpfung nochmal geprüft habe und, ganz wichtig, eine Sortierung angegeben habe, ließen sich die Daten auch so wie ich es erwartet habe zusammenfassen. Hierfür musste ich dann lediglich noch die "Laufenden Summen"-Felder benutzen.

Ich danke allen für die Hilfe.

Viele Grüße

26.08.2013 - 13:31 Uhr

Hallo Jamikus,

nach Gruppe 2 würde dann noch eine Zusammenfassung über alles kommen. Danach wäre der Bericht fertig.

Viele Grüße

26.08.2013 - 09:36 Uhr

Hallo t2t,

vielen Dank für deine Antwort. Bezwecken damit will ich das ich eine DataSource im Bericht nehmen kann und die aber mehrfach durchlaufe um Ergebnisse darzustellen. Der obere Teil davon ist quasi eine detailierte Darstellung. Der untere Teil wird aus den selben Daten erzeugt, mit dem Unterschied das diese nicht so detailiert sind, sondern eine andere Gruppierung aufweisen und dadurch auch Summen bilden sollen. In der unteren Tabelle ist in Gruppe 2 von ehemals Kategorie A und B (aus der oberen Tabelle) zusammengefasst und als Summe über die Gruppe aufgeführt.

Ich glaube ohne Unterbericht lässt sich das auch nicht lösen, oder? Ich habe bisher leider zuwenig mit Crystal Reports gemacht und muss mich darin noch etwas einarbeiten.

23.08.2013 - 11:36 Uhr

Crystal Report mit SQL Server als SQL-DataSource

Hallo zusammen,

ich verwende Crystal Reports um einen Bericht zu erstellen. Hierbei habe ich das Problem, dass ich erst eine Gruppierung nach einer Kategorie und dann nach einer Gruppe habe, welcher quasi die Summe der ersten Gruppe abbildet, nur anders gruppiert. Ich versuch es mal zu verdeutlichen:


                                                                   Element
Gruppe 1

Kategorie      Gruppe                 Betrag 1                   Betrag 2
---------------------------------------------------------------------------------------------------
     A            1                      50                        60
                  2                      25                        30 
------------------------------------------------------------------------------------
    SUMME                                75                        90


     B            2                      15                        20
                  3                       5                        55
------------------------------------------------------------------------------------
    SUMME                                20                        75


Gruppe 2

               Gruppe                 Betrag 1                   Betrag 2
----------------------------------------------------------------------------------------------------
                  1                       50                        60
                  2                       40                        50
                  3                        5                        55
----------------------------------------------------------------------------------------------------
    SUMME                                 95                       165

So in etwa soll das Ganze aussehen. Leider habe ich nun das Problem das ich im Gruppenfuß direkt bei der letzten Gruppe bin. Ich meine mich zu erinnern das es da irgendeine Formel oder Einstellung oder sowas gab womit man den RowCounter, also da wo er sich in der Gruppe befindet, irgendwie zurücksetzen konnte, damit er quasi die Datensätze nochmal durchläuft.

Leider komme ich gerade nicht mehr darauf wie das ging. Kann mir hier jemand nachhelfen?

Vielen Dank dafür.

24.01.2012 - 19:26 Uhr

verwendetes Datenbanksystem: keins

Hallo zusammen,

ich hoffe ich habe die richtige Kategorie erwischt. Für einen Export in eine Exceldatei verwende ich das OpenXML SDK 2.0 von MS. Ich hätte nun gerne, dass in meinem Export die erste Zeile fixiert ist, wenn ich also scrollen muss, soll die erste Zeile trotzdem immer sichtbar sein. Ich habe bereits über MSDN und google danach gesucht aber leider nichts passendes gefunden 😦 In Excel sind es eigentlich 2 Klicks, ich hätte aber gern das mein Export das von Haus aus macht.

Jemand eine Ahnung wie man das anstellt?

Viele Grüße

17.11.2011 - 18:33 Uhr

Hallo zusammen,

in meiner Silverlightanwendung möchte ich Reports aufrufen, welche über eine ASPX-Seite generiert werden. Dazu werden beim Aufruf der Seite POST-Parameter übertragen. Diese Seite soll in einem neuen Browsertab geöffnet werden.

Ich habe das in Silverlight nun versucht mit der "HiddenForm"-Methode zu realisieren. Dazu füge ich der ASPX-Seite, die die SL-Anwendung hostet, ein verstecktes FORM-Element hinzu und erstelle darin für jeden Parameter ein Inputfeld, um dieses FORM dann über submit abzusenden.

Leider bekomme ich dabei seit neustem eine Fehlermeldung, die mich nicht so richtig weiterbringt:


InvalidOperationException: Fehler bei Invoke: submit

Folgender Code wurde verwendet. Ich habe diesen bereits etwas modifiziert, da ich dachte vielleicht müsse das Element FORM schon auf der ASPX-Seite vorhanden sein. Leider war dem nicht so:


            HtmlElement hiddenForm = HtmlPage.Document.GetElementById("reportForm");

            //Form Eigenschaften setzen
            hiddenForm.SetProperty("action", reportUrl.ToString()); //eingestellte Report URL
            hiddenForm.SetProperty("method", "post"); //POST Methode verwenden
            hiddenForm.SetProperty("target", "_blank"); //in neuem Tab öffnen
            hiddenForm.SetStyleAttribute("visibility", "collapse"); //unsichtbar für Benutzer

            int i = 1;
            //Inputfelder für Reportparaketer erzeugen
            foreach (ReportParameter param in _paramsList)
            {
                HtmlElement hiddenInput = HtmlPage.Document.CreateElement(string.Format("input{0}", i.ToString()));
                hiddenInput.SetProperty("type", "hidden");
                hiddenInput.SetProperty("name", param.Name);
                hiddenInput.SetProperty("value", param.Value);
                hiddenForm.AppendChild(hiddenInput);
                i++;
            }

            hiddenForm.Invoke("submit");

Hat jemand eine Idee warum dies jetzt nicht mehr geht? Zudem ist die Idee mit der hiddenForm irgendwie... naja. Gibts hier nicht was cooleres?

Viele Grüße

€: Problem war ein Popupblocker, der verhindert hat das ein neues Fenster geöffnet wurde. Nachdem ich eine Ausnahmeregel hinzugefügt habe funktionierte es wie es soll.

16.11.2011 - 15:41 Uhr

Hi MrSparkle,

sowas ähnliches habe ich mir leider schon gedacht 😦

Natürlich, ich kann einen ähnlichen Effekt erhalten, wenn ich stattdessen ein schwarzes, halbtransparentes Rechteck zeichne um den Hintergrund auszublenden und ist dann superschnell. Ich habs derzeit auch erstmal so realisiert, sieht aber leider nicht so cool aus wie ein Bluteffekt.

Viele Grüße.

16.11.2011 - 14:10 Uhr

Hallo zusammen,

ich habe eine SL Anwendung, bei der es manchmal vorkommen kann, das eine Operation ein wenig dauert. Damit der Benutzer das mitbekommt, wird ein kleines Fenster mit einer unendlich laufenen Progressbar angezeigt (das Fenster hat zudem noch einen DropShadow). Zusätzlich habe ich noch ein Rechteck, welches über die Gesamte ansicht gelegt wird und dafür sorgt, dass man während einer Operation keine Eingaben tätigen kann. Das Ganze ist in einem BusyIndicator Control drin.

Beim Laden der Anwendung wird zunächst einiges an Daten geladen, was unheimlich schnell geht (unter einer Sekunde). Wenn ich nun aber zusätzlich im Hauptgrid der Anwendung einen BlurEffekt hinzupacke, damit die Ansicht leicht verschwimmt und somit der Fokus des Benutzers auf den Ladebalken geht, dauert das Laden deutlich länger (bis zu 10 Sekunden). Laut Fiddler gehen die Daten sehr schnell über das Netz und werden auch genausoschnell verarbeitet. Wenn ich diesen Effekt auskommentiere, dann rennt es wieder wie geschmiert.

Zieht dieser Effekt die Performance wirklich dermaßen nach unten oder muss man hier etwas anders machen? Ich hatte zuerst gedacht, dass man ggf. für das Rechteck zum Verdecken einen BlurEffekt braucht, das hat aber ja nur eine Farbe, deshalb gibt es nichts zu "bluren".

Hat vielleicht jemand eine Idee was ich falsch mache?

So habe ich den Effekt eingebaut. Er bezieht sich auf das Hauptgrid. Der Converter macht nix weiter als Radius bei IsBusy auf 3 sonst auf 0 zu setzen.


<Grid.Effect>
    <BlurEffect Radius="{Binding IsBusy, Converter={StaticResource BlurConverter}}"/>
</Grid.Effect>

Vielen Dank für die Hilfe.

10.11.2011 - 09:12 Uhr

Hallo gfoidl,

Bei änderung der Breite soll der Teil für die Darstellung des Inhalts größer werden. Die Höhe spielt (erstmal) für mich keine Rolle, da diese fest sein wird. Ich habe mal eine Skizze gemacht die verdeutlicht was ich meine.

Das mit der ViewBox hatte ich ganz vergessen. Ich dachte die gibt/gab es nur unter WPF, aber das könnte ich ja dann nochmal ausprobieren.

Vielen Dank schonmal.

09.11.2011 - 17:36 Uhr

Hallo zusammen,

ich brauche einen Button, der die Form eines Pfeils hat (Fünfeck), so wie man es manchmal bei solchen Brotkrumennavigationen findet. Ich habe dies nun mit Hilfe von Styles und eines Pfads gelöst, habe nun aber das Problem dass der Neigungswinkel des Pfeils immer gleich sein soll, die Breite des gesamten Buttons aber wiederum abhängig von der festgelegten Breite sein soll und demnach ein Teil der Path-Elemente ja breiter werden müsste.

Ich kann mir gerade nicht vorstellen, dass das über ein Binding funktionieren kann, da Point von LineSegment hier Koordinaten verlangt.

Folgendes habe ich bereits fertig:


<Path Canvas.Left="0" Canvas.Top="0" Stroke="blue" StrokeLineJoin="Round" StrokeThickness="2" Fill="LightBlue" Opacity="0.5">						
    <Path.Data>
        <PathGeometry>
            <PathFigure StartPoint="0,0" IsClosed="true">
                <LineSegment Point="79,0" />
                <LineSegment Point="90,15"/>
                <LineSegment Point="79,30"/>
                <LineSegment Point="0,30"/>
            </PathFigure>
	</PathGeometry>
    </Path.Data>
</Path>

Die Gesamtbreite des Buttons war beim Entwurf 90 Pixel. Vergrößere ich den Button auf 100 Pixel ist der Button zwar 100 Pixel Breit, gezeichnet werden aber nur die ersten 90.

Wie löst man sowas? Ich bin für Hilfe sehr dankbar.

Viele Grüße
1nf1n1ty

18.05.2011 - 15:04 Uhr

Hallo zusammen,

ich habe einen Webservice, der verschiedene Daten liefert und speichert.

Auf meinem lokalem Testsystem läuft der Service in einer IIS 7.5 Umgebung und problemlos. Wenn der Service jedoch auf dem Server läuft (IIS 7.0) werden bei Sonderzeichen merkwürdige Dinge gemacht. Aus dem &, was normalerweise wegen SOAP/XML in "&amp;" konvertiert wird, entsteht nun ein "&amp;amp;" Das sorgt dafür, dass jedes Mal wenn Daten gespeichert werden, die ein & enthalten, Datenmüll entsteht.

Ich habe schon diverse Einstellungen in beiden IIS Versionen bezüglich des charsets verglichen. Hier steht eigentlich alles auf UTF-8. Die web.configs sind identisch. Vergleiche ich 2 völlig gleiche Requests im Fiddler (lokal und prod.) lässt sich ebenfalls kein Unterschied feststellen.

Weiss jemand hier was das Problem ist? Für Hilfe wäre ich sehr dankbar.

Viele Grüße
1nf1n1ty

06.05.2011 - 15:45 Uhr

Hallo zusammen,

ich muss eine Dateieinlesen und verschiendene Werte in eine Datenbank importieren. Dabei kommt es leider vor, dass einige Werte in exponentieller Schreibweise geschrieben sind wie z.B. "9.90E+07". Kann man das mit .NET Hausmitteln irgendwie in einen Integer umwandeln? Ein Convert bringt hier eine FormatException. Was ich mir noch vorstellen könnte ist diese Abzufangen und daraus einen double zu erstellen, der wiederum in einen Integer umgewandelt wird, ist aber irgendwie bisschen hakelig find ich.

Hat jemand da eine andere/bessere Idee?

Vielen Dank für die Hilfe

02.02.2011 - 13:51 Uhr

Hallo zusammen,

ich habe eine Listbox auf einer Seite und ein DataTemplate um zu Informationen aus einem Objekt dort anzuzeigen. Über ein DataBinding auf SelectedItem greife ich im ViewModel das aktuell selektierte Element ab. Das funktioniert auch ohne Probleme, jedoch nur wenn ich die Tastatur benutze und z.B. mit Cursor hoch/runter navigiere.

Klicke ich mit der Maus auf der Listbox um ein Element zu markieren passiert nichts. Das SelectionChanged-Event wurde nicht aufgerufen, woraus ich schließe, dass ein Mausklick hier nicht richtig funktioniert.

Hat einer eine Idee wie man das Problem lösen kann?

Vielen Dank für die Hilfe.

€: Ich war gestern wohl blind. Es kann natürlich auch nicht funktionieren, wenn man im DataTemplate noch ein ListBoxItem definiert. Nach entfernen dieses Dings läuft es nun wie es soll.

27.01.2011 - 18:51 Uhr

Hallo zusammen,

ich verwende SL 4 mit einem WCF Service und Binary Message Encoding. Ich habe nun das Problem, dass der Service eine ASP.NET Session verwendet und abfragt, ob diese bereits existiert. Normalerweise verwendete mal bei den ASMX Services dafür ja immer den CookieContainer, des man einmal zugewiesen hat und der dann bei jedem Request wieder die mitgesendet wurde. Der WCF Proxy hat zwar auch den CookieContainer, scheinbar funktioniert dieser aber nicht. Wenn ich einen CookieContainer zuweise, dann bekomme ich eine Meldung beim Start:


CookieContainer wird nicht unterstützt, wenn ein browserbasierter HTTP-Stapel verwendet wird. Cookies werden durch den Browser automatisch verwaltet. Wechseln Sie zu einem anderen HTTP-Stapel, beispielsweise unter Verwendung von WebRequest.RegisterPrefix mit WebRequestCreator.ClientHttp, um Cookies manuell zu steuern.

Mache ich hier irgendwas falsch oder ist es nicht möglich das in Kombi mit BinaryMessageEncoding zu verwenden?

Die MSDN Doku sagt diesbezüglich jedenfalls nix (oder ich bin blind -.-). siehe:

http://msdn.microsoft.com/de-de/library/dd560704%28v=vs.95%29.aspx
und
http://msdn.microsoft.com/de-de/library/dd540828%28v=vs.95%29.aspx

Weiss jemand Rat?

Vielen Dank für die Hilfe.

17.01.2011 - 11:15 Uhr

Hi,

Code dazu gibt es noch nicht. Ich habe mir nur beim Entwickeln diese Gedanken gemacht und mich gefragt ob das gut ist. Vorgestellt habe ichs mir etwa so:


//PSeudoCode aufs wesentliche beschränkt

//SubViewModel:

//Liste, gebunden
public Observable<DisplayData> DisplayDataList {get; set;}

//Event, das für die Suche aboniert werden muss
public event RequestSearchEvent;

//Suchmethode, wird von Benutzer über Button angestoßen
public void SearchData() 
{
    //ggf. noch irgendwas machen

    //Event feuern
    if(RequestSearchEvent != null)
        RequestSearchEvent(this, new SearchParameter { Name="meine Suche", Option=1});
}


//MainViewModel:

//Feld des SubViewModels
private SubViewModel subViewModel;

//Ctor
public MainViewModel 
{
    subViewModel.RequestSearchEvent += SubViewModelRequestSearchEvent;
}

//Eventmethode vom SubViewModel
public void SubViewModelRequestSearchEvent(object sender, SearchEventArgs e) 
{
    webserviceClient.GetDataAsync(e.Name, e.Addition);
}

//Completed Handler vom WebService
public void GetDataCompleted(object sender, GetDataEventArgs e)
{
    subViewModel.DisplayData = e.Result;
}


Das war meine Idee. Ich zweifle aber aus oben genannten Gründen immernoch daran, das dies eine gängige/gute Lösung ist.

14.01.2011 - 21:03 Uhr

Hi und vielen Dank schonmal.


Ich wüsste zunächst mal auch nix anneres. Höchstens, ob es wirklich das SubModel sein muß mit der Suchfunktion, oder ob die nicht ins MainModel gehört. 

In dem Fall muss es wohl so sein. Der eigentliche Serviceaufruf (laden der Daten) ist natürlich im MainViewModel untergebracht, aber die Anforderung dafür gibt der Benutzer (Parameter festlegen und über Button die Anforderung stellen). Meine Idee war hier ein RequestSearchEvent, das als Eventparameter die in der SubView eingestellen Parameter beinhaltet und zur Suche dienen. Diese könnten dann im MainViewModel ausgewertet und an den Service weitergeleitet werden, der dann eine Liste zurückschickt. Diese würde ich dann an das SubViewModel weiterreichen.

Dadurch habe ich aber ja wiederum eine Abhängigkeit drin, bzw. muss mich darauf verlassen, dass der jenige, der die Funktion verwendet das Event 1. aboniert und dann 2. die Daten in die richtige Liste ins SubViewModel packt. Deswegen habe ich mich gefragt ob das so das übliche vorgehen ist oder das hier besser gelöst werden kann.

Viele Grüße

14.01.2011 - 16:50 Uhr

Hallo zusammen,

ich habe nun mein erstes Projekt mit MVVM und habe diesbezüglich nun ein paar Fragen.

Ich habe eine MainView mit ViewModel, die einige Funktionen enthält (Toolbar, WebService Instanz/Connection) und zwei weitere (ich nenn sie mal) SubViews (ebenfalls mit je einem SubViewModel), die dazu dienen die Daten entsprechend darzustellen. Bei einer der beiden SubViews gibt es eine integrierte Suchfunktion, d.h. da diese SubView die Instanz des WebServices ja nicht kennt, müsste ich nun der MainView mitteilen, dass es Daten benötigt.

  1. Frage:
    Es ist ja gängige Praxis, dass es ein MainViewModel gibt, dass die SubViewModels kennt. Wäre es dann in Ordnung (oder ist es üblich), wenn ich im MainView Model das Result einer Anfrage direkt in das SubViewModel zu reichen? Durch das DataBinding werden die Daten dann ja sowieso dargestellt. Oder sollte man in MainViewModel ebenfalls eine Liste des gleichen Typ haben und dem SubViewModel quasi nur eine Referenz darauf mitteilen?

  2. Frage:
    SubViewModel2 hat eine Suchfunktion und fordert von MainViewModel Daten an. Meine erste Idee war es im SubViewModel ein Event anzubieten, welches das MainViewModel aboniert. Dort könnte man dann den Servicerequest machen und die zurückgekommenden Daten so wie in Frage 1 beschrieben an das ViewModel weiterreichen. Ich frage mich nun auch hier ob dies so üblich ist oder ob es einen anderen/besseren Weg hierfür gibt?

Vielen Dank für die Antworten und viele Grüße!

12.01.2011 - 11:11 Uhr

Hallo zusammen,

ich habe eine Problem mit Visual Studio 2010. Ich habe ein Silverlightprojekt, in dem im im XAML diverse Namespaces aus dem Projekt als Resourcen einbinde. Dieses Projekt liegt auf einem Netzwerklaufwerk/Share. Leider ist VS irgendwie nicht in der Lage die Resourcen aufzulösen und zu finden. Ich kann das Projekt jedoch ohne Probleme kompilieren und starten.

Fehlermeldung:


Der resx:MyResource-Typ wurde nicht gefunden. Alle Assemblyverweise müssen vorhanden sein, und alle Assemblys, auf die verwiesen wird, müssen erstellt worden sein.

Ursache hierfür ist, dass es auf dem Netzwerklaufwerk liegt. Eine Kopie auf ein lokales Laufwerk brachte hier keinerlei Fehler mehr und der VS Designer konnte wieder verwendet werden.

Ich wollte deshalb mal Fragen ob es mittlerweile vielleicht eine Lösung dafür gibt. Ich habe hier im Forum schon die CASPOL Einstellungen gefunden. Woanders habe ich eine Einstellung in der "Config" des Studios gefunden, wo man "loadFromRemoteSource" setzen musste, damit Projekte vom Netzwerk geöffnet werden können. Ersteres brachte leider keinen Erfolg. Letzteres erlaubte mir zumindest Projekte vom Share zu öffnen, jedoch mit dem o.g. Problem im Designer.

Weiss jemand was hier getan werden muss, damit es funktioniert?

Vielen Dank und viele Grüße.

20.12.2010 - 16:34 Uhr

Ich habe nun dort, wo ich zuvor hardcodiert das DataGrid das dargestellt werden soll, ein ContentControl eingefügt. Dem wollte ich nun als DataTemplate das ausgelagerte Datagrid mitgeben, damit er dieses zur Darstellung bekommt. Das wäre prinzipiell genau das, was ich möchte, nämlich das der Benutzer festlegen kann wie der Inhalt dargestellt werden soll. Leider Bleibt die Anzeige hierbei leider komplett leer.

Kann jemand nochmal darüber schauen?

Noch ein paar Hinweise:
QuickSearchControl ist abgeleitet von AutoCompleteBox.
PopupTemplate ist eine DependencyProperty, die ich in QuickSearchControl eingefügt habe und da soll dann das Template für die Darstellung hinterlegt werden.

Im Popuptemplate weise ich dgTest zu, da hier das Template hinterlegt ist.


<DataTemplate x:Key="dgTest" TargetType="sdk:DataGrid">
     <sdk:DataGrid>
         <sdk:DataGrid.Columns>
             <sdk:DataGridTextColumn Header="1" />
             <sdk:DataGridTextColumn Header="2" />
         </sdk:DataGrid.Columns>
     </sdk:DataGrid>
</DataTemplate>


<Style x:Key="QuickSearchTemplate" TargetType="uc:QuickSearchControl">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="uc:QuickSearchControl">
                <Grid Margin="{TemplateBinding Padding}">
                    <TextBox IsTabStop="True" x:Name="Text" Style="{TemplateBinding TextBoxStyle}" Margin="0"/>
                    <Popup x:Name="Popup">
                        <Border x:Name="PopupBorder" HorizontalAlignment="Stretch" Opacity="0.0" BorderThickness="0" CornerRadius="3" Background="#11000000">
                            <Border.RenderTransform>
                                <TranslateTransform X="2" Y="2"/>
                            </Border.RenderTransform>
                            <Border HorizontalAlignment="Stretch" BorderThickness="0" CornerRadius="3" Background="#11000000">
                                <Border.RenderTransform>
                                    <TransformGroup>
                                        <ScaleTransform/>
                                        <SkewTransform/>
                                        <RotateTransform/>
                                        <TranslateTransform X="-1" Y="-1"/>
                                    </TransformGroup>
                                </Border.RenderTransform>
                                <Border HorizontalAlignment="Stretch" Opacity="1.0" Padding="1" BorderThickness="1" BorderBrush="{TemplateBinding BorderBrush}" CornerRadius="3">
                                    <Border.RenderTransform>
                                        <TransformGroup>
                                            <ScaleTransform/>
                                            <SkewTransform/>
                                            <RotateTransform/>
                                            <TranslateTransform X="-2" Y="-2"/>
                                        </TransformGroup>
                                    </Border.RenderTransform>
                                    <Border.Background>
                                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                            <GradientStop Color="#FFDDDDDD" Offset="0"/>
                                            <GradientStop Color="#AADDDDDD" Offset="1"/>
                                        </LinearGradientBrush>
                                    </Border.Background>
                                                
                                    <!-- Hier war vorher das DataGrid, damit hats hardcodiert geklappt -->
                                    <ContentControl ContentTemplate="{TemplateBinding PopupTemplate}" />
                                                
                                </Border>
                            </Border>
                        </Border>
                    </Popup>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Vielen Dank.

[gelöst]
Ich habe nun nochmal mit Hilfe des Links von dir und ein paar kleinen Änderungen des Problem gelöst. Statt des ContentControls ist nun direkt das DataGrid an der Stelle. Über eine DP mache ich eine Eigenschaft für die Spalten verfügbar, damit ich diese im XAML definieren kann. Über eine Style-Eigenschaft an meinem Control konnte ich diese Definition dann intern zuweisen.

Vielen Dank nochmal für den Link. Der hat mir weitergeholfen und mich in die richtige Richtung gestubst. Nachdem ich nochmal ein paar Grundlagen nachgelesen habe ist mir klar geworden, dass ich da wohl etwas falsch verstanden habe.

17.12.2010 - 18:30 Uhr

Danke schonmal für den Link.
Ich habe das Ding nun entsprechend umgebaut, jedoch komme ich immernoch nicht richtig weiter. Vermutlich habe ich nicht genau genug geschrieben was ich möchte, deshalb nun etwas konkreter.

Ich benutze eine AutoCompleteBox von Silverlight um mit Hilfe eines Templates aus dieser ein Suchcontrol zu bauen. Prinzipiell möchte ich das Ding so generisch machen, dass der Benutzer einfach ein Template mit den benötigten Spalten generiert (im XAML) und eine Suchmethode von beliebiger Stelle (WCF Service) übergibt. Ersteres ist genau das Problem das ich jetzt habe. Ich habe das ControlTemplate der Autocompletebox überschrieben und dort im Popup nun das DataGrid reingesetzt. Dort möchte ich nun das Template mit den benötigten Spalten zuweisen, weiss aber leider nicht genau wie. Ich habe mit nun wie im Link von dir beschrieben eine DependencyProperty erstellt, die die Spalten entgegen nimmt. Diese werden auch an der richtigen Stelle geladen und erzeugt. Ich weiss nun allerdings nicht genau was gemacht werden muss, damit die Spalten an anderer Stelle gelesen werden können.

Ich könnte mir vorstellen, dass die AutoCompleteBox eine DP, ich nenn sie mal "PopupGridColumnTemplate" benötigt, die die Spalten für das DataGrid intern durchreicht. Diese würden dann mit dem bereits implementieren Teil aus dem Link das Control aufbauen.

Die Definition der Spalten soll dabei über ein (Data?)Template in den Ressourcen erfolgen.

Kurz und knapp: Ich definiere die Spalten und bestimmte die Darstellung meiner Daten. Über die ItemsSource der ACBox bekomme ich ja bereits meine Daten, kann also direkt die benötigten Properties binden.

17.12.2010 - 16:34 Uhr

Hi,

danke schonmal. Ok, das erklärt natürlich warum ich dann keine Spalten habe. Ich hatte das so verstanden, das hier das aussehen des Controls geändert werden kann. Ich konnte beim ControlTemplate auch die übergeordnete ItemsSource Property setzen und habe zumindest meine Ergebnisse gesehen. Ich dachte das wäre der richtige Weg, jedoch lag ich da wohl falsch.

Wie müsste denn ein Style dazu aussehen, damit dieser funktioniert?

17.12.2010 - 16:13 Uhr

Hallo zusammen,

für ein selbstgebautes Control verwende ich ein DataGrid und möchte dabei dem Entwickler die Wahl lassen welche Spalten das DataGrid haben soll. Mein Ziel war es, dass der Entwickler dann in der Template-Eigenschaft des Controls sein DataGrid Template reinpackt und die Tabelle dann so aussieht, wie er es definiert hat.

Das funktioniert soweit auch gut, jedoch verwende ich in der Klasse meines Controls verschiedene Funktionen um mit den Columns zu arbeiten. Wenn ich dem DataGrid nun ein Template zuweise ist die Anzahl meiner Spalten komischerweise immer 0, obwohl ich die Spalten sehen kann.

Das ganze lässt sich auch ohne Implementierung in meinem Control nachvollziehen.
Beispiel:


<ControlTemplate x:Key="dgTest" TargetType="sdk:DataGrid">
     <sdk:DataGrid>
         <sdk:DataGrid.Columns>
             <sdk:DataGridTextColumn Header="1" />
             <sdk:DataGridTextColumn Header="2" />
         </sdk:DataGrid.Columns>
     </sdk:DataGrid>
</ControlTemplate>

<sdk:DataGrid Template="{StaticResource dgTest}" x:Name="dg"/>

Woran liegt das bzw. was muss ich tun, damit ich wieder auf meine Columns zugreifen kann?

Vielen Dank für die Hilfe.

21.11.2010 - 13:29 Uhr

Hallo und vielen Dank schonmal für die Antworten.

Ich verwende FF 3.6.12, Silverlight 4.0.
Das Problem tritt sowohl mit Debugger (Firebug) als auch ohne auf.
Das mit der ID habe ich auch gefunden in einem anderen Internetbeitrag. Trotzdem vielen Dank dafür. Die Ursache bleibt die gleiche: Firefox hängt sich auf.

Was ich nun aber bei weiteren Tests gemerkt habe ist, dass es scheinbar nur bei der Alertfunktion passiert. Ist zwar nicht weiter schlimm, da die Alertfunktion nur für meine ersten Tests war, trotzdem versteh ich nicht warum sich FF dann weghängt. Daten über JavaScript woanders hinzuschieben funktioniert problemlos im IE und FF.

@gfoidl: Hat bei dir die Javascript Alertmethode funktioniert?

Viele Grüße
Marco

19.11.2010 - 17:01 Uhr

Hallo zusammen,

ich habe eine Silverlightapplikation, die über Javascript kommuniziert. Dabei werden sowohl Silverlight methoden aus JS als auch JS Methoden aus Silverlight aufgerufen.

Beim Aufruf einer JS Methode aus Silverlight im Firefox sehe ich dann zwar die (in meinem Testfall) Alert Box, jedoch hängt sich danach der Browser komplett auf und kann nur noch über den Taskmanager beendet werden. Unter IE und Chrome funktioniert es allerdings problemlos.

Hat jemand schonmal das gleiche versucht und eine Lösung für dieses Problem?

Quelle für Beispiel:
Communicating between JavaScript & Silverlight

Für Hilfe bin ich wirklich dankbar!

Viele Grüße
Marco

27.07.2010 - 18:17 Uhr

Hallo zusammen,

ich habe auf einem UserControl ein webBrowserControl gebaut, indem eine HTML Seite dargestellt wird. Wenn ich nun Tabulator drücke, dann passiert leider nichts. Normalerweise müsste er ja dann im Browser z.B. auf das nächste Element springen, wenn dort z.B. mehrere Inputfelder definiert sind. Wenn man die Seite direkt aufruft funktioniert das Ganze schon.

Gibt es eine Möglichkeit das drücken der Tabulatortase oder besser generell das Drücken beliebiger Tasten(kombinationen) an das Browsersteuerelement weiterzuleiten?

Vielen Dank für die Hilfe.

1nf1n1ty

06.05.2010 - 18:14 Uhr

Hallo zusammen,

ich habe ein DatePicker in einer DataGrid-Zeile zusammen mit vielen anderen Spalten. Dabei fällt auf, dass das Datum des DatePickers viel zu hoch dargestellt wird, die Texte also nicht auf einer Linie sind. Ich würde dies gern ändern, weiss aber leider nicht wie. Ich habe schon versucht das über VerticalAlignment zu regeln, das brachte aber nicht den gewünschten Effekt.

Kann mir da jemand weiterhelfen?

Vielen Dank für die Hilfe

1nf1n1ty

14.04.2010 - 09:46 Uhr

Hat denn niemand eine Idee? 😕

12.04.2010 - 16:33 Uhr

Hallo Zusammen,

ich habe ein WPF DataGrid verwendet, um bestimmte Informationen einer ObservableCollection darzustellen. Ich habe zusätzlich noch ein Tab verwendet, mit dem man nun quasi einen Filter auf die Collection macht. Wenn man nun einen neues Objekt hinzufügt, ist dieses in der Liste drin, das DataGrid scheint dies jedoch nicht mitzubekommen.

Ich habe in dem Objekt bereits INotifyPropertyChanged implementiert. Wenn ich eine Eigenschaft eines bestehenden Objektes ändere, aktualisiert daraufhin auch sofort die Liste, wenn ich die Zeile verlasse, also so wie es sein soll.

Warum passiert dies jedoch nicht bei neuen Objekten? Hab ich irgendwas vergessen? Kann mir da jemand einen Tipp geben wo ich mal suchen kann?

Vielen Dank und viele Grüße

1nf1n1ty

20.01.2010 - 15:34 Uhr

Also, ich habe mein Testprojekt nun etwas angepasst. Die Textbox befindet sich nun auf einem Seperaten UserControl. Wenn ich nun auf den Button Klicke und die Eigenschaft des UserControls ändere, aktualisert zwar der Wert, die Textbox ist aber immernoch aktiv.


//UserControl
public partial class UserControl1 : UserControl
    {
        public UserControl1()
        {
            InitializeComponent();
            this.DataContext = this;
        }

        public static readonly DependencyProperty LockedProperty = DependencyProperty.Register("Locked", typeof(bool), typeof(Window1), new PropertyMetadata(false));

        public bool Locked
        {
            get { return (bool)this.GetValue(LockedProperty); }
            set { this.SetValue(LockedProperty, value); }
        }
    }

//Window
public partial class Window1 : Window
    {
        UserControl1 _uc;

        public Window1()
        {
            InitializeComponent();
            _uc = new UserControl1();
            this.sptest.Children.Add(_uc); //StackPanel, auf dem das UC dargestellt wird
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            _uc.Locked = !_uc.Locked;
        }
    }

XAML des UserControls


<TextBox Margin="5,5,12,0" Name="textBox1" IsEnabled="{Binding Path=Locked, UpdateSourceTrigger=PropertyChanged}" Height="28" VerticalAlignment="Top" />

Vielen Dank für die Hilfe

20.01.2010 - 14:03 Uhr

DataContext ist noch nicht gesetzt.
Füge
DataContext = this;
im Konstruktor nach dem InitializeComponent(); hinzu.

Genau das hatte mir gefehlt! Vielen Dank!

Aber dein Code ist nicht besonders gut. Im Window solltest du nicht INotifyPropertyChanged implementieren. Ist völlig unnötig, weil das Window ein DependecyObjekt ist und du damit Dependency Properties, statt normaler, benutzen kannst.

Wie muss ich es denn stattdessen machen? Wir teile ich der TextBox dann mit, dass sich die Eigenschaft geändert hat?

Vielen Dank und viele Grüße

20.01.2010 - 12:28 Uhr

Hallo zusammen,

ich versuche die IsEnabled Eigenschaft an eine Property in meiner Klasse zu binden und ggf. bei Änderung das Control zu deaktivieren. Leider passiert dabei nichts, INotifyPropertyChanged wurde jedoch implementiert. Im Binding des XAML habe ich den UpdateSourceTrigger ebenfalls gesetzt. Ich habe dazu mal ein TextProjekt angelegt.


public partial class Window1 : Window, INotifyPropertyChanged
    {
        private bool _locked;

        public bool Locked
        {
            get { return _locked; }
            set
            {
                _locked = value;
                NotifyPropertyChanged("Locked");
            }
        }

        public Window1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            if (_locked)
                Locked = false;
            else
                Locked = true;

            FocusManager.SetFocusedElement(this, (Button)sender); 
        }

        #region INotifyPropertyChanged Member

        public event PropertyChangedEventHandler PropertyChanged;

        private void NotifyPropertyChanged(string info)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(info));
            }
        }

        #endregion
    }

das XAML sieht wie folgt aus:


<TextBox Margin="70,110,39,110" Name="textBox1" IsEnabled="{Binding Path=Locked, UpdateSourceTrigger=PropertyChanged}" />

Fehlt hier noch irgendwas?

Vielen Dank für die Hilfe.

06.11.2009 - 13:42 Uhr

Hallo,

im WebService loppe ich über alle Objekte und führe verschiedene Prüfungen durch, jedoch keine aufwändigen Sachen. Danach speichere ich das Objekt in der Datenbank ab und schicke sobald das erledigt ist das Ergebnis der Operation an den Client zurück.

Deine Idee mit den Chunks klingt gut, dazu müsste man aber (vermutlich) einiges an Aufwand reinstecken, damit das funktioniert. Ich habe nix gegen den Aufwand selbst, es fehlt allerdings die Zeit hierfür.

Die Idee mit dem Dummy lohnt sich glaube ich nicht. Wenn ich die Methode auf dem Testsystem aufrufe, erhalte ich bei 1400 Objekten nach ca. 1-2 Sekunden bereits die Antwort vom Server. Wenn ich das System mit einer schnellen Internetanbindung aufrufe geht es genauso schnell, daher denke ich nicht, dass die Verarbeitung das Problem ist.

Viele Grüße

1nf1n1ty

06.11.2009 - 12:29 Uhr

Hallo zusammen,

vielen Dank schonmal für die Tipps! Der Timeout lag bei 120 Sekunden (im IIS). Ich habe diesen mal etwas vergrößert. MaxRequestBytes habe ich bisher noch nicht gefunden, werde ich aber suchen.

Danach werde ich das Ganze mal ausprobieren.

Wenn Ihr noch weitere Lösungsansätze oder Ideen habt würde ich mich sehr freuen.

Vielen Dank schonmal.

1nf1n1ty

05.11.2009 - 15:13 Uhr

Hallo zusammen,

ich habe einen WebService der sich sehr merkwürdig verhält. Und zwar mache ich mit diesem folgendes:

Ich schicke über SOAP eine Liste von vielen Objekten. Daraus wird ein etwa 1,7 MB großes XML Dokument. Wenn man nun eine langsame Verbindung hat, dann dauert das ganze recht lange (2-3 Minuten). Nach dieser Zeit bricht der Vorgang jedoch hab. Wenn ich mir das im Fiddler anschaue, dann sehe ich, dass die Objekte vollständig übertragen worden sind, der Service jedoch dazu keine Antwort gesendet hat (0 Byte kamen zurück).

Ich habe vermutet, dass vielleicht die Session des Web-Services abgelaufen ist und über httpRuntime in der web.config den executionTimeout Wert erhöht. Das hat leider nichts gebracht. Auch wenn der Wertt auf 10 Minuten erhöht wird, wird nach 3 Minuten einfach nichts zurückgesendet. Leider bin ich da etwas ratlos und wollte fragen ob jemand vielleicht noch eine Idee hat woran das liegen könnte.

Vielen Dank für die Hilfe.

1nf1n1ty

05.11.2009 - 10:34 Uhr

Hallo zusammen,

also meine Anwendung verwendet ein paar Animationen, aber nix aufwändiges. Eher vergrößern/verkleinern von Elementen, sowie ausblenden. Controls verwende ich bis auf das WPF DataGrid/DatePicker eigentlich nur die Standardcontrols (also Textbox, Checkbox, ComboBox, etc.). Zusätzlich verwende ich um Bereiche auszublenden und Positionieren Panels (Stackpanel, Dockpanel). Die Anwendung lädt und speichert Daten in einer Datenbank. Dazu wird eine spezielle Klasse benötigt.

Ich könnte mir vorstellen, dass die WPF Toolkit Controls, sowie die Datenbankanbindung Probleme in einer Silverlightanwendung machen könnten, da es ein WPF-Toolkit (reine Vermutung, Silverlight ist ja eher eine abgespeckte Version von WPF) und die Browseranwendung in einer Sandbox läuft (Problematisch bei direkter Datenbankanbindung).

Viele Grüße

1nf1n1ty

03.11.2009 - 17:54 Uhr

Hallo zusammen,

ich habe eine WPF Anwendung geschrieben und mich würde nun interessieren, was man alles machen müsste, damit diese 1:1 (also mit genau dem Aussehen und der Funktionalität) im Browser läuft. Ich frage das weil ich bisher mit Silverlight keinerlei Erfahrung habe. Es geht mir dabei darum um zu sehen was alles an Anpassungen nötig wäre. Was mich auch interessieren würde ist was zwischen den beiden anders ist und ob ihr bei einem Ähnlichen vorhaben auf Probleme mit Silverlight gestoßen seid.

Vielen Dank für die Hilfe.

1nf1n1ty

05.10.2009 - 12:27 Uhr

Hallo,

ich habe das auch bereits getestet. Leider hatte ich damit keinen Erfolg 😦
Kann es sein das man im IIS evtl. noch gewisse Einstellungen vornehmen muss?

Viele Grüße
1nf1n1ty

€: Gäbe es nich noch die Möglichkeit jede Anfrage über einen HttpHandler zu schleifen? Dort könnte ich dann den StatusCode setzen und den restlichen Response einfach durchschleifen.

01.10.2009 - 16:39 Uhr

Hallo zusammen,

ich habe einen Web Service, der unter bestimmten Vorraussetzungen Exceptions wirft. Wenn diese an den Aufrufer geschickt werden haben diese ja den HTTP Code 500. Das möchte ich gerne ändern und dafür sorgen, dass jede Exception die versendet wird den Statuscode 200 hat, damit die Fehlermeldung am zuständigen Front-End (was bei HTTP Response mit Statuscode 500 die Nachricht nicht dekodieren kann) auswerten zu können und darauf zu reagieren.

Dafür habe ich in der Global.asax unter Application_EndRequest folgendes stehen:


if (Context.Response.StatusCode == 500 || Context.Response.StatusCode == 300)
{
    Context.Response.StatusCode = 200;
}

Scheinbar funktioniert das allerdings nicht immer, da es immernoch Situationen gibt, in dem der Statuscode 500 übergeben wird und das Front-End kann damit nix anfangen und gibt einen SOAP Decode Error zurück.

Leider habe ich keinerlei Ansatzpunkt oder Idee mehr um das zu ändern und bitte deshalb um Rat.

Vielen Dank für die Hilfe!

1nf1n1ty