Laden...
I
InSiDeR myCSharp.de - Member
Azubi Dortmund Dabei seit 06.05.2011 95 Beiträge
Benutzerbeschreibung

Forenbeiträge von InSiDeR Ingesamt 95 Beiträge

06.04.2016 - 15:55 Uhr

Danke. Entschuldige bitte.

@Sclot: Ich schau mir das mal an, Danke.

06.04.2016 - 14:55 Uhr

Hallo zusammen,

wusste nicht, wo ich dieses Thema posten sollte. Es hat nicht direkt was mit C# zutun sondern eher um Visual Studio 2013.

Früher konnte ich unter Visual Studio 2010 (glaube ich) noch eine Setup erstellen, da war alles in einer Setup.exe vorhanden. Diese habe ich verteilt und alles wurde installiert.

Nun gibt es ein neues Setup-Produkt: InstallShield

Habe soweit alles vorbereitet und vollendet. Am Ende erhalte ich jedoch mehrere Installationsdateien, welche ich zu einem Image formen muss z.B. für DVD-5.

Allerdings ist dies nicht so brauchbar, wenn ich nur die setup.exe verteilen möchte. Ich muss immer den Ordner und alle dazugehörigen Dateien mitschicken, das musste ich früher nicht.

Nun meine Frage: Ist es möglich, eine Setup zu erstellen, die eben alles beinhaltet und ich lediglich diese Setup.exe versenden muss, der Anwender installiert dies und alle Ressourcen werden entsprechend mitinstalliert?

Vielen Dank für eure Hilfe 😃

05.02.2016 - 16:55 Uhr

Danke

Dein Link klappt nicht:
Google

  1. Das ist ein Fehler.

Die angeforderte URL wurde nicht auf diesem Server gefunden. Wir haben keine weiteren Informationen.

Aber nichts desto trotz, damit konnte ich es lösen, Vielen Dank!

Hat jemand noch eine Info bzgl. des "Verarbeitens" des Videos? Kann man das noch prüfen?

05.02.2016 - 16:08 Uhr

Danke für deine Antwort.
Wie schaue ich denn in so eine Api dann nach? Weil ich mich damit noch nicht so auskenne. Ich verwende sie, weiss aber nicht wo ich nachschauen muss um sie ggf. zu verändern 😦

Danke

05.02.2016 - 15:08 Uhr

Hallo zusammen,

ich habe ein Tool geschrieben womit ich Videos direkt auf meinen Youtube Kanal hochladen kann.

2 Dinge:

  1. Wenn ich z.B. ein 111 MB Video hochlade, aktualisiert der die ProgressBar nur alle 10MB.
void videosInsertRequest_ProgressChanged(Google.Apis.Upload.IUploadProgress progress)
        {
            switch (progress.Status)
            {
case UploadStatus.Uploading:
                    this.BeginInvoke((Action)(() =>
                    {
                        progressBarStatus.Maximum = (int)sizeOfVideo;
                        int progressPercentage = (int)progress.BytesSent;
                        progressBarStatus.Value = progressPercentage;
                        lblProzent.Text = ConvertBytesToMegabytes(progressPercentage).ToString("0.00") + " MB von " + ConvertBytesToMegabytes((int)sizeOfVideo).ToString("0.00") + " MB hochgeladen";
                        lblProzent.Update();

                    }));
                    break;
             }
        }

Kriegt man das irgendwie hin, dass der nach jedem 1% aktualisiert? Ist halt sonst doof. Der Anwender denkt, es passiert nichts.

Außerdem ist mir aufgefallen, wenn ich z.B. ein 20MB Video hochlade, springt er einmal hoch auf 50% (10MB) und dann auf die 100%.

Würd es gern kleiner stellen aber weiß nicht wo.

  1. Krieg ich aus der YouTube Api irgendwie noch den Status, dass das Video noch am verarbeiten ist? Damals in der v2 Api ging das, da habe ich dann mitgeteilt das das Video hochgeladen wurde, aber noch am verarbeiten ist. Erst wenn die Verarbeitung abgeschlossen ist, ging es weiter.
    Finde hierzu leider auch nichts in der Doku.

Vielen Dank für eure Hilfe

09.03.2012 - 16:36 Uhr

Ich habe das Problem, dass wenn ich auf Abspielen drücke, der immer eine swf runterladen will, statt das Video in meiner Windows Forms (Webbrowser) anzuzeigen.

Woran liegt das? Geb ich die URL so im Browser ein spielt er das Video auch ab und lädt es nicht runter...

09.03.2012 - 10:50 Uhr

Hallo zusammen,
habe vor ein kleines Spaß Tool zu basteln, dieses via Netzwerk auf einen fremden PC zu schieben und dort auszuführen.

Wenn ich es nun anklicke, wird es logischerweise auf meinem PC ausgeführt. Wie kann ich es steuern, dass es auf SEINEM PC ausgeführt wird?

09.03.2012 - 10:10 Uhr

Hallo herbivore,
daran hab ich auch schon gedacht, nur finde ich diese leider nicht.

Normalerweise wir dies ja bei der Flash Installation mit abgelegt. Plötzlich ist diese nicht mehr vorhanden. Sehr ärgerlich.

//edit: Werde dann einfach die Alternative mit dem WebBrowser Tool nehmen. dort einfach den YouTube Link eintragen und fertig. Da kann der Anwender sogar auf Vollbild umstellen.

09.03.2012 - 10:00 Uhr

Keiner ne Ahnung?

Ebenfalls an meinem Firmenlaptop ist die Datei nicht mehr zu finden. Gibt es plötzlich keine Flash Objecte mehr für Windows Forms, oder wie?

Mein Programm stand kurz vor der Vollendung und wenn nun kein Flash Object nicht mehr verfügbar ist muss ich mich anch einer Alternative umsehen, Videos aus Youtube in Windows Forms abzuspielen.

07.03.2012 - 09:07 Uhr

@herbivore: Das kann ich vorher leider nicht prüfen. Ich stelle vorher etwas ein, dann wird irgendwann später durchlaufen. In meiner Einstellung kann ich nur prüfen, ob wirklich ein Pfad angegeben wurde.

@ujr: Danke für den Tipp. Hab ich ausgebessert.

//edit: Suche ein Pattern, wo ich einen Pfad prüfe, der so ausschaut:

\Top of Information\Verwaltete Ordner\Verarbeitet\

//edit2: hab folgendes gebastelt:

string pattern = @"(\{1})([\])([^/:?<>""|])$";

und das klappt 😃 doppeltes backslash ist vorne nicht mehr erlaubt.

07.03.2012 - 07:04 Uhr

Vielen Dank für deine Antwort, Abt.

Daran hab ich garnicht gedacht. Werde mal nachschauen und berichten.

Für meinen UNC Pfad nehme ich:

public static bool IsUNCPath(string input)
        {
            string pattern = @"^(([a-zA-Z]\:)|(\\))(\\{1}|((\\{1})[^\\]([^/:*?<>""|]*))+)$";
            Regex reg = new Regex(pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase);

            if (reg.IsMatch(input))
            {
                return true;
            }
            else
            {
                return false;
            }

        }

Funktioniert auch einwandfrei.

Mein normaler Pfad kann aber auch nur ein Backslash vorne enthalten, statt zwingend zwei.

Wenn ich es anpasse auf folgenden:

@"^(([a-zA-Z]\:)|(\))(\{1}|((\{1})[^\\]([^/:*?<>""|]*))+)$";

kommt immer eine Fehlermeldung, dass nicht genügend )-Zeichen vorhanden sind.

06.03.2012 - 16:51 Uhr

Es geht darum, dass ich bei E-Mail-Anhängen entweder einen UNC-Pfad angebe oder bei der Verschiebung von E-Mails in einen Exchange Unterordner.

Bei meinem Exchange Unterordner kann einfach nur

\Ordner\Ordner\Ordner

stehen.

Bei dem UNC Pfad muss auch kein Laufwerksbuchstabe vorhanden sein. Dort speicher ich den E-Mail Anhang auf einem Netzlaufwerk.

Möchte nur sicher gehen, dass ich auch jeweils Pfade angegeben habe zwecks Fehleeingaben abfangen.

//edit hab mal was ausprobiert:

public static bool IsUNCPath(string input)
        {
            if (input.Trim().StartsWith("\\"+"\\"))
            {
                return true;
            }
            else
            {
                return false;
            }
        }

Damit funktioniert es. Netzlaufwerke fangen immer mit "\" an.

06.03.2012 - 16:40 Uhr

Hallo zusammen,
ich habe eine Textbox und gebe dort einen Pfad an, wo etwas gespeichert werden soll.

Wie prüfe ich nun, ob wirklich ein Pfad angegeben wurde?
Ob der Pfad existiert, interessiert micht nicht. Möchte einfach nur prüfen, ob wirklich ein Pfad angegeben wurde.

z.b. C:\blabla oder auch D:\Test\Zielort

Kann man da irgendwie etwas konvertieren oder so via try catch?

Danke für eure Hilfe

29.02.2012 - 17:04 Uhr

Hallo zusammen,
heute wollte ich mein Tool zu Ende schreiben, was gut funktioniert hat.

Heute öffne ich es und erhalte Fehlermeldungen bzgl. des Shockwave Flash Objects. Es würde nicht gefunden werden und ist auch in meiner Toolbox nicht mehr auswählbar. Wenn ich es neu einbinden möchte als COM Steuerelement, ist es nicht mehr da!

Die .dll ist nicht mehr im Ordner C:\Windows\System32\Macromed\Flash!

Was kann ich jetzt machen? Hab Flash bereits öfters deinstalliert und neu installiert! Einfach nicht auffindbar 😦

Ich bitte um Hilfe und danke vielmals.

24.02.2012 - 16:08 Uhr

Hallo zusammen,
würde gerne aus folgender Ausgabe:

"Sat, 7 Jan 2012 02:49:05 +0100"

folgende Ausgabe machen:

"07.01.12 - 02:49"

Natürlich variiert die 1. Ausgabe ständig. Ist nur ein Beispiel.

Folgedes hab ich ausprobiert:

date2 = listVal.Date.ToString("dd.MM.yy - HH:mm");

Klappt nur leider nicht.

Fehlermeldung:> Fehlermeldung:

1-Argument: Kann nicht von "string" in "System.IFormatProvider" konvertiert werden.

Woran könnte das liegen? Danke für eure Hilfe.

//edit: Hab es soweit so gesplittet, dass ich jetzt nurnoch einen String habe: "7 Jan 2012 02:49:05"... der muss jetzt noch konvertiert werden.

13.02.2012 - 19:18 Uhr

Problem: Bei mir klappt es. Wie soll ich da try catch ausprobieren, wenn alles funktioniert?

25.01.2012 - 22:08 Uhr

Vielen Dank für deine Antwort. Ich werde das mal mit try-catch ausprobieren und einfach mal meine Methoden damit umschließen.

Ich melde mich morgen nach erneuten Tests. Danke.

//edit: Was mir noch eingefallen ist: Habe vorhin beim Start des Programms die beiden Methoden auskommentiert und trotzdem hat es nicht gestartet. Bin echt gespannt woran es liegt...

25.01.2012 - 21:00 Uhr

Hallo zusammen,
habe ein Programm in Windows Forms erstellt und dazu ein Setup Projekt hinzugefügt. Alles ordnungsgemäß eingestellt und ausprobiert.

Klappt auf meinem PC (Windows 7) wunderbar. Hab das Programm umher geschickt und es kann an fremden Computern nicht geöffnet werden. Hatte erst mit .NET Framework 4.0 programmiert und da ging es bei einer Person.

Als ich dann mein Programm um eine E-Mail Abfrage eines Postfachs erweitert habe, ging es auch bei dieser Person nicht mehr. Nun habe ich auf .NET Framework 3.5 umgestellt und gemerkt, das es noch immer nicht funktioniert.

Liegt es nun wirklich an der E-Mail Abfrage?

Hier der Code meiner E-Mail Abfrage:

 public void ListMyEmails()
        {
            // Create a folder named "inbox" under current directory
            // to save the email retrieved.
            string curpath = Directory.GetCurrentDirectory();
            string mailbox = String.Format("{0}\\inbox", curpath);

            // If the folder is not existed, create it.
            if (!Directory.Exists(mailbox))
            {
                Directory.CreateDirectory(mailbox);
            }

            // Gmail IMAP4 server is "imap.gmail.com"
            MailServer oServer = new MailServer("imap.gmx.net",
                        "email", "passwort", ServerProtocol.Imap4);
            MailClient oClient = new MailClient("TryIt");

            // Set SSL connection,
            oServer.SSLConnection = true;

            // Set 993 IMAP4 port
            oServer.Port = 993;

            try
            {
                oClient.Connect(oServer);
                MailInfo[] infos = oClient.GetMailInfos();
                for (int i = 0; i < infos.Length; i++)
                {
                    MailInfo info = infos[i];

                    // Download email from GMail IMAP4 server
                    Mail oMail = oClient.GetMail(info);

                    DateTime datum = new DateTime();
                    datum = oMail.ReceivedDate;

                    //Datum
                    string datumAsString = datum.ToString("dd.MM.yy - HH:mm");

                    //Empfänger
                    string emailVon = oMail.From.ToString();

                    string[] splitEmailVon = emailVon.Split('"');
                    emailVon = splitEmailVon[1];

                    //Betreff
                    string betreff = oMail.Subject;

                    string[] splitBetreff = betreff.Split('(');
                    betreff = splitBetreff[0];

                    string eintrag = datumAsString + " - " + emailVon + " - " + betreff;

                    ListViewItem aFooItem = new ListViewItem(eintrag); //Parent item
                    ListViewItem.ListViewSubItem aSubFooItem1 = new ListViewItem.ListViewSubItem(aFooItem, oMail.TextBody); //Creating subitems for the parent item
                    aFooItem.SubItems.Add(aSubFooItem1); //Associating these subitems to the parent item
                    listViewEmails.Items.Add(aFooItem); //Adding the parent item to the listview control


                    // MessageBox.Show("Anzahl E-Mail: " + infos.Length + "\n\nEmpfangen am: " + datum + "\n\nEmpfangen von:\n" + oMail.From.ToString() + "\n\nBetreff:\n" + oMail.Subject + "\n\nNachricht:\n" + oMail.TextBody);

                    // Generate an email file name based on date time.
                    System.DateTime d = System.DateTime.Now;
                    System.Globalization.CultureInfo cur = new
                    System.Globalization.CultureInfo("de-DE");
                    string sdate = d.ToString("dd.MM.yy-HH.mm", cur);
                    string fileName = String.Format("{0}\\{1}{2}{3}.eml", mailbox, sdate, d.Millisecond.ToString("d3"), i);

                    // Save email to local disk
                    oMail.SaveAs(fileName, true);

                    // Mark email as deleted in GMail account.
                    //oClient.Delete(info);
                }

                // Quit and pure emails marked as deleted from Gmail IMAP4 server.
                oClient.Quit();
            }
            catch (Exception ep)
            {
                MessageBox.Show(ep.Message);
            }
        }

Diese wird bei Programmstart sofort ausgeführt und um entsprechenden Reiter gefüllt. Woran kann es nun liegen, dass das Programm auf fremden Computern nicht läuft?

Danke für eure Hilfe.

07.01.2012 - 02:03 Uhr

Ich nutze den backgroundWorker und dieser besitzt drei Methoden.

DoWork -> wird aufgerufen bei RunWorkerAsync()
ProgressChanged -> wird aufgerufen bei ReportProgress()
RunWorkerCompleted -> wird aufgerufen, wenn e.Result = ... is

eine andere hab ich nicht

05.01.2012 - 23:08 Uhr

Hallo zusammen,
ich finde einfach keine Methode, mit der ich einen gestarteten Upload abbrechen kann.

Ich führe meinen Upload in einen sepperaten Thread aus.
Man kann natürlich fälschlicher Weise ein falsches Video ausgewählt haben, was evtl. viel zu groß ist und somit zu lange dauert.

Lösung: Einfach Programm schließen -> Nicht elegant!

Ich möchte gerne beim Uploaden einen Button aktivieren lassen, mit dem ich den Uploadvorgang abbrechen kann.

Womit unterbreche ich nun also

Video uploadedVideo = request.Upload(newVideo);

???

Danke

05.01.2012 - 15:31 Uhr

Das kuriose ist:

Programm auf Heimrechner entwickelt.

Geöffnet auf Arbeitsplatznotebook: Die Buttons sind etwas größer und manche Controls verschoben. Es überlappen aber keine Controls.

Geöffnet auf Heimrechner von Freundin: Controls überlappen.

Hab also nun 3 verschiedene Anzeigen... echt komisch

04.01.2012 - 22:58 Uhr

Hallo zusammen,
habe zu Hause an meiner GUI gearbeitet. Öffne ich diese GUI nun auf meinem Arbeitsplatznotebook auf der Arbeit, sind teilweise die Buttons anders. Die Bilder in den Buttons liegen plötzlich unter den Texten und nicht mehr daneben.

Hab die GUI versendet und jemand berichtete, dass ein Textfeld über ein anderes Textfeld sieht (Captcha) und somit das Captcha nich gelesen werden kann.

Woran liegt das, dass sich die GUI bei anderen verschiebt? kann ich diese Controls nicht irgendwie befestigen das sie sich nicht verschieben?

danke für eure hilfe

03.01.2012 - 20:15 Uhr

Hallo zusammen,
ich lade via C# ein Youtube Video hoch und möchte asynchron dazu eine progressBar füllen mit den aktuellen %ten.

Hat jemand eine Idee, wie das funktioniert? Ich krieg das leider nicht gebacken -_-

folgendes hab ich probiert:

private ResumableUploader ru = null;

        private void EnsureRU()
        {
            this.ru = new ResumableUploader(25);
            this.ru.AsyncOperationProgress += new AsyncOperationProgressEventHandler(this.OnProgress);
        }

        private void OnProgress(object sender, AsyncOperationProgressEventArgs e)
        {
            progressBar.Value = e.ProgressPercentage;
            //lblProzent.Text = e.ProgressPercentage + "%";
            //lblProzent.Refresh();
        }

Die Methode EnsureRU(); rufe ich auf, bevor ich den Upload starte. Das Video lädt hoch, das Programm hängt sich allerdings auf bis der Upload fertig ist und die Progressbar bewegt sich kein Stück 😄

03.01.2012 - 19:50 Uhr

Ne ich hab die Lösung.

Hab die Referenzen nochmal entfernt und von der Google API übernommen. Dann ging es.

03.01.2012 - 19:19 Uhr

Hallo zusammen,
habe mir die Google und Youtube API gedownloadet und erfolgreich eingebunden.

Sie werden mir auch angezeigt und wenn ich nun folgende using Direktiven erstelle:

using Google.GData.Client;
using Google.GData.Extensions;
using Google.GData.Extensions.MediaRss;

Kommt beim Kompilieren folgender Fehler:

Fehlermeldung:
Fehler 1 Der Typ- oder Namespacename "Client" ist im Namespace "Google.GData" nicht vorhanden. (Fehlt ein Assemblyverweis?) Form.cs 16 20
Fehler 2 Der Typ- oder Namespacename "Extensions" ist im Namespace "Google.GData" nicht vorhanden. (Fehlt ein Assemblyverweis?) Form.cs 17 20
Fehler 3 Der Typ- oder Namespacename "Extensions" ist im Namespace "Google.GData" nicht vorhanden. (Fehlt ein Assemblyverweis?) Form.cs 18 20

und folgende Warnungen

Fehlermeldung:
Warnung 4 Die Assembly "Google.GData.Client, Version=1.7.0.25712, Culture=neutral, PublicKeyToken=04a59ca9b0273830, processorArchitecture=MSIL", auf die verwiesen wird, konnte nicht aufgelöst werden, da sie eine Abhängigkeit von "System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" aufweist (nicht im aktuellen Zielframework ".NETFramework,Version=v4.0,Profile=Client" enthalten). Entfernen Sie Verweise auf im Zielframework nicht enthaltene Assemblys, oder weisen Sie das Projekt neu zu.

Warnung 5 Die Assembly "Google.GData.Extensions, Version=1.7.0.25712, Culture=neutral, PublicKeyToken=0b4c5df2ebf20876, processorArchitecture=MSIL", auf die verwiesen wird, konnte nicht aufgelöst werden, da sie eine Abhängigkeit von "System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" aufweist (nicht im aktuellen Zielframework ".NETFramework,Version=v4.0,Profile=Client" enthalten). Entfernen Sie Verweise auf im Zielframework nicht enthaltene Assemblys, oder weisen Sie das Projekt neu zu

Ich verstehe das nicht. Ich hab die Verweise nochmal hinzugefügt, aber immer der gleiche Fehler. Was mache ich falsch?

16.12.2011 - 10:48 Uhr

... was ich in
>
bereits beantwortet hatte.

Das dort ist eine ganz andere Frage als ich hier gestellt habe.
Und mit euren Antworten ist das auch nicht erledigt.

Ich wollte wissen, wie ich einfach die Subnetzmaske im Quellcode angeben kann und hab mir selbst eine Lösung überlegt, welche funktioniert.

Kann geschlossen werden.

16.12.2011 - 09:50 Uhr

Hallo zusammen,
habe ein Problem. Würd gerne WOL machen aber eine andere Subnetzmaske angeben, nur wo?

Wenn ich folgenden Code nutze:

UdpClient WOLclient = new UdpClient();
            WOLclient.Connect(IPAddress.Broadcast, 0);

Dann funktioniert das WOL im momentanen Subnetz.

Ich möchte gerne die Subnetzmaske "255.255.0.0" angeben. Wo mache ich das?

Habe bereits folgendes ausprobiert:

            UdpClient WOLclient = new UdpClient();
            WOLclient.Connect(IPAddress.Broadcast, 0);
            IPAddress myIP = new IPAddress(IP2Long("255.255.0.0"));
            IPEndPoint myPoint = new IPEndPoint(myIP,0);
            WOLclient.Connect(myPoint);

Leider klappt es nicht und ich erhalte eine CommunicationException "Not Found".

Danke für eure Hilfe.

15.12.2011 - 13:01 Uhr

Das Ding ist, dass unsere Anwendung auf einem Server abgelegt wird und von dort die Rechner angesteuert werden sollen.

Kann man das nicht irgendwie anders lösen?

15.12.2011 - 09:44 Uhr

Hallo zusammen,
wie ist es möglich, ein WOL Signal (Magic Packet) zu einem Rechner eines anderen Subnetzes zu senden?

Benötige ich dafür irgendwas?

14.12.2011 - 15:38 Uhr

Genau das hab ich gesucht.

Getestet - Funktioniert - Danke!

14.12.2011 - 15:21 Uhr

Danke für deine Antwort.

Kann damit nur nicht so Recht was anfangen.

14.12.2011 - 15:14 Uhr

Hallo zusammen,
ich hoste eine SilverLight Anwendung in unserer Firma und möchte den Benutzer auslesen, der grad diese SilverLight Anwendung aufruft.

Rufe ich also nun grad die Anwendung auf, steht in der Anwendung

"Benutzername: ..."

bei "..." soll mein Windows Loginname stehen.

Ich hab das per Webservice probiert, nur wird immer der Login des Servers, auf dem die Anwendung hostet, angezeigt. Logischerweise.

Hat jemand eine Idee?

29.11.2011 - 13:00 Uhr

Hallo zusammen,
würd gern an mein Programm ein kleines "Feature" einbauen.

Und zwar möchte ich, wenn ich einen Klick auf "Rechner starten" mache, dass sich das Programm verdunkelt und sich ein kleines Fenster öffnet, wo steht "Rechner wird gestartet..." und der im Hintergrund eine schleife mit einer ping-Abfrage auf den Rechner macht. Sobald die Ping Abfrage erfolgreich ist, soll sich die Schleife beenden und im Fenster steht: "Der Rechner wurde erfolgreich gestartet!". Dann soll dieses Fenster entweder automatisch nach 3sek oder mit einem klick geschlossen werden und die eigentliche Silverlight Webseite aktualisiert sich.

Wie realisiere ich ein solches Fenster? Der Hintergrund muss nich unbedingt dunkel werden alleine das kleine Fenster reicht schon.

Das Programm soll in dem Moment übrigens nicht anderweitig betätigt werden können (z.b. anderen rechner starten während bereits einer hochfährt)

Ich danke für Hilfe

11.11.2011 - 11:52 Uhr

Oh, die Config ist in der .xap kompiliert. Die kann ich mit WiNRar/7Zip entpacken, die Datei bearbeiten und neu packen. Mal testen ob das funktioniert.

11.11.2011 - 07:17 Uhr

Guten Morgen zusammen,
wenn ich meine Webseite (SilverLight) veröffentliche, besitzt diese 3 Web Verweise zu Web Services.

Wo sind diese eingetragen bzw. wie kann ich diese URLs am Besten in einer Konfig-Datei ablegen?

Wenn ich jetzt alles auf eine Testmaschine packe, lade ich die drei Web Services rüber (=die Visual Studio Entwicklungsdateien), erstelle dort im IIS drei neue Sites und verlink diese auf die Web Services.

Nun habe ich meine eigentliche Webseite, welche die drei alten Web Verweise implementiert hat, welche ich nun nicht mehr ändern kann, da kein Visual Studio 2010 zur Verfügung steht.

Gibt es nun eine Möglichkeit die URLs von Anfang an in einer Konfig-Datei abzulegen, sodass ich nur diese anpassen muss? Wenn JA, wie setz ich das um, denn ich finde einfach nirgens die URL-Eintragungen der Web Services im Quellcode.

//edit: Habe die Einträge in der "ServiceReferences.ClientConfig" gefunden. Wenn ich nun allerdings die Webseite veröffentliche, steht mir diese Datei nicht zur Verfügung. Wie änder ich nun im nachhinein ohne Visual Studio die Links?

10.11.2011 - 15:27 Uhr

Ich danke vielmals, hab die Lösung bereits selbst hinbekommen und erst im Nachhinein deine Antwort gelesen.

Man sollte wohl doch nicht so voreilig sein, hier ein Thread erstellen und erst dann forschen^^.

10.11.2011 - 14:23 Uhr

Hallo zusammen,
für meine SilverLight Oberfläche benötige ich bei bestimmten Aktionen ein Logging.

Wenn ich Computer hochfahre oder per Remotedesktopverbindung starten möchte, dann soll dies mitgeloggt werden.

Dafür hab ich einen Web Service geschrieben:

private static string filepathcomplete;
        private static string FilePathComplete
        {
            get { return filepathcomplete; }
            set { filepathcomplete = value; }
        }

        StreamWriter writer;

        [WebMethod]
        public static void DateiErstellen()
        {
            // Dateinamen festlegen
            string filename = DateTime.Now.ToString("yyyyMMdd") + ".log";
            filepathcomplete = @"C:\" + filename;

            // Filestream auf den Dateinamen, der eine vorhandene Datei öffnet und bearbeitet oder eine neue Datei anlegt und Lese- und Schreibzugriff vergibt
            var fs = new FileStream(filepathcomplete, FileMode.OpenOrCreate, FileAccess.ReadWrite);
            StreamWriter writer = new StreamWriter(fs);
            writer.Close();
            fs.Close();
        }

        [WebMethod]
        public void WriteLog(string daten)
        {
            DateiErstellen();
            string[] arr = daten.Split('+');

            // Filestream auf den Dateinamen, der eine vorhandene Datei erweitert und schreibt
            FileStream fsLog = new FileStream(filepathcomplete, FileMode.Append, FileAccess.Write);
            writer = new StreamWriter(fsLog);
            writer.WriteLine(arr[3] + "\t" + arr[2] + "\t" + arr[4] + "\t" + arr[0] + "\t" + arr[1]);
            writer.Close();
            fsLog.Close();
        }

        [WebMethod]
        public void WriteErrorLog(string exception)
        {
            DateiErstellen();
            // Filestream auf den Dateinamen, der eine vorhandene Datei erweitert und schreibt
            FileStream fsErr = new FileStream(filepathcomplete, FileMode.Append, FileAccess.Write);
            writer = new StreamWriter(fsErr);
            writer.WriteLine(exception);
            writer.Close();
            fsErr.Close();
        }

Wenn ich das nun teste, erscheint mir eine Fehlermeldung.

Bei der ersten Ausführung wird die log Datei erstellt, aber nicht befüllt und der Web Service liefert nichts zurück. Führe ich eine Web Methode erneut aus, kommt folgende Fehlermeldung:

Fehlermeldung:
System.IO.IOException: Der Prozess kann nicht auf die Datei &quot;C:\20111110.log&quot; zugreifen, da sie von einem anderen Prozess verwendet wird.

Möchte einfach nur ein einfaches Logging der Aktionen durchführen und dies am Besten auf dem Server und nicht lokal auf dem Client PC speichern und ablegen.

08.11.2011 - 07:59 Uhr

Guten Morgen zusammen,
möchte gern einen PC via Remotedesktopverbindung aufrufen in einer SilverLight Anwendung.

Habe ein Oberfläche, welche mir Firmenrechner anzeigen lässt.
Dazu habe ich einen Webservice geschrieben, welcher auch funktioniert.

Rufe ich den Webservice im Debug Modus auf, klappt es.
Rufe ich den Webservice im lokalen IIS auf, klappt es nicht mehr.

Er führt auf dem Rechner keinen Prozess mehr aus, woran kann das liegen? Die Domänenübergreifenden Zugriffsrichtlinien hab ich bereits mit der crossdomain.xml gesetzt.

Ich wäre über jede Hilfe sehr dankbar.

08.11.2011 - 07:29 Uhr

Hallo,
natürlich poste ich gerne meine Lösung:

//Suchtext Variable festlegen
            string searchText = txtSearch.Text;

            //Die RKUListe durchsuchen
            var query = from RKUVNCListe in xEl.Elements("Rechner")
                        where
                        //Name ODER Computer
                            RKUVNCListe.Element("Name").ToString().Contains(searchText) == true
                            || RKUVNCListe.Element("Computer").ToString().Contains(searchText) == true
                        select new ComputerEntry
                        {
                            Name = RKUVNCListe.Element("Name").Value,
                            Computer = RKUVNCListe.Element("Computer").Value,
                            IpAddress = RKUVNCListe.Element("IP").Value,
                            MacAddress = RKUVNCListe.Element("MAC").Value
                        };

            //Neue Quelle binden
            oGrid.ItemsSource = query;

Nachteil: Groß- und Kleinschreibung wird beachtet. Das muss ich noch irgendwie deaktivieren.

//edit: Auch das hab ich gelöst.

                            RKUVNCListe.Element("Name").ToString().IndexOf(searchText, StringComparison.InvariantCultureIgnoreCase) >= 0
                            || RKUVNCListe.Element("Computer").ToString().IndexOf(searchText, StringComparison.InvariantCultureIgnoreCase) >= 0
07.11.2011 - 14:42 Uhr

willst du die Ursprungsdaten filtern (um sie eventuell gefiltert speichern oder sowas zu wollen) oder willst du nur die Anzeige der Daten filtern. Für zweiteres gibts die CollectionViewSource, dann wäre deine Frage aber passender im WPF/Silverlight Forum passender.

Ansonsten filterst du halt mit XML 2 Linq entsprechend die Nodes im XML Dokument und bindest dann die Ergebnissaufzählung gegen das DataGrid.

Habe überlegt, ob ich nur die Anzeige filtern lasse oder ob ich eben direkt das XML File filtere und das Ergebnis anzeigen lasse.

Letzteres wäre sinnvoller, da die Anzahl der Einträge angezeigt werden soll.
Leider weiß ich anhand des Beispiels von Gü nicht, wie das funktionieren soll.

Das Filtern der XML Datei via LINQ wäre somit also sinnvoller mit anschließendem binden an die DataGrid. Wie setz ich sowas um?

//edit: Habe es hinbekommen. Es funktioniert alles genau so, wie ich es wollte ohne großen Aufwand 😃

07.11.2011 - 14:13 Uhr

Hallo zusammen,
habe eine DataGrid, welche Informationen anzeigen lässt auf 4 Spalten.

2 Spalten möchte ich durchsuchen und filtern.

Gebe ich in einer Textbox z. B. etwas ein, soll er sofort ausfiltern und nurnoch die Ergebnisse anzeigen, die passend sind (WHERE ... LIKE '%eingabe%').

Wie filter ich nun mit LINQ die DataGrid?

Die Werte kommen via XML Datei und WebClient in die Datagrid.
Ich nutze dafür eine SilverLight Oberfläche.

Bin über JEDE Hilfe sehr dankbar, vielen Dank.

07.11.2011 - 08:59 Uhr

Hallo zusammen,
habe bereits gegooglet und verschiedene Varianten gefunden, nur funktioniert leider keine bei mir.

Ich möchte mein string in ein byte-Array umwandeln.

Folgende Variationen hab ich bereits getestet:

byte[] macAddress = System.Text.Encoding.UTF8.GetBytes(myValue.MacAddress);
byte[] macAddress = System.Text.Encoding.GetEncoding(1252).GetBytes(myValue.MacAddress);

Leider beide ohne Erfolg.
Gibt es eine andere Möglichkeit?

Ich danke im voraus.

//edit: Das Ganze natürlich in C#.

06.11.2011 - 10:59 Uhr

Dann muss ich das wohl notfalls so lösen und einfach zusätzlich die MAC Adresse in die XML Datei speichern und darüber das Magic Paket absenden. Spare ich mir einen Webservice zum ermitteln der MAC. Das probiere ich einfach mal aus 😃

05.11.2011 - 11:35 Uhr

Genau das ist es, was passiert.

Benötige aber die MAC Adressen auch von ausgeschalteten Rechnern. Macht ja sonst keinen Sinn, da ich die ausgeschalteten PC's starten möchte.

04.11.2011 - 11:57 Uhr

Wenn ich nur den Webservice im lokalen IIS bzw. Debugger in Visual Studio aufrufe, funktioniert dieser einwandfrei ohne Fehlermeldungen.

Einzig bei

if (SendARP((int)hostEntry.AddressList[0].Address, 0, macAddr, ref macAddrLen) != 0)

wird folgende Warnung erzeugt

Fehlermeldung:
Warnung 1 "System.Net.IPAddress.Address" ist veraltet: ""This property has been deprecated. It is address family dependent. Please use IPAddress.Equals method to perform comparisons.
>
"" C:\Abschlussprojekt\PingRequest\PingRequest\PingRequest.asmx.cs 35 30 PingRequest

Das ist aber nicht tragisch.

Sooo...

[DllImport("iphlpapi.dll", ExactSpelling = true)]
        static extern int SendARP(int DestIP, int SrcIP, byte[] pMacAddr, ref uint PhyAddrLen);

        [WebMethod]
        public string GetMACAddress(string hostNameOrAddress)
        {
            try
            {
                IPHostEntry hostEntry = Dns.GetHostEntry(hostNameOrAddress);
                if (hostEntry.AddressList.Length == 0)
                    return null;

                byte[] macAddr = new byte[6];
                uint macAddrLen = (uint)macAddr.Length;
                if (SendARP((int)hostEntry.AddressList[0].Address, 0, macAddr, ref macAddrLen) != 0)
                    return null;


                StringBuilder macAddressString = new StringBuilder();
                for (int i = 0; i < macAddr.Length; i++)
                {
                    if (macAddressString.Length > 0)
                        macAddressString.Append(":");

                    macAddressString.AppendFormat("{0:x2}", macAddr[i]);
                }
                return macAddressString.ToString();
            }
            catch (Exception)
            {
                
                throw;
            }
        }

Hab alles aktualisiert. Es kommt der gleiche Fehler raus am gleichen Punkt. Im Webservice springt er nicht in den catch Block.

//edit:

Zum Vergleich::

pingRequest Methode (funktioniert)

public WakeOnLAN.pingRequest.pingRequestResponse EndpingRequest(System.IAsyncResult result) {
                object[] _args = new object[0];
                WakeOnLAN.pingRequest.pingRequestResponse _result = ((WakeOnLAN.pingRequest.pingRequestResponse)(base.EndInvoke("pingRequest", _args, result)));
                return _result;
            }

GetMACAddress Methode (funktioniert nicht)

public WakeOnLAN.pingRequest.GetMACAddressResponse EndGetMACAddress(System.IAsyncResult result) {
                object[] _args = new object[0];
                WakeOnLAN.pingRequest.GetMACAddressResponse _result = ((WakeOnLAN.pingRequest.GetMACAddressResponse)(base.EndInvoke("GetMACAddress", _args, result)));
                return _result;
            }

Wenn ich mit dem Debugger durchgehe, erhält die MAC Adresse immer "null"

//edit2:
Habe nun mal weiter probiert. Schon sehr kurios. Manchmal klappt es, manchmal nicht.

1.) Ist der Rechner eingeschaltet, erhalte ich manchmal die MAC und manchmal nur null. Bei meinem eigenen Rechner, welcher eingeschaltet ist, erhalte ich den NotFound Fehler.

2.) Ist der Rechner ausgeschaltet, erhalte ich die NotFound Fehlermeldung oder null.

3.) Ist die IP/Namensauflösung nicht korrekt erhalte ich die NotFound Fehlermeldung.

Woran kann das liegen, dass es manchmal klappt und manchmal nicht? Die IP Adresse steht ja in der Liste, egal ob der Rechner ein- oder ausgeschaltet ist. Schon sehr kurios...

04.11.2011 - 11:46 Uhr

Interessant wäre ja was nicht gefunden wird.

Schreib doch mal ein Try-Catch um den Inhalt deiner Methode GetMACAddress und protokolliere mal den Fehler, oder gib ihn als out parameter an den Client zurück.

In der Reference.cs, welche von Visual Studio erzeugt wird?

public WakeOnLAN.pingRequest.GetMACAddressResponse EndGetMACAddress(System.IAsyncResult result) {
                object[] _args = new object[0];
                WakeOnLAN.pingRequest.GetMACAddressResponse _result;
                try
                {
                    _result = ((WakeOnLAN.pingRequest.GetMACAddressResponse)(base.EndInvoke("GetMACAddress", _args, result)));
                }
                catch (System.Exception)
                {
                    
                    throw;
                }
                return _result;
            }

Was raus kommt:
Der selbe Fehler beim throw

Verarbeitet dein Netzwerk WOL überhaupt korrekt?

Das ist ja erstmal völlig egal. Ich möchte ja erstmal nur die MAC Adresse ermitteln und ausgeben. Dafür ist kein WOL vonnöten. Erst wenn das klappt, versuch ich die MAC Adresse der WebMethod "WakeonLan" mit zu geben.

04.11.2011 - 11:11 Uhr

Hallo zusammen,
habe einen Webservice, welcher Rechner anpingt, MAC Adressen anhand von IP Adressen ermittelt und Rechner mittels WOL aufweckt.

Drei Web Methoden in einem Webservice.

Der Webservice funktioniert per Debugger sowie per Aufruf über meinen lokalen IIS. Alle Methoden klappen ebenfalls.

Nun habe ich den Webservice in mein Projekt eingebunden und versuche meine Rechner anzupingen. Klappt wunderbar und alles funktioniert.

Nun mache ich das gleiche mit der MAC Adresse. Ich erstelle einen EventHandler und eine entsprechende Methode. Rufe alles genauso auf, wie beim Pingen. Nur erhalte ich einen Fehler (Anhang).

Woran könnte das liegen? Bin echt ratlos 😦 Das eine klappt, das Andere nicht.

WakeOnLAN.pingRequest.Service1SoapClient myPing = new WakeOnLAN.pingRequest.Service1SoapClient();
myPing.GetMACAddressCompleted += myPing_myMACAddressEvent;
myPing.GetMACAddressAsync(ipAddress);
public void myPing_myMACAddressEvent(Object objSender, WakeOnLAN.pingRequest.GetMACAddressCompletedEventArgs e)
        {
            string macAddress = e.Result;
        }

Mein Webservice:

[DllImport("iphlpapi.dll", ExactSpelling = true)]
        static extern int SendARP(int DestIP, int SrcIP, byte[] pMacAddr, ref uint PhyAddrLen);

        [WebMethod]
        public string GetMACAddress(string hostNameOrAddress)
        {
            IPHostEntry hostEntry = Dns.GetHostEntry(hostNameOrAddress);
            if (hostEntry.AddressList.Length == 0)
                return null;

            byte[] macAddr = new byte[6];
            uint macAddrLen = (uint)macAddr.Length;
            if (SendARP((int)hostEntry.AddressList[0].Address, 0, macAddr, ref macAddrLen) != 0)
                return null;


            StringBuilder macAddressString = new StringBuilder();
            for (int i = 0; i < macAddr.Length; i++)
            {
                if (macAddressString.Length > 0)
                    macAddressString.Append(":");

                macAddressString.AppendFormat("{0:x2}", macAddr[i]);
            }

            return macAddressString.ToString();
        }

//edit: Bitte nicht wundern, dass mein Webservice "pingRequest" heisst. Ursprünglich war dieser nur für das pingen zuständig und ich hatte andere Webservices für Mac Adresse / WOL aber diese hab ich nun zusammengefügt.

Der Fehler bleibt übrigens auch, wenn ich die Webservices splitte in mehrere Dateien.

03.11.2011 - 15:48 Uhr
private void PingCompleted(object sender, PingCompletedEventArgs e)
        {
// was soll denn hier rein o.O?
        }

        private void dataGridRechnerListe_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            //Eigenschaften ziehen (IP & Computer)
            ComputerEntry myValue = (ComputerEntry) oGrid.SelectedItems[0];
            string ipAddress = myValue.IpAddress.ToString();
            string computer = myValue.Computer.ToString();

            //Verbindung zum Webservice herstellen (Objekt erzeugen)
            WakeOnLAN.pingRequest.Service1SoapClient myPing = new WakeOnLAN.pingRequest.Service1SoapClient();

            //Complete-Event abonnieren
            pingRequest.[COLOR]PingCompleted[/COLOR] += PingCompleted;

            //Methode im Webservice ausführen und Computer + IP übergeben
            myPing.pingRequestAsync(computer, ipAddress);

            //Ergebnis in Variable speichern
            string picture = [COLOR]myPing.pingRequestAsync(computer, ipAddress)[/COLOR];
            
            //Das Ergebnis der Methode mitteilen
            setpic(picture);  
        }
03.11.2011 - 15:35 Uhr

Wie abonniere ich denn das Completet Event bevor ich die Asynchrone Methode aufrufe?

03.11.2011 - 14:59 Uhr

Hallo,
mein Projekt ist ein SilverLight Projekt.

Dort habe ich den Webservice integriert. Habe eine DataGrid mit den Rechnern unserer Firma aufgelistet und möchte abfragen, ob diese eingeschaltet sind etc.

Ich nutze .NET Framework 4.0.

Habe den Webservice über Visual Studio 2010 erstellt über ASP.NET-Webdienstanwendung.

//edit:
@gfoidl: Wie meinst du das im myPing.pingRequestCompleted die nötige Information drin steckt?

Als erstes muss ich ja Parameter senden und anschließend das Ergebnis abfangen. Wie muss ich das nun machen, wenn ich meine entsprechende Methode nicht zur Verfügung habe?