Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Papst
Thema: Warum liefern Postman und WebClient()-Klasse unterschiedlich detaillierte Fehlermeldungen?
Am im Forum: Web-Technologien

??? nach meiner Antwort hast du mich per PN angeschrieben und ich habe dir eine ausführliche Antwort geschickt (die ich hier in Kurzform ergänzt habe)... was funktioniert daran nicht?

Zitat von PN
From - Sun, 22 Dec 2019 15:47:18
Date: Sun, 22 Dec 2019 16:47:18 +0100
From: "Papst" <[email protected]>
To: "joob" <[email protected]>
Subject: RE: request - Verständnisproblem

Hi,

du kannst das gerne auch einfach in deinem Thread schreiben :)

Wenn man synchron und async/await mischt, ist das etwas tricky.

Für WebClient habe ich gerade einfach mal debugged... was du suchst steht in der Response, du musst sie lesen:


using (StreamReader reader = new StreamReader(ex.Response.GetResponseStream()))
{
	reader.ReadToEnd().Dump();
}

Synchron mit HttpClient arbeiten kannst du so:


HttpClient cl = new HttpClient();

var result = cl.PostAsync("", new StringContent("...")).GetAwaiter().GetResult();

Ich poste es gleich noch mit in den Thread.

Gruß
Marco

-----Ursprüngliche Nachricht-----
Nachricht von: joob
Gesendet: 22.12.2019 16:37
An: Papst
Betreff: request - Verständnisproblem

Beim Debugging konnte ich nichts herausfinden.
innerexception war aber leer.
Die Fehlermeldung kommt auch aus einer Exception, ich dachte aber vielleicht ist dort was zu finden.

Thema: Warum liefern Postman und WebClient()-Klasse unterschiedlich detaillierte Fehlermeldungen?
Am im Forum: Web-Technologien

Meine erste Vermutung wäre, dass die Details in der InnerException Property der Exception stehen.
Das würdest du mit dem Debugger herausbekommen. ( [Artikel] Debugger: Wie verwende ich den von Visual Studio? )

Ansonsten ist die generelle Empfehlung HttpClient anstatt von WebClient zu nutzen - das würde an der Fehlerbehandlung und am Debugging aber nichts ändern :)

Edit: Nach PN Diskussion, um es hier zu teilen:

Die Antwort steht nicht in der InnerException, sondern in der Response Property der WebException.

Thema: Wie kann ich eine DLL und eine public Methode erstellen?
Am im Forum: Grundlagen von C#

Die Antwort auf deine erste Frage ist:
--> Mit einer passenden Architektur.

Eine Klassenbibliothek sollte nicht auf das GUI durchgreifen. Stell dir vor, du würdest eine Bibliothek von irgendjemand anderem einsetzen und würde deren Funktionalität nutzen. Wenn jetzt ein bestimmtes Ereignis eintritt zeigt die Bibliothek eine Messagebox an, ohne dass du das ändern kannst.

Im Forum gibt es einen Artikel und FAQ Bereich, hieraus würde ich dir die folgenden zwei Artikel empfehlen:
[Artikel] Drei-Schichten-Architektur
[FAQ] Kommunikation von 2 Forms
Der erste zeigt eine solche Architektur, der zweite wie man prinzipiell mit soetwas umgehen kann. Nur dass hier keine zweite Form im Einsatz ist, sondern eine Bibliothek.

Thema: Evaluierung Gui Frameworks (WPF?) für Prozesssteuerung
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Sorry, wenn ich mich hier von der Seite so einmische, ich mag das aber nicht so stehen lassen.

Ihr sprecht von echtzeit und schnell - das sehe ich immer und an jeder Stelle, es ist aber schlicht falsch.
Die Definition von Echtzeit ist nicht schnell, sondern deterministisch mit einem bestimmten, zum Ende hin beschränkten Zeitfenster für eine/jede Operation (weiche Echtzeit; maximale Zeit für eine bestimmte Operation oder Zyklus) oder einem auf beiden Seiten beschränkten Zeitfenster für eine Operation oder Zyklus (harte Echtzeit).

Ich sehe das auch bei unseren Kunden immer wieder, dass schnell mit Echtzeit gleichgesetzt wird und muss dann immer die Schleife über die Anforderungen an das Zeitverhalten drehen :)

Eine GUI kann durchaus Echtzeitanforderungen haben, vor allem dann, wenn man GUI als Abstraktes Gebilde (als HMI) sieht und z.B. einen Leuchtmelder auch dazu zählt, der z.B. einen Fehler signalisiert.

Thema: Wie realisiert man die ADO.NET Sicherheit?
Am im Forum: Datentechnologien

Wenn du eine neue Applikation anfängst oder eine alte modernisierst, solltest du nicht mehr über WCF nachdenken.
Hier gibt es moderne Ansätze durch ASP.NET Core Web API (oder Technologieneutral REST API), Graph QL, ODATA oder auch gRPC, je nachdem was für deinen Anwendungsfalls das beste ist.

Thema: [gelöst ]VS 2019 Comm. Edition in Projektansicht starten (geht immer Ordneransicht)
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hast du anstatt des Solution Files (*.sln) einmal ein Projekt als Ordner geöffnet?
Falls ja, einfach mal mit Doppelklick auf das .sln File öffnen.

dann sind nur die "zuletzt geöffnet" Einträge noch falsch in der Liste.

Thema: Webseiten Monitoring Tool
Am im Forum: Web-Technologien

Die Idee von AppInsights und Nagios/PRTG sind gänzlich unterschiedlich.

Während AppInsights die Telemetrie von Webseiten loggt und tiefere Insights bietet, sind Nagios (Open Source) und PRTG (free für kleine Workloads; 100 Datenpunkte glaube ich) mehr eine Art HealthCheck Service, diese pingen also die die Webseite in regelmäßigen Zeitabständen und geben dann weniger Insights.

Thema: Befehl auf einer Solaris Maschine ausführen von einer SQL-Server 2012 Maschine aus?
Am im Forum: Smalltalk

Putty ist lediglich ein Werkzeug, dass es dir erlaubt über eine SSH Verbindung eine Shell auf einem Remote PC zu öffnen.
Weder Putty, noch eine Shell via SSH ist für eine Automatisierung sonderlich geeignet.

Wenn du nicht ohne den SQL Server kannst (z.B. weil die Dateneingangsschnittstelle fest steht) und es wirklich nicht anders geht (z.B. über REST entkoppeln), solltest du trotzdem von dem ERP System aus auf ein anderes System zugreifen... und wenn nachher vom ERP System aus eine Anwendung alle 5 Minuten eine Tabelle im SQL pollt ist das immer noch besser, als vom SQL Server aus eine SSH Verbindung zum ERP aufzubauen.

Was dir klar sein muss: Du bist immer von diesen Servern abhängig, das skaliert unglaublich schlecht und du wirst diese Schnittstelle bei z.B. einem ERP Upgrade pflegen müssen.

Meine Empfehlung wäre ganz klar mit dem Hersteller des ERP Systems zu sprechen. Mit etwas Glück habt ihr einen Wartungsvertrag und man kann darüber vielleicht eine saubere Lösung implementieren.

Thema: Microsoft Edge mit Chromium via Dev Channel nun verfügbar
Am im Forum: Szenenews

Release Date für den Chromium basierten Edge: 15. Januar 2020

Thema: Abrufen/Abspeichern von .xml auf FTP
Am im Forum: Netzwerktechnologien

Auf einen FTP Server greifst du nicht zu wie auf das lokale Dateisystem, dazu musst du das FTP Protokoll benutzen. Hierfür gibt es verschiedene Implementierungen in .NET / .NET Core.
Wenn ich FTP verwenden muss, dann nehme ich meist die Bibliothek FluentFTP.

Thema: WPF App lässt sich nicht als funktionierende .exe starten - bleibt weiss und stürzt danach ab
Am im Forum: Grundlagen von C#

In dem obj Ordner solltest du eigentlich nichts starten.

Mit den Standardeinstellungen findest du die kompilierte Anwendung in bin\Release oder bin\Debug und wenn du diese dort bewegen willst brauchst du auch nur den Inhalt dieser Ordner kopieren.

Thema: Wie kann man der Stream.Read() Methode am besten prüfen lassen, ob es die richtigen Daten sind?
Am im Forum: Netzwerktechnologien

Die XML ist die csproj Datei. Lad dir am besten das Beispielprogramm und probier es aus.

Thema: (CRUD / .NET Core) HttpContext.Response - ErrorMessage
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Vom Prinzip solltest du eine echte Klasse erstellen und diese aus dem Body lesen lassen.
Ist das Model dann nicht valide wird die MVC Middleware von sich aus 404 (vermute ich) senden, weil keine passende Route gefunden wurde.

Reflection würde ich niemals (manuell) da verwenden, wo es sich vermeiden lässt.

Thema: Wie kann man der Stream.Read() Methode am besten prüfen lassen, ob es die richtigen Daten sind?
Am im Forum: Netzwerktechnologien

Hi,

mach es dir nicht zu schwer. Es gibt bereits fertige Frameworks und Protokolle, die genau das bieten.
In der Regel ist es weder ratsam noch notwendig ein eigenes Protokoll zu entwickeln (Selbstschulung und Verständnis ausgenommen).

Je nachdem, was du vorhast würde sich gRPC (mit .NET Core 3.0) oder z.B. auch MQTT anbieten.

Thema: Threadsafe Liste, bei der ein Tasks den exklusiven Zugriff erhalten kann
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Lässt sich das nicht gut it einer SemaphoreSlim lösen?

-> Initialisiere die Semaphore mit einem Counter, der deiner Anzahl threads enspricht.
-> Jeder Thread der schreiben will holt sich eine Semaphore und gibt sie nach jeder Operation wieder frei
-> Will ein Thread exklusiv Zugriff, holt er sich einfach alle

Thema: Messwert mit verschiedener Datentypen in der Datenbank in einer Spalte
Am im Forum: Datentechnologien

Hi,

kommen deine Messwerte Deterministisch und ist fix, welche Werte kommen?
-> Lege eine spezialisierte Tabelle an, mit je einer Spalte pro Messwert

kommen deine Messwerte nicht Deterministisch oder ändert sich die Zusammenstellung der Werte
-> Lege mehrere Tabellen an, je Datentype ein.

An und für sich klingt das aber eher nach einer Aufgabe für eine NoSQL Datenbank.

Edit:
Ob das sinnvoll ist kommt natürlich darauf an, was du im Anschluss mit den Daten machen willst.

Thema: Docker unter Windows 10 ohne Hyper-V
Am im Forum: Smalltalk

Zitat von Krumnix
Hyper-V ist aktiv und der SPS-Kontroller läuft.
Wenn ich dann Docker starte, sagt er mir, das Hyper-V nicht aktiv wäre, ist es aber.

Das kann so nicht passen. Docker CE für Windows ist durchaus in der Lage sich ein aktives Hyper-V mit anderen VM's zu teilen.
Mache ich auf meinem Entwicklungsrechner genauso.

-> Ist Hyper-V aktiv, wenn du unter Systemsteuerung > Programme > Optionale Windows Features schaust oder nutzt die SPS nicht Hyper-V sondern einen anderen Hypervisor?

Alternativ, aber hacky:
Eine Linux VM im aktiven Hypervisor installieren und dort Docker nutzen.

Thema: JavaScript im C# ausführen, nachdem Request fertig geladen ist
Am im Forum: Web-Technologien

Hi,

HTTP Kommunikation funktioniert so nicht. Ein HttpRequest ist an einem bestimmten Zeitpunkt abgeschlossen.
Du müsstest das Senden der Antwort entsprechend verzögern, bis deine Berechnung durchlaufen ist. Genau dafür gibt es das async/await Pattern.
Allerdings darf es dafür auch nicht zulange dauern, denn irgendwann bricht der Client (idr. ja Browser) ab, wenn keine Antwort kommt.

P.S.: Bitte nutze die C#-Code Tags, dann kann man den Code auch gut lesen.

Thema: OnPaint löst beim Aufruf der WinForm nicht aus
Am im Forum: GUI: Windows-Forms

Der Name der Klasse deines Form, bei dem du OnPaint überschreibst, ist Program. Zumindest nach dem Codeschnipsel dort.

Du erstellst allerdings eine Instanz der Klasse Form:

Application.Run(new Form());

Edit:
Richtiger wäre: Eine neue Klasse (form) zu erzeugen, diese LabyrinthForm zu nennen und darin OnPain zu überschreiben. Danach erzeugst du dann in der Zeile mit Application.Run dein neues Form.

Thema: OnPaint löst beim Aufruf der WinForm nicht aus
Am im Forum: GUI: Windows-Forms

Ich würde tippen, dass dein Form überhaupt nicht aufgerufen wird.
Du instanziierst ja nicht deine Form, sondern dessen Basisklasse.

Ich habe auch noch nie gesehen, dass man die Klasse Program von Form erben lässt. Alleine vom Gefühl würde ich das trennen.

Thema: Windows Dienst Updaten wenn dieser bereits installiert ist?
Am im Forum: Netzwerktechnologien

Im einfachsten Fall: Der Dienst startet auch nur eine .exe, die sich an ein entsprechendes Muster hält.
Wenn du die .exe austauschst, wird die neue gestartet.
Dafür muss der Dienst natürlich beendet sein.

Ansonsten, wenn du dir unsicher bist würde ich einfach eine Beispielinstallation machen und es ausprobieren. Wesentlich sicherer, als ein Kommentar aus einem Forum :)
oder natürlich nach einer Doku suchen.

Thema: Probleme mit Umsetzung einer Formel (NaN)
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Mehr klammern :)


 double Widerstand = 200.0;
 (
 	(
		(3.90802 * Math.Pow(10, -1)) / 
		(2 * 5.802 * Math.Pow(10, -5))
	)
	
	- 
	Math.Sqrt(
		(
			Math.Pow((3.90802 * Math.Pow(10, -1)), 2) / 
			(4 *(Math.Pow((5.802 * Math.Pow(10, -5)), 2)))
		)
		
		- 
		(
			(Widerstand - 100) / 
			(5.802 * Math.Pow(10, -5))
		)
	)
).Dump();
--> 266,422135405272

Ich kann nur empfehlen, soetwas versuchen so übersichtlich wie irgend möglich zu implementieren.

Thema: Sporadischer Timeout bei SNMP Lextm.SharpSnmpLib
Am im Forum: Grundlagen von C#

Die Lib funktioniert eigentlich sehr gut - wenn man einmal den Einstieg gefunden hat - ich habe damit auch schon eine kleine Software umgesetzt.

Ich würde hier unterstellen, dass es ggf. an deinem Rechner liegt. Sachen die ich testen würde:

  • Starte zum Debuggen einmal VS als Administrator (hilft ggf. bei dem Port unter Windows)
  • Nutze Wireshark um zu schauen ob dir das Gerät, dass du ansprichst antwortet, wenn du nichts siehst, nutze Wireshark auf einem anderen Rechner, indem du auf einem zwischengelagerten Switch Port Mirroring aktivierst und so alle Pakete mitschneiden kannst
  • Schau, ob du mit einer anderen SNMP Software die GetBulkRequest Operation an deinem Endgerät ausführen kannst - vielleicht ist das dort einfach nicht richtig implementiert

Thema: SignalR Core funktioniert nicht auf Server - Lokal schon
Am im Forum: Web-Technologien

Du nutzt doch AspNetCore... AspNetCore hat ein Logging Konzept, dass auch in SignalR genutzt wird.

Zitat von Papst
Hast du mal die Loglevel auf Trace gesetzt?

Wenn du das Loglevel anpasst solltest du in deiner Console (oder alternativ auf einer beliebigen LogSink) weitere Ausgaben vom Server kriegen.

Thema: SignalR Core funktioniert nicht auf Server - Lokal schon
Am im Forum: Web-Technologien

Gibt denn deine Serverapp irgendeine Ausgabe im Logging oder in der Console?
Hast du mal die Loglevel auf Trace gesetzt?

Thema: Bei Programstart, falls DB nicht erreichen kann, Connectiondialog von MSSQL anzeigen
Am im Forum: Datentechnologien

Hi,

was genau möchtest du haben? Das "Verbindung aufbauen" Fenster von SQL Management Studio?
Vermutlich wirst du dir das nachbauen müssen - ausser du findest für deine verwendete UI Technologie eine Bibliothek, die dir das Fenster liefert.

Abgesehen davon ist es meistens keine gute Idee eine (Desktop-)Client Applikation direkt auf eine Datenbank zugreifen zu lassen. Sinnvoll ist es hier einen Service zwischen zu schalten, alleine schon weil du die Rechte dann granularer nutzen kannst.

Thema: Warum kann ich bei einer Überladungen der UDP-Send-Methode den IPEndPoint mit angeben?
Am im Forum: Netzwerktechnologien

Das liegt am Unterschied zwischen Verbindungslosem und Verbindungsorientiertem Protokoll.
UDP ist generell ein Verbindungsloses Protokoll (heißt, es existiert keine logische Verbindung zwischen zwei Sockets) und wenn du sendest ist es dir egal, ob es jemand am anderen Ende liest - das bekommst du einfach nicht mit.

Deswegen kann man mit einem UDPClient einfach auch dauernd an andere Endpunkte senden.
Mit einem TCPClient geht das nicht, denn der braucht immer erst eine Verbindung.

Thema: dynamische If-Abfrage
Am im Forum: Rund um die Programmierung

Deine Bedingungen sind im zweiten Array (K) als strings hinterlegt. Damit es auf die weise funktioniert, müsstest du die Strings parsen und auswerten.

Was du machen könntest wäre ein Array (oder Dictionary?) aus delegates, die du mit Lambda Ausdrücken befüllst:


List<Func<int, int, int bool>> K = new List<Func<int, int, int, bool>>();
K.Add(i1, i2, i3) => i1 == i2 && i1 == i3);

Infos zu Func<>: https://docs.microsoft.com/de-de/dotnet/api/system.func-2?view=netframework-4.8

Thema: Wie kann ich Service References in meiner Applikation nutzen?
Am im Forum: Web-Technologien

Interessanterweise ist ein HTTP 200 kein Reject.

Aber nimm einfach Fiddler und schau, was dein Client sendet. Dann kannst du das abgleichen.

Thema: Frontend und Backend auf zwei verschiedenen Servern
Am im Forum: Web-Technologien

Du musst bei den Backend Webservern entsprechend die CORS Header mitsenden.
Gibt dazu auch einen aktuellen Thread, der das gleiche Thema behandelt: SignalR Selfhosted Call geht nicht durch wegen CORS policy