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: SELECT Dateiname INTO DUMPFILE Dateipfad - Umlaute werden nicht richtig dargestellt
Am im Forum: Datentechnologien

Hi,

passt denn die Collation der Datenbank und die des Feldes?

Ich habe ehrlicherweise mit .NET immer vermieden mit MySQL zu arbeiten - jedesmal, wenn ich es machen musste gab es Probleme, die es mit anderen DBMS nicht gibt.
Vielleicht kannst du mal in den Sourcen von PHP schauen, was die an die DB senden, beim Aufruf von http://php.net/manual/de/mysqli.set-charset.php

Thema: SignalR Architektur: Wie Multimandantenfähig und wie eine MessageQueue?
Am im Forum: Web-Technologien

Hallo zusammen,

ich stehe davor, meiner Applikation ein RealTime Dashboard zu verpassen.
Hierfür möchte ich SignalR einsetzen, da die Daten auch eingangs gestreamed werden.

Idee ist also folgendes:
-> Daten kommen als Stream durch eine Message Queue
-> WebApp hängt an der Message Queue (--> hier fehlt mir eine bessere Idee, da diese Architektur nicht so schön skalierbar ist... da jede Nachricht nur von einem Client empfangen werden kann)
-> WebApp pusht per SignalR (IHubContext<THub>) in einem IHostedService die Daten an die Clients

Meine aktuellen Herausforderungen - und da finde ich leider die Dokumentation etwas unzureichend - sind:
-> Bessere Idee für die Schnittstelle MessageQueue -> WebApp
-> Wie mache ich das Multimandantenfähig?

Multimandantenfähig heißt in dem Fall:
Ein User hat einen bestimmten Mandanten (gewählt), in diesem mandanten gibt es n unterschiedliche Signale, die über SignalR kommen können. Ein Subset aus diesen Signalen hat er zu seinem Dashboard hinzugefügt.
Frage in dem Fall:
-> Besser viele SignalR Gruppen oder wenigere?
Die Frage bezieht sich darauf, ob ich für jedes Signal eine eigene Gruppe erstellen sollte (Dabei können wir gut auf 100k Gruppen kommen, wenn mal mehr als ein Mandant läuft; was ich für ziemlich viel halte!) oder macht es Sinn jedem Dashboard eine Gruppe zu geben und hier die Daten aufbereitet hinzusenden, was mich wieder zu der ersten Herausforderung führt: Die Schnittstelle MessageQueue -> WebApp müsste dann besser skalierbar sein.

Gehostet werden soll das ganze auf Azure. Ein SingalR Service wäre dann sicherlich eine Option.

Thema: SELECT Dateiname INTO DUMPFILE Dateipfad - Umlaute werden nicht richtig dargestellt
Am im Forum: Datentechnologien

Mit einem MySqlCommand

Thema: SELECT Dateiname INTO DUMPFILE Dateipfad - Umlaute werden nicht richtig dargestellt
Am im Forum: Datentechnologien

Du kannst bei MySQL das Encoding der Verbindung angeben.
Dazu einfach nach dem Aufbau der Verbindung das Encoding per Query setzen.
Siehe auch: https://dev.mysql.com/doc/refman/8.0/en/charset-connection.html

Thema: Wert-Duplikate aus Dictionary entfernen (key + value)
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Es gibt sicherlich schönere Lösungen als das hier, aber das was du machen musst zeigt es denke ich ganz gut:


void Main()
{
	Dictionary<int, Test> dictionary = new Dictionary<int, UserQuery.Test>()
	{
		{0, Test.A},
		{1, Test.B},
		{2, Test.A},
		{3, Test.C},
		{4, Test.A}
	};
	dictionary.Dump("Initial");
	var duplicates = dictionary
		// finde einträge bei denen
		.Where(x => 
			// irgendein Eintrag existiert, der
			dictionary.Any(y => 
				// nicht dem eigenen Eintrag entspricht, aber
				y.Key != x.Key && 
				// den gleichen Wert hat
				y.Value == x.Value))
		// hole dir die Keys der gefundenen Einträge
		.Select(x => x.Key)
		// Kopiere sie in eine Liste (Kann auch ein Array sein, wichtig ist nur diese zu kopieren, sonst geht der foreach nachher schief)
		.ToList();
	duplicates.Dump("Duplicates");
	foreach (var toRemove in duplicates)
	{
		dictionary.Remove(toRemove);
	}
	
	dictionary.Dump("Final");
}

// Define other methods and classes here
enum Test
{
	A,
	B, 
	C
}

Ausgabe siehe Anhang. Das snippet ist erstellt mit LinqPad (Daher kommt das .Dump() und die Ausgabe)

Thema: C# EF Core SQLite, lesen schreiben via primary / foreign key
Am im Forum: Datentechnologien

Wenn du die Navigation Property als virtual deklarierst kann EF das nachladen für dich übernehmen:http://www.entityframeworktutorial.net/lazyloading-in-entity-framework.aspx

Thema: Dotnet Core - Dotnet cli findet "dotnet" Command nur bei vollständiger Angabe des Pfades
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hast du garkeine Internetverbindung oder hängst du hinter einem Proxy?

Es gibt verschiedenste Möglichkeiten einen eigenen, offline Nuget Server aufzusetzen, der entweder sich ins Internet verbinden kann und so den offiziellen mirrorn kann oder in den du deine benötigten Pakete selber hinterlegen musst.
In der einfachsten Form kann das auch ein Netzwerk Share sein.

Thema: Scheduling von Datenpolling
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Danke, solche Erfahrungswerte bzw. Tipps habe ich mir versprochen :)

Thema: Scheduling von Datenpolling
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi,

meine Bedenken (vermutlich unbegründet) liegen darin, dass ich in diesem Projekt begrenzte Ressourcen habe (es soll unter IoT Edge auf Win 10 IoT Core laufen) und dort Daten von externen Geräten einsammeln. Das soll möglichst schnell geschehen und soweit das möglich ist (immerhin reden wir von einer managed Sprache und einer Prozessvirtualisierung) deterministisch, sprich mit wenig Jitter.
Quartz hat bei meinen Tests da auch die besten Ergebnisse geliefert, ich habe leider die Zielhardware noch nicht, so dass ich da noch keine Tests mit machen konnte und bisher nur ein grobes Konzept.

Meine expliziten Bedenken sind, dass viele parallel vom Scheduler getriggerte Jobs gleichzeitig anlaufen und ich dann durch das erstellen der ganzen Objekte, suchen der TCP Verbindung usw.. einen relativ großen Overhead und damit eine Verzögerung reinbekomme.
Deswegen suche ich nach Erfahrungswerten. Ich habe Quartz selber schon eingesetzt, dabei aber eher sowas wie "mache alle 10 min etwas" auf einer Windows VM umgesetzt. Hier kann es auch darum gehen alle 200ms etwas zu triggern.

Thema: Scheduling von Datenpolling
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo zusammen,

ich mache mir gerade Gedanken darum, wie ich am sinnvollsten ein kleines Schedulingproblem lösen kann.
Ich benötige ein Scheduling für Datenpolling Aufgaben im Sekunden oder ggf. auf Sub-Sekunden bereich, es soll so z.B. alle x sec ein neuer Datenabruf gestartet werden.

Ich habe mir hier bereits mehrere Scheduling Libs wie Quartz oder Hangfire angesehen und denke dass man das damit (vorallem Quartz) ganz gut lösen könnte, habe aber ein wenig Angst vor dem Overhead, den die Libs mitbringen.

Hat jemand hier ggf. bereits Erfahrungswerte?
In C/C++ hätte ich die Threads vermutlich einfach an eine Semaphore gehangen - den Weg versuche ich gerade einmal in C# zu konstruieren, bin mir aber relativ sicher, ob das der richtige Weg ist.

Edith sagt: Noch ein paar Infos sind vielleicht ganz hilfreich...
-> Basis Framework .net core 2.1
-> Laufzeitumgebung wird docker sein
-> Das Scheduling soll permanent laufen, die unterliegenden TCP Verbindungen werden separat verwaltet und debugged, es laufen im Scheduling dann "nur" die Applikationsschicht Clients
-> Nach dem Abfragen der Daten müssen diese noch von ushort[] in Zieldatentypen konvertiert werden, dies soll innerhalb des schedulten Task stattfinden
-> Transport Protokoll ist Modbus/TCP

Thema: User.Identity.IsAuthenticated - nur für meine Seite
Am im Forum: Web-Technologien

Suchst du eventuell soetwas wie einen Identitätsprovider?

Z.B., dass sich jemand mit einem Google Account auf deine Seite einloggen kann?

Thema: Windows Service nach Installation nicht aufgelistet oder sichtbar
Am im Forum: Netzwerktechnologien

Den Namen selber gibst du ja bei der Registrierung des Services an. Dabei ist es unerheblich, ob du diesen über die passenden .NET Framework Klassen, die sc.exe oder mithilfe einer Lib wie TopShelf installierst.

Du könntest den relevanten Code (also die Registrierung des Service) einfach direkt hier posten.

Thema: Gibt es eine Datenbank, die lokal im Projekt liegt & in der Linq-to-sql funktioniert?
Am im Forum: Datentechnologien

Irgendwas ging zur Laufzeit schief :)

Hast du denn mal Google bemüht mit deinem Fehler?
Brauchst du zwingend die Versionsangabe im Connection String - in der offiziellen Doku bzw. Codebeispiel daraus ist die auch nicht drin (da bin ich übrigens mit "ef core sqlite version" via google hingekommen).

Thema: [Git] Erstellung von Repositories für Teilprojekte
Am im Forum: Rund um die Programmierung

Hi,

du kannst durchaus einzelne Repositories pro Teilprojekt anlegen, das bringt aber nur Komplexität in dein Sourcecode handling und würde nur dann Sinn machen, wenn du die Teilprojekte anderweitig noch verwendest. Wenn du allerdings die Teilprojekte anderweitig verwendest ist es wesentlich sinnvoller diese in einen Paketmanager (für .net wäre das nuget) auszulagern. Möchtest du deine nuget Pakete nicht veröffentlichen, so kannst du auf private Feeds oder auch einen Ordner zurückfallen um deine Pakete zu verwalten.

Dafür musst du allerdings erst einmal an einen Punkt kommen, an dem du die notwendigkeit hast ein Teilprojekt ausserhalb deiner aktuellen Solution zu verwenden.

Thema: Control mit Excel / Access funktionalitäten
Am im Forum: GUI: WPF und XAML

Aktiv in der Weiterentwicklung ist auch dieses DataGrid: https://github.com/xceedsoftware/wpftoolkit
Die Community Version kann meines Wissens nicht filtern, das ließe sich aber selber programmieren. Was die Pro Version kann müsstest du dort nachschauen.

Thema: [Erledigt] X509Certificate2 aus Bytes: Exception in Azure WebApp
Am im Forum: Web-Technologien

Manchmal ist es so einfach :) Danke.

Den Link kannte ich nicht, aktuell scheint es aber nicht zu sein - das ist noch das alte Azure Portal.
Ob das noch so funktioniert kann ich nicht sagen, ich wollte allerdings explizit den Weg über den Key Vault gehen.

Thema: [Erledigt] X509Certificate2 aus Bytes: Exception in Azure WebApp
Am im Forum: Web-Technologien

Moin,

ja normalerweise kümmere ich mich um jede Exception, bis ich verstanden habe weshalb sie kommt und wie ich sie beheben kann :)
Dieses mal bin ich, um eine funktionierende Lösung zu haben, temporär auf

.AddDeveloperSigningCredentials()
umgestiegen, was das Problem umgeht.

Hier der passende Code Teil


string certString = Configuration.GetValue<string>("IdentityServerPfx");
// TODO: fix this, on AzureWebApp creating the cert from bytes fails with Exception
if (string.IsNullOrEmpty(certString))
{
	builder.AddDeveloperSigningCredential();
}
else
{
	byte[] certBytes = Convert.FromBase64String(certString);
	X509Certificate2 cert = new X509Certificate2(certBytes, string.Empty, X509KeyStorageFlags.MachineKeySet|X509KeyStorageFlags.Exportable|X509KeyStorageFlags.UserKeySet);
	builder.AddSigningCredential(cert);
}

und die Exception:
Fehler
Unhandled Exception: Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException: The system cannot find the file specified
at Internal.Cryptography.Pal.CertificatePal.FilterPFXStore(Byte[] rawData, SafePasswordHandle password, PfxCertStoreFlags pfxCertStoreFlags)
at Internal.Cryptography.Pal.CertificatePal.FromBlobOrFile(Byte[] rawData, String fileName, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags)
at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(Byte[] rawData, String password, X509KeyStorageFlags keyStorageFlags)


Ich habe schon verschiedene Sachen geprüft, einfach um sicher zu gehen, dass die Services alle passen:
  • Die KeyVault Verbindung funktioniert (es werden andere secrets abgerufen)
  • Die Zertifikat Bytes stimmen mit denen überein, die lokal bei mir funktionieren
  • Das Zertifikat aus lokaler Dateiquelle eingelesen funktioniert auch nicht (Einlesen nach byte -> gleicher Konstruktor)


Zu der Exception habe ich eigentlich nichts gefunden, was auf meine Umgebungskonstellation passt. Das scheint so niemand zu machen (oder niemand hat Probleme damit), das Zertifikat aus einem KeyVault zu holen.

P.S.:
mein "temporärer fix" war


if (string.IsNullOrEmpty(certString) || true)

... nur der Vollständigkeit halber, damit der Kommentar im Code nicht "sinnlos" dasteht :)

Thema: [Erledigt] X509Certificate2 aus Bytes: Exception in Azure WebApp
Am im Forum: Web-Technologien

Hi,

ich versuche ein X509 Zertifikat aus einem Bytearray zu erstellen.
Ich benutze dies in einer .net core 2.0 (ASP MVC) app.
Das erstellen des Objektes funktioniert lokal in meinem VS mit den gleichen Zertifikatsbytes (abgefragt aus einem Azure Key Vault) wunderbar. Lade ich die App allerdings als WebApp hoch und führe es dort aus bekomme ich eine Exception, welche im Text auf FileNotFound verweist.

Unter der Exception habe ich bei Google leider nichts auf mein Problem zutreffendes gefunden, habe mir die genaue Exception dummerweise auch nicht notiert und kann sie erst morgen wieder reproduzieren. Aber vielleicht hat ja jemand bereits etwas ähnliches gemacht.

Edit: Das Zertifikat soll zum signieren bei einem IdentityServer eingesetzt werden, das sollte hierauf aber keinen Einfluss haben, da es ja schon im Konstruktur des Zertifikat Objektes knallt.

Thema: Visual Studio 2017 - Ihre App wurde angehalten, aber es gibt keinen anzuzeigenden Code
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Zu deiner Fehlermeldung habe ich im msdn Forum einen Thread gefunden.

Da ich deinen Code nicht kenne kann ich das nicht beurteilen ob es die gleiche Ursache ist.

Thema: Zum Austausch von Daten: Remoting oder REST?
Am im Forum: Netzwerktechnologien

Hast du dir deine Antwort nicht schon selber gegeben?

Zitat
Bei Word kann ich ja über die Befehlzeile mitgeben, welches Dokument geöffnet werden soll.
So was ähnliches, nur das eben die Anwendung schon offen ist, und es auch nur eine Instanz von ihr gibt.

Warum machst du nicht genau das?

Deine zweite Anwendung (wenn es eine zweite sein muss..) wird mit einem Parameter aufgerufen. Von dieser zweiten Anwendung kann es nur eine Instanz geben. Google spuckt dazu eine ganze Menge aus. Ist schon eine Weile her, dass ich genau sowas auch implementiert habe.

Thema: ASP.NET Core in Docker -> Image Pull schlägt fehl
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Moin,

bei mir war es tatsächlich die Docker Version am Client, mit der ich die Images gebaut habe.

Ich bin jetzt auf meinem Entwicklungsrechner zurück auf 17.06.2-ce gegangen und habe das gleiche image neu gebaut. Es ließ sich wunderbar aus der Registry pullen und läuft problemlos.

Thema: ASP.NET Core in Docker -> Image Pull schlägt fehl
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hi,

vielleicht habe ich dann etwas falsch interpretiert oder wiedergegeben.
Installiert habe ich dieses: https://store.docker.com/editions/enterprise/docker-ee-server-windows
Eine Version steht auf der Webseite nicht dabei, ich kann aber morgen mal die Versionsnummern des installierten auslesen, da ich neu installiert habe sollte hier aber der aktuelle Stable installiert sein.

Das, was ich ausdrücken wollte ist: Es funktioniert problemlos mit dem Windows 10 und dem "Docker for Windows", welches auf der Docker Store seite als "CE" bezeichnet wird, allerdings nicht mit dem als "EE" bezeichneten für Windows Server 2016.

Da das Image ausschließlich unter Windows laufen soll habe ich bisher nicht probiert das Image als Linux Version zu erstellen, geschweige denn laufen zu lassen.

Edit:
Wie stelle ich so eine Kompatibilität her?
Mein Image baut sich vom Grund her wie folgt auf:
-> Basis Layer ist microsoft/aspnetcore:2.0
-> ENV Layer
-> Für Windows, published ASP Net Core 2.0 App

Edit #2:
Kopf -> Tisch... Danke für den Ansatz.. es gab ja vor ein paar Tagen ein Docker Update, allerdings nicht für die Windows Server Version vermute ich mal.
Vielleicht kommt die inkompatibilität da her.

Thema: ASP.NET Core in Docker -> Image Pull schlägt fehl
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hi,

ich entwickele gerade eine ASP Net Core Applikation, die in Docker als Windows Container laufen soll.
Wenn ich das Image dann aus meiner Container Registry pullen will schlägt dies mit dem Fehler "The system cannot find the path specified." während des extrahierens fehl.
Allerdings tritt dies nur unter Windows Server 2016 mit Docker EE auf, nicht unter Docker CE auf meiner Entwicklungsmaschine oder eine Windows 10 Entwicklungsmaschine in Azure auf.

Alles was ich in den Docker issues o.ä. gefunden habe war nie Image Spezifisch und die Punkte (Bitlocker, Antivirus, etc..) habe ich auch alle erfolglos durch, bevor ich das ganze einmal auf einer Windows 10 Maschine getestet habe.

Hat schon einmal jemand ein ähnlich gelagertes Problem gehabt oder eine Idee, wo ich hier ansetzen könnte?

Thema: Reaktionszeit vom Erscheinen eines Labels bis zum Klicken davon messen
Am im Forum: Grundlagen von C#

Hi,

ich vermute, dass was du suchst ist die Klasse StopWatch, ein Timer löst nach dem ablaufen einer Zeit ein Event aus, eine StopWatch zählt bis zu einem Event.

Hilft dir das weiter? Wenn nicht müsstest du bitte einmal deinen bisherigen Ansatz zeigen.

Thema: "Tabelle" transponiert serialisieren
Am im Forum: Datentechnologien

Klarer Fall von zu früh gefragt :)

Kaum fertig geschrieben bin ich auf JsonConverter gestoßen und denke, dass ist die Lösung nach der ich gesucht habe.

Thema: "Tabelle" transponiert serialisieren
Am im Forum: Datentechnologien

Hi,

ich habe eine Datenklasse in folgendendem Format:


class Table
{
	public string[] Header { get; set; }
	public Row[] Data { get; set; }
}

class Row
{
	public DateTimeOffset Timestamp { get; set; }
	public double?[] Values { get; set; }
}

Beispielinhalt siehe Screenshot unten.

Diese möchte ich nach Json Serialisieren. Das würde so funktionieren, denn ich bekomme sie via Json übertragen, aber um sie später einmal in eine NoSQL Datenbank speichern zu können würde ich das Datenformat gerne "transponieren" und nach JSON serialisieren. Natürlich könnte ich da einfach mit einem Stringbuilder rangehen, finde ich allerdings nicht sehr elegant.
Für Newtonsoft.Json gibt es ein paar Beispiele wie man eine DataTable in der Form serialisieren kann, den Umweg würde ich allerdings ungerne gehen.

Das Ergebnis soll dann etwa so aussehen:

[
  {
    "Timestamp": "2017-10-30T21:46:21.9707035+01:00",
    "Test1": 1.0,
    "Test2": 2.5
  },
  {
    "Timestamp": "2017-10-30T21:46:21.9707035+01:00",
    "Test1": 1.0,
    "Test2": 2.5
  },
  {
    "Timestamp": "2017-10-30T21:46:21.9707035+01:00",
    "Test1": 1.0,
    "Test2": 2.5
  },
  {
    "Timestamp": "2017-10-30T21:46:21.9707035+01:00",
    "Test1": 1.0,
    "Test2": 2.5
  }
]

Hatte schon jemand einmal ein solches "Problem", wie kann ich das am besten angehen?

Thema: Embedded Resource mehrmals nutzen
Am im Forum: Grundlagen von C#

Auch, wenn das eigentliche Problem gelöst ist, gegenfrage:
Warum kopierst schreibst du die Test.exe und startest sie dann? Wenn du die Sourcen hast und beim Kompiliervorgang die Test.exe sowieso mitkompiliert wird - was spricht dagegen, die Klassen, die jetzt in die Test.exe einkompiliert werden aus deinem Programm direkt anzusprechen?

Thema: Fehler bei der Erstellung der Datenbank "Incorrect syntax near the keyword 'NOT'."
Am im Forum: Datentechnologien

Hi,

gibt es einen Grund, warum du die Spaltentypen für die Datenbank selber festlegst?
Hier liegt nämlich auch der Fehler:


modelBuilder.Entity<WaterLevels>()
        .Property(b => b.TemperatureMin)
        .HasColumnType("decimal(5,2")
        .IsRequired();

Denn die Typen erkennen kann EF von alleine.

Thema: IdentityServer4 Plattform Beispiel basierend auf .NET Core und ASP.NET Core
Am im Forum: Projekte



sehr schön, danke!

Thema: serial Port nutzung bei mehreren UserControls
Am im Forum: GUI: Windows-Forms

Hi,

die Lösung deines Problems wäre eine [Artikel] Drei-Schichten-Architektur .
"Irgendwo" laufen Daten in einer Datenschicht an und werden der GUI zur Verfügung gestellt. Das würde allerdings ein Refactoring deines Programms bedeuten.