Laden...
M
mipa_acc
myCSharp.de - Member
131
Themen
318
Beiträge
Letzte Aktivität
vor 6 Jahren
Dabei seit
12.09.2006
Erstellt vor 6 Jahren

Hallo liebe Mitbenutzer des Forums,

vielen Dank für eure Informationen. Wie ihr schon bemerkt habt bin ich außerhalb des Frameworks wirklich nicht versiert, deshalb auch so eine unproffesionelle Fragestellung. Leider ist es mit meinem Wissensstand nicht leicht, sich einen roten Faden durch die Webentwicklung anzulesen, durch eure Beiträge wird mir das sicherlich leichter fallen. Vielen Dank schonmal dafür. Ich werde mir nun im Detail eure Infos durchlesen und mich dann ggf. an dieser Stelle wieder melden.

Viele Grüße
mipa_acc

Erstellt vor 6 Jahren

Hallo liebe Community,

ich komme eher aus der Backend, bzw. Serverentwicklung und hatte bisher recht wenig mit Frontendentwicklung, bzw. Webapplikationen am Hut. Das soll sich nun ändern, da ich gerne für ein privates Projekt eine Webseite zur Darstellung von Informationen umsetzen möchte. Dieses Projekt ist durch einen Windows-Dienst (.Net Framework 4.6.2) in Verbindung mit einer SQL-Datenbank realisiert. Konkret sollen unterschiedlichste Elemente wie Text, Bilder oder Tabellen aus der Datenbank dargestellt werden. Auch sollen über die Webseite ein paar Funktionen des Dienstes angestoßen werden können.

Nun habe ich mich etwas eingelesen, bin aber von der Fülle an Informationen etwas überfordert. Ich wende mich an euch, da ich gerne mit aktuellen Technologien arbeiten will, aber mir nicht ganz sicher bin, was man denn für solch eine Angelegenheit verwendet. Was ich weiß: Die Web-Applikation muss nicht auf Linux laufen, weshalb ich gut auf .Net Core verzichten kann.
_
Somit seht für mich fest, ich würde gerne ASP.NET als Framework verwenden. Ist es nun ratsam, mit WebForms zu arbeiten, also mit XHTML und CodeBehind-Daten oder Mit Asp.Net MVC? Da wäre rein von der Architektur her eine bessere Trennung von Funktionen und Aussehen der Inhalte gegeben. Verwendet man da dann die Version 4 oder 5? Sollte man RazorPages verwenden, bzw. in wie fern bringt mir das Vorteile?_

Vielleicht kann mir jemand von euch bei ein paar Entscheidungen helfen. Allem voran ist meine Intention dieses Beitrags auch anderen Entwicklern aufzuzeigen, was es denn Stand Ende 2018 für Möglichkeiten gibt.

Vielen Dank schon mal für eure Unterstützung!
Gruß mipa_acc

Erstellt vor 8 Jahren

Vielen Dank Abt, wenn ich hinter meinen String ein \r schreibe, dann läuft die Sache!

Danke 😃

Erstellt vor 8 Jahren

Hallo,

erstmal vielen Dank für eure Antworten!

Wenn ich Debugge, dann stehen alle Werte passend da. Mein senderSock-Objekt (also ein Objekt vom Typ Socket) hat keine Flush-Methode.

Ich muss dazu sagen, dass ich .Net Entwickler bin und mit Miktocontroller (leider) sehr wenig am Hut habe. Deshalb verstehe ich das mit dem CR/LF leider nicht. Googeln erhab Carriage Return, also ein /n am Ende des Strings (wie in C) - oder? Das habe ich auch bereits getestet, hatte aber keine Auswirkungen.
Mit Wireshark habe ich noch nicht gearbeitet, muss ich heute Abend mal testen. Ich hoffe, ich schaffe es, die Filter passend anzupassen.

Sonst noch irgendwelche Ideen?

Vielen Dank!

Erstellt vor 8 Jahren

Hallo liebe Community,

ich stehe gerade etwas auf dem Schlauch. Ich habe einen Mikrocontroller (ESP 8266) und will an diesem mittels eines TCP Pakets einen Ausgang schalten. Dies funktioniert mit einem kleinen Tool sehr gut (siehe Anhang):
Wenn ich den ASCII Code 2x4x0 sende, wird ein Ausgang geschaltet - erfolgreich.

Selbiges will ich mit diesem Code, welcher auf dem selben PC ausgeführt wird (wegen Firewall, AV, etc.) erreichen:


private void Connect_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                // Resolves a host name to an IPHostEntry instance                            
                IPHostEntry ipHost = Dns.GetHostByName("192.168.148.189");

                // Gets first IP address associated with a localhost 
                IPAddress ipAddr = ipHost.AddressList[0];
        
                // Creates a network endpoint                  
                IPEndPoint ipEndPoint = new System.Net.IPEndPoint(ipHost.AddressList[0], 9274);
                
                // Create one Socket object to setup Tcp connection 
                senderSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

                senderSock.NoDelay = false;  

                // Establishes a connection to a remote host 
                senderSock.Connect(ipEndPoint);
                tbStatus.Text = "Socket connected to " + senderSock.RemoteEndPoint.ToString();

                Connect_Button.IsEnabled = false;
                Send_Button.IsEnabled = true;
            }
            catch (Exception exc) { MessageBox.Show(exc.ToString()); }

        }

        private void Send_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                // Sending message 
                string theMessageToSend = tbMsg.Text;
                //theMessageToSend = 2x4x0
                byte[] msg = Encoding.ASCII.GetBytes(theMessageToSend);

                // Sends data to a connected Socket. 
                int bytesSend = senderSock.Send(msg);

                ReceiveDataFromServer();

                Send_Button.IsEnabled = false;
                Disconnect_Button.IsEnabled = true;
            }
            catch (Exception exc) { MessageBox.Show(exc.ToString()); }
        }

IP Adresse sowie Port passt. Verbinden kann ich mich auch. Nur wenn ich die Nachricht sende, passiert nichts.

Da wir uns hier in Schicht 4 bewegen schließe ich irgendwelche "Sicherheitsfunktionen", welche in .Net standardmäßig aktiv sind (wie z.B. "HttpWebRequestElement.UseUnsafeHeaderParsing" bei HTTP Requests, Schicht 7) aus. Ich komme nur leider nicht drauf, was in meinem Beispiel anders ist, als in dem kleinen Tool. Wohlgemerkt geht es mir hier erstmal um das reine senden, wenn das läuft, dann kümmere ich mich um das Empfangen der Antwort (wie es ja auch mein kleines Tools macht).

Habr ihr einen Tipp für mich?

Viele Grüße
mipa_acc

Erstellt vor 9 Jahren

Manchmal geht es schneller als gedacht...

für alle die dasselbe Problem haben. In der App.config, einfach dem startup noch eine weitere Einstellung "mitgeben":


    <startup useLegacyV2RuntimeActivationPolicy="true">
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />       
    </startup>

Problem gelöst 😃

Erstellt vor 9 Jahren

Hallo Community,

ich habe ein Problem, welches ich leider nicht alleine lösen kann. Mir fehlt da einiges an Basiswissen.

Ich will in meiner Applikation (Windows.Forms, .Net 4.5) funktionalitäten von DLLs verwenden, welche ziemlich alt sind. Die Laufzeitversion von diesen DLLs ist 1.1.4322. In Google habe ich einige Informationen gefunden, welche mich aber nicht wirklich weiter gebracht haben. Aktueller stand ist, dass ich in der App.config in der startup Sektion folgenden Einträg ergänzt habe:


<supportedRuntime version="v1.1.4322" />

Nun erhalte ich beim Ausführen einer Methode der DLL statt der Meldung

Die Assembly im gemischten Modus wurde während Version v1.1.4322 der Laufzeit erstellt und kann nicht während der 4.0-Laufzeit ohne zusätzliche Konfigurationsinformationen geladen werden.

folgendes:> Fehlermeldung:

Die Datei oder Assembly "Blub.dll" oder eine Abhängigkeit davon wurde nicht gefunden. Eine DLL-Initialisierungsroutine ist fehlgeschlagen. (Ausnahme von HRESULT: 0x8007045A)

Leider bin ich mit meinen Latein am Ende. Auch in Google finde ich nichts wirklich passendes. Warscheinlich suche ich mit den falschen Begriffen...

Könnt Ihr mir weiter helfen?

Viele Grüße
mipa_acc

Erstellt vor 9 Jahren

Ich kann die PluginLevels Klasse Serialisieren! Das ist das spannende, bzw. das, was ich nicht verstehe...

Leider kann ich auch nicht in die inner Exception sehen, da ich keine habe. Beim Debuggen bekomme ich keinerlei Fehler. Ich bekomme die Fehlermeldung im WCF-Testclient.

Ich versuche jetzt mal - wie von Taipi88 vorgeschlagen, die config so anzupassen,
dass ich bessere Fehlermeldungen bekomme.

Wenn es jemanden Interessiert, ich stelle auch gerne den Code zur Verfügung.

Erstellt vor 9 Jahren

Hallo,

so, Logging ist implementiert, hätte ich aber eigentlich nicht gebraucht, jetzt wird´s richtig interessant!

Ausschnitt aus meiner WcfService.svc.cs


        public AvailablePluginLight GetLightPlugin(Guid guid) {

            try {

                //Go through all Available Plugins
                foreach (AvailablePlugin currentPlugin in PluginContainer.AvailablePlugins) {

                    if (currentPlugin.Guid == guid) {

                        return new AvailablePluginLight(currentPlugin.Instance.Name,
                                                                currentPlugin.Instance.Description,
                                                                currentPlugin.Instance.Author,
                                                                currentPlugin.Instance.Version,
                                                                currentPlugin.Instance.PluginType,
                                                                currentPlugin.Instance.Guid,
                                                                currentPlugin.Instance.ClientGuiOutput,
                                                                currentPlugin.Instance.Level);

                    }

                }

                return new AvailablePluginLight();

            } catch (Exception ex) {

                Logging.SetErrorMessage("Test", ex);

            }

            return new AvailablePluginLight();

        }   <--- Ich gehe an dieser Stelle mit F11 rein

Ich erhalte mein Objekt incl. alle PluginLevel Daten! Am Ende der Methode gehe ich mit F11 weiter. Ich gelange beim Debuggen dann in meine AvailablePluginLight - Klasse, wo ich alle Getter von den Properties durchgehe. Beim return von meinem Level Scheppert´s dann:


//Ausschnitt aus der AvailablePluginLight Klasse
        [DataMember]
        public PluginLevel Level {
            get {
                return _Level;  <-- Hier ist der Ofen aus
            }
            set {
                _Level = value;
            }
        }

Ich erhalte die selbe Meldung, welche ich in Obigen Post bereit erwäht habe ( "bei System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException webException, HttpWebRequest request, HttpAbortReason abortReason)").

Weiter habe ich einfach mal eine Methode in meiner WcfKlasse, die Funktioniert wie folgt erweitert:


      public List<string> GetPluginWorkMethodes(Guid guid) {

            try {
                 AvailablePluginLight Blub = GetLightPlugin(new Guid("43cd6dc4-22a9-4c27-b866-a1bcbcc384ff"));
            } catch (Exception ex) {

                Logging.SetErrorMessage("Test aus funktioniertender Methode", ex);

            }

            List<string> MyList = new List<string>();
            ....
       }

Ich gelange nicht in den Catch-Block, sondern erhalte mein Objekt - so wie es sein soll (incl. PluginLevel)! Die Methode läuft nach wie vor ohne den Fehler durch.

Leider bin ich im WCF-Service Thema wirklich nicht sonderlich gut... Für mich erhärtet sich der Verdacht, dass es irgendwas mit der Übertragung zu tun hat.

Was denkt ihr?

Viele Grüße

Erstellt vor 9 Jahren

Alles klar, dann werde ich das heute Abend umsetzen. Rein Logisch kann es aber fast an nichts anderem liegen, dass die PluginLevel - Klasse während der Laufzeit nicht vom WcfService verarbeitet kann - oder?