Laden...
Avatar #avatar-3248.png
Christoph K. myCSharp.de - Member
Softwareentwickler Köln Dabei seit 15.02.2009 821 Beiträge
Benutzerbeschreibung

Forenbeiträge von Christoph K. Ingesamt 821 Beiträge

02.10.2023 - 09:07 Uhr

Hallo,

ich möchte in meinem ASP MVC .net 7.0 Projekt gerne die statischen CSS-Dateien modifizieren, bevor sie ausgeliefert werden. Ich müsste mich also irgendwie in den StaticFileHandler einklinken. 
Im Endeffekt sollen bei den CSS-Dateien nur ein paar Farben ersetzt werden.

Hat jemand einen Ansatz für mich?

Gruß

Christoph

02.06.2023 - 20:42 Uhr

Hallo zusammen,

ich suche eine Bibliothek oder eine Sammlung von Regex um C# Code zu Parsen und zu überarbeiten.

Z.B. will ich bei allen Methoden, die einen bestimmten Rückgabetyp haben etwas in der Methode ändern.

Gibts es hierzu schon irgendetwas vorgefertigtes?

Ansonsten würde ich das ganze via Regex lösen.

Viele Grüße

Christoph

30.04.2023 - 19:23 Uhr

Hmm, ich finde leider bei den Links nichts, was mir helfen kann.

Ich bekomme es einfach nicht hin, dass ich bei einem Post Request weiterhin eine Liste von Parmetern direkt in die Parameterliste der Methode schreiben kann.

Wenn es jemand besser weiss, würde ich mich über ein konkretes Beispiel freuen.

30.04.2023 - 11:01 Uhr

Hallo zuammen,

ich möchte ein (riesieges) ASP .NET 4.8 Projekt auf das neue ASP 7.0 Refactoren und bin gerade auf das erste Problem gestoßen.

Im alten ASP laufen alle Post Request einfach auf die Parameterliste der Methode ein, die dan ActionResult zurückgibt.

public ActionResult DoIt(string para1, string para2);

Dies geht ja nun nicht mehr, und mann muss alle Parameter in einer Klasse kapseln und dann in Form eines Parameters + dem Attribute [FromBody] in die Parameterliste schreiben.

Meine Frage ist, ob es hierfür ein automatisches Refectoring gibt? Oder einen Umweg, sodass der alte Weg weiterhin funktioniert?

31.01.2023 - 18:14 Uhr

Wie macht das denn dann z.B. Google Analytics?

31.01.2023 - 17:42 Uhr

Hallo,

ich habe ein ASP.Net MVC 5.0 Projekt und möchte das auf eine bestimmte Action eines Controllers nur von einer bestimmten Domain zugegriffen werden kann.
Letztendlich soll ein Javascript auf diversen Webseiten integriert werden können, welches zur Funktion auf mein Backend zugreifen muss.
Hierbei soll natürlich verhindert werden, dass sich jemand das Javascript einfach kopiert und auf einer unauthorisiertenSeite verwendet.
Die Zugriffe sollen nur von authorisierten Domain ermöglicht werden.
Man kann sich das ganze so vorstellen, wie der Code von Google Analytics. Hier kann ich ja ebenfalls den Code und die Analytics Property auslesen. Es bringt jedoch nichts, den Code auf meiner eigenen Seite einzubinden, da nur Zugriffe von der Ausführung auf der ausgewählten Domains getrackt werden.

Wie realisiere ich so etwas?

Gruß
Christoph

06.12.2022 - 14:43 Uhr

Hallo zusammen,

ich möchte gerne von einem C# Programm aus einen Befehl an einen Linux Rechner absenden. Zusätzlich müsste dieser Befehl auch Binärdaten (Bilddateien) mitbekommen und das ganze sollte am besten über eine IP-Verbindung übertragen werden.
Im Endeffekt suche ich ein vorgefertigtes Framework, welches z.B. einen HTTP-Endpunkt bereitstellt, der Daten entgegennimmt und diese Daten in einen Shell -Befehl umwandelt.
Bevor ich anfange, das selber zu programmieren, wollte ich mal fragen, ob es hierfür nicht schon irgendwas Fertiges gibt?

VG
Christoph

22.11.2022 - 11:05 Uhr

Vielen Dank für deine Antwort, aber ich möchte nicht eine spezifische Action eines Controllers handhaben, sondern alle Anfragen, die über den StaticFileHandler abgebildet werden.

22.11.2022 - 09:33 Uhr

Hallo zusammen,

ich habe ein ASP.net MVC Projekt, welches unter .net 4.8 läuft.
Ich würde gerne Anfragen an CSS Dateien verändern, bevor sie ausgeliefert werden. Es geht um eine simple String-Ersetzung.

Hat jemand eine Idee, wie ich jegliche Anfrage an CSS-Dateien vor der Auslieferung an den Client verändern kann? Bzw. die Response verändern kann?

LG
Christoph

16.11.2022 - 15:53 Uhr

Hatte ich auch schon probiert:

[$RootKey$\FeatureFlags\Cps\EnableConfigurableFileNesting] => Gibt es bei mir in der Datei nicht.
Ich hatte dann den Eintrag manuell hinzugefügt, was leider auch nichts gebracht hat.

16.11.2022 - 11:31 Uhr

Hallo zusammen,

ich arbeite zurzeit mit VS 2019 und benutze dort ein Plugin für das FileNesting (z.B. um .js Dateien unter .ts Dateien zu nesten).
Ich würde gerne auf VS 2020 upgraden, muss jedoch feststellen, das das Plugin unter 2022 nicht mehr verfügbar ist. Gleichzeitig bietet VS 2022 eine eigene Funktionalität zum FileNesting an, welche jedoch (so wie es mir scheint) nur für Projekte ab .net 5.0 oder .net Core verfügbar ist.
Wenn ich meine ASP.Net 4.8 Solution mit VS 2022 aufrufe fehlt diese Option.

Hat jemand eine Lösung für mich?

VG
Chris

24.10.2022 - 10:16 Uhr

Hallo zusammen,

früher gab es von Microsoft immer Zertifizierungen für die Grundlagen von .NET.
Leider sind alle grundlegenden Zertifizierungen auf der Seite von Microsoft mittlerweile als "deprecated" gekennzeichnet.

Gibt es diese nicht mehr? Alles was ich finde, sind sehr spezielle Zertifizierungen zu irgendwelchen Detailthemen. Wir würden unsere Mitarbeiter jedoch gerne erstmal in den Grundlagen von .net/C# zertifizieren lassen.

VG
Christoph

16.08.2022 - 12:51 Uhr

Habs gefunden!

Vielen Dank für die Hilfe!

16.08.2022 - 11:34 Uhr

Verwendetes Datenbanksystem: MSSQL mit EF Core

Hallo zusammen,

wie kann man denn im EF Core eine Stored Procedure ausführen?
Ich finde im Internet nur den Code, dass man diese mit DbSet<T>.FromRawSql(...) ausführen kann.
Für meine StoredProcedure gibt es aber kein DbSet, da sie gar keinen Rückgabewert hat.
Wenn ich ein beliebiges DBSet "missbrauche" bekomme ich eine Fehlermeldung, dass sich die Properties nicht mappen lassen.

VG
Christoph

06.08.2022 - 11:59 Uhr

Hallo zusammen,

ich betreue ein ziemlich großes Projekt, welches aus mehreren einzelnen Projekten besteht, die teilweise als Anwendung laufen, teilweise als ASP MVC Projekt und teilweise auf der Konsole.
Alle Projekte bedienen sich für die Kernfunktionen aus einer Logic-DLL.

Die Projekte sind zurzeit alle mit .net 4.8 umgesetzt.

Bei neuen Projekten wollen wir im Team nun auf .net 6.0 setzen, welches ja nicht mehr kompatibel zu .net 4.8 ist. Wir möchten aber bei den neuen Projekten im Gesamtprojekt ebenfalls auf die Logic-DLL zurückgreifen.

Ist es hier der richtige Weg, die Logic-DLL in .net-Standard 2.0 zu konvertieren?

VG

25.07.2022 - 14:21 Uhr

Was soll denn diese beleidigende Ausdrucksweise?

Erstens ist es ein Testsystem, was in einer Sandbox-Umgebung läuft und zweitens hat das überhaupt nichts mit meiner Frage zu tun.

Vergiss es einfach, ich gucke woanders nach Hilfe.

25.07.2022 - 14:19 Uhr

@Abt

"Da können wir auch nicht mehr sagen als: geb die richtigen Daten ein. Die Fehlermeldung lügt nicht."
=> Genau das ist ja meine Frage. Ich kann den gesammten ASP.Net Prozess ja nicht unter dem User des NAS laufen lassen.

25.07.2022 - 14:10 Uhr

@Abt

Ich habe das Drive mit dem In Windows angemeldeten Benutzer gemapped, dieser ist WIN-KF1KH9ONF28\Administrator.
Genau mit diesem Benutzer lasse ich den ASP.Net (kein Core!) Prozess im Moment auch laufen.

Wenn ich mir in ASP.Net den User mit


var username = System.Security.Principal.WindowsIdentity.GetCurrent().Name;

ausgeben lassen, erhalte ich auch genau den User.
Ein einfaches


var files = Directory.GetDirectories(@"Z:\");

führt jedoch zu der Expception: DirectoryNotFoundException: Ein Teil des Pfades "Z:&quot; konnte nicht gefunden werden.
In Widows selbst ist das Drive einwandfrei auf Z: gemapped.

25.07.2022 - 12:54 Uhr

Nein,
das ist auch nicht möglich, da der ASP-Benutzer ja nur lokal vorhanden ist.
Das NAS und der Rechner sind auch nicht mit einer Domäne verknüpft.

25.07.2022 - 12:43 Uhr

Hallo,

ich möchte von einer ASP .NET Applikation auf ein Netzlaufwerk zugreifen.
Dies funktioniert weder, wenn ich den UNC direkt ansprechen, noch wenn ich das Drive vorher (z.B. auf E:) mappe und probiere zuzugreifen.

Im ersten Fall kommt immer die Meldung, dass Benutzername und Passwort falsch sind. Im zweiten Fall sagt mir ASP.net, dass E: nicht gefunden werden konnte.
Was soll ich tun?

VG
Christoph

07.07.2022 - 09:56 Uhr

Hallo zusammen,

gibt es in Visual Studio eine Möglichkeit zu schauen, ob ein NuGet-Paket noch verwendet wird?

VG
Christoph

09.05.2022 - 08:38 Uhr

Es handelt sich um eine OutOfMemoryException

@T-Virus: Es handelt sich um die Abstraktion eines realen Problems. Es geht im Endeffekt darum, das ein RAM-Cache benötigt wird, der entsprechend viele Objekte in einem Dictionary beinhalten soll.

06.05.2022 - 09:14 Uhr

Warum sollte die auftreten?
Es ist eine 64 Bit Applikation und auf dem Computer ist noch genügend freien RAM vorhanden.

06.05.2022 - 08:57 Uhr

Hallo,

ich habe folgenden Code zum Befüllen eines Dictionarys.
Wenn das 95991738 Element eingefügt wird, die Exception "Die Arraydimensionen haben den unterstützten Bereich überschritten." geworfen.
Kann sich das jemand erklären?


            var test = new Dictionary<int, int>();

            var count = 0;
            while (true)
            {
                test.Add(count++, 1);
            }

29.01.2022 - 09:26 Uhr

Hallo zusammen,

ich bin auf der Suche nach einem Algorithmus, der folgendes Problem löst.

Es sind 1000 Personen gegeben, die sich alle untereinander mehr oder weniger mögen. Wie doll sich zwei Personen mögen wird mit einer Gleitkommazahl zwischen 0 und 1 ausgedrückt. Bei 0.1 mögen sie sich eher weniger, bei 0.9 mögen sie sich schon sehr doll. Die Werte die diese Zahl annehmen kann sind aber fließend.

Es sollen nun n Gruppen gebildet werden, mit Personen die sich möglichst dolle mögen, somit n Gruppen, die möglichst gut zusammenpassen. Hierbei kann es natürlich auch sein, dass eine Person nicht mit der Person zusammen in einer Gruppe ist, die sie am meisten mag, jedoch im Ganzen besser in diese Gruppe passt. Die Eingabe der Gruppen n, die gebildet werden soll, soll dabei variabel sein.

Kann mir einer sagen, wie ich dieses Problem in einem Algorithmus löse?

27.01.2022 - 07:32 Uhr

Verwendetes Datenbanksystem: MsSql

Hallo zusammen,
wir verwenden das EntityFramework und (soweit ich mich erinnere) das Ado.net Entity Data Modell um von unserer MsSql-Datenbank die entsprechenden Klassen zu generieren.
Wenn sich etwas ändern, muss ich dazu jedes mal das .edmx File aufrufen und in dem Designer das EntityModell akualisieren. Teilweise muss man auch im Designer alles Löschen und komplett neu hinzufügen, damit das sauber läuft.
Ich suche nun eine einfachere Methode, bei der ich einfach (z.B. durch Rechtsklick auf die .edmx-Datei) den kompletten Code neu generieren lassen kann.

Gibts es so etwas?

Viele Grüße
Christoph

27.01.2022 - 07:26 Uhr

Hallo zusammen,

wir überlegen gerade aus verschiedenen Gründen von .net 4.7 (das alte .net Framework) auf das neue universelle .net 5.0 zu migrieren.
Hat jemand Erfahrungen, wie aufwendig so etwas ist?
Ein Teil des Projektes ist ein ASP.net MVC 3.0 Projekt. Ist eine einfache Migration hier überhaupt machbar?

Viele Grüße
Christoph

02.12.2021 - 10:23 Uhr

Danke für die Antwort.
Ich habe ja das Problem, dass es sich bei der betroffenen Library um eine externe Library handelt, die beim Aufrufen einer Funktion StackOverflowException wirft.

Daher kann ich hier nicht wirklich viel analysieren.

02.12.2021 - 10:06 Uhr

Hallo zusammen,

ich verwende eine externe Bibliothek, die zurzeit unter bestimmten Umständen eine "StackOverflowException" wirft.
Leider habe ich bisher nicht rausgefunden, wie ich in meiner Anwendung hier rauf reagieren kann (try-catch fängt diese Exception ja nicht).
Im Moment stürzt mir immer die ganze Anwendung ab, wenn dieser Fall eintritt.

Kann mir jemand helfen?

Gruß
Christoph

15.07.2021 - 13:51 Uhr

Hallo zusammen,

ich suche nach einer Möglichkeit, visuelle Unterschiede in einem Bild (bzw. im Vergleich von zwei Bilder zu erkennen).
Hierbei geht es mir nicht um einen Pixelvergleicht, sondern um eine intelligentere Methode, die Vergleicht, in wie fern sich das Bild wirklich geändert hat.
Konkret möchte ich zwei Versionen einer Webseite vergleichen (die gerenderten Versionen). Wenn ich die Pixel 1 zu 1 vergleich, dann würde ich eine fast 100%ige Änderung erhalten, wenn ich oben auf der Webseite eine Zeile Text einfüge. Ich suche nun nach einem Verfahren/Algorithmus, der mir in diesem Fall ein realistischeres Ergebnis liefern würde.

VG
Christoph

09.04.2020 - 15:21 Uhr

Es ist ASP.Net
Auf dem Server laufen mehrere Projekte, aber nur das eine wird immer neu gestartet.
Der Neustart erfolg alle 2 Minuten.

09.04.2020 - 14:20 Uhr

Hallo zusammen,

ich habe ein ASP Projekt, was im Live-Betrieb ca. alle 5 Minuten neu startet.
Hierdurch wird jedes mal der sehr aufwendige Initialisierungsprozess angestoßen.

Weiss jemand woran das liegen könnte ?

VG
Christoph

25.02.2020 - 11:29 Uhr

Wow danke für die ausführliche Erklärung @gfoidl.

Jetzt hab ich schon nen ziemlich guten Überblick!

25.02.2020 - 07:32 Uhr

Vielen Dank für deine schnelle Antwort.

Was ist denn jetzt schon wieder dotnet Standard ? 😄

Das ist komplett an mir vorbei gegangen.

25.02.2020 - 06:54 Uhr

Hi zusammen,

ich beschäftige mich gerade mit den Unterschieden zwischen .net Framework und dotnet core, weil wir eine Migration überlegen.

Mir ist aufgefallen, das ist fast jede .net DLL via nuget in ein core projekt importieren kann und auch unsere eigenen Projekte-DLL importierbar (und auch funktionstüchtig) sind.

Ist das richtig so? Bzw. wo sind hier die Grenzen? Oder kann ich quasi alles in core verwenden, was nicht plattformspezifisch ist, bzw. auf eine GUI angewiesen ist?

04.05.2019 - 05:47 Uhr

Hallo zusammen,

wir enwickelt zurziet die erste SPA, bei der das Frontend und das Backend auf zwei verschiedenen Server laufen sollen.

Dabei soll das HtmlJsCss Frontend nur über Ajax-Calls mit dem Backend kommunizieren. Die ersten Versuche ergaben eine Menge Probleme im Bereich Cross-Domain-Policies.

Habt ihr vielleicht eine Anleitung, was zu beachten ist, wenn man so etwas vorhat, oder ist es generell keine gute Idee, so etwas zu realisieren?

Vielen Dank

08.01.2019 - 08:58 Uhr

Hallo zusammen,

ich möchte in c# den Port (Address) und den Hub eines verbundenen USB-Devices ermitteln.
Mit dem USB-Device-Viewer von Microsoft (siehe Screenshot) ist dies wunderbar möglich.
Ich finde jedoch im Internet keine Hilfe, wie ich dies mit C# abfragen kann.

Hat jemand eine Idee?

11.12.2018 - 07:36 Uhr

verwendetes Datenbanksystem: MsSql-Server

Halo zusammen,

ich habe einen SQL-Server-Agent-Job der immer fehlschlägt, wenn er automatisch ausgeführt wird. Die Fehlermeldung lautet:

Fehlermeldung:
Ausgeführt als Benutzer: ''NT SERVICE\SQLSERVERAGENT''. Die Transaktion (Prozess-ID 72) befand sich auf Sperre Ressourcen aufgrund eines anderen Prozesses in einer Deadlocksituation und wurde als Deadlockopfer ausgewählt. Führen Sie die Transaktion erneut aus. [SQLSTATE 40001] (Fehler 1205). Fehler bei Schritt.

Der Job ist nicht sonderlich kompliziert und läuft normalerweise innerhalb von 10 Sekunden durch.

Führe ich den SQL-Code manuell aus, ergibt sich kein Problem. Stoße ich den Agent manuell an, wird der Job ebenfalls einfwandfrei durchgeführt. Der Benutzerkontext ist dabei der gleich:

Ausgeführt als Benutzer: ''NT SERVICE\SQLSERVERAGENT''. Der Schritt war erfolgreich.

Es ist auch vollkommen egal, um welche Uhrzeit der Job ausgeführt wird.

Hat jemand eine Erklärung?

Vielen Dank!

02.10.2018 - 10:07 Uhr

Hallo zusammen,

ich möchte in meiner Anwendung unbehandelte Exception abfangen und via MessageBox anzeigen, wenn eine unbehandelte Exception aufgetreten ist.
So lange ich die MessagBox jedoch anzeige bleibt die Anwendung aktiv, bzw. nebenläufige Threads bleiben weiter aktiv.

Ich möchte die Anwedung jedoch unmittelbar nach der Exception beendet und dennoch einen Hinweis anzeigen.
Wie mache ich so etwas ?

02.09.2018 - 07:40 Uhr

Ganz so einfach ist das nciht.
Natürlich könnte ich die Texte einfach via Md5 hashen, jedoch soll der Vergleich nicht boolean sonder double als ergebnis haben 😄

Also ich möchte aus einer Menge aus n Texten ein Scoring habne, welche Texte sich am ähnlichsten sind (ähnlich -> nicht genau gleich).

Zum relativen Vergleich zweiter Texte kenne ich ein paar Algorithmen. Einer davon ist z.B. das ermittelt wird wie viele Wort-Einfüge-Lösche-Operationen nötig sind, um von dem einen Text auf den anderen zu kommen (eine Abwandlung der Levenstein - Distanz).
Mit lediglich zwei texten ist das auch nicht sonderlich aufwendig. Aufwendig wird es dadurch, dass beim Vergleich von n Texten eben genau n Texte mit n Texten verglichen werden müssen. Das wird sehr schnell sehr aufwendig/teuer.

Daher suche ich hier etwas performanteres. Ein erster Ansatz war es, die Top 10 Wörter der Texte herrauszusuchen (stoppwortbereiningt) und zu gucken bei welchen Texten diese ähnlich/gleich sind. Die Ergebnisse waren allerdings nicht so dolle.

Also wie schon gesagt, eigentlich suche ich genau den Algorithmus von Copy-Scape. Hier bekomme ich ja auch die relative Ähnlichkeit bezüglich eines eigenen Texten im Bezug auf einen vorhandene Index angezeigt.

01.09.2018 - 06:21 Uhr

Hallo zusammen,

ich suche einen Algorithmus, um eine große Anzahl von Texten miteinander zu vergleichen.
Bei einer geringen Anzahl von Texten ist der Vergleich ja kein Problem, nur wenn ich 1000 Texte jeweils miteinander vergleichen will, wird dieser Algorithmusschnell unperformant.

Ich suche nach einer Art Algorithmus, mit dem ich aus dem Inhalt eines Textes eine Art "Stempel" erstellen kann. Der sich danach schnell mit anderen "Stempeln" vergleichen lässt.

Gibt es sowas in der Art? Copyscape müsste doch so einen Algorithmus nutzen.

Gruß
Christoph

17.08.2018 - 09:24 Uhr

verwendetes Datenbanksystem: MsSql + EF

Hallo zusammen,

ich nutze das EF und mache damit Querys auf die Datenbank.
Sehr häufig habe ich den Fall, das ich den Query materialisieren muss, damit ich eigene Funktionen mit einweben kann.

Folgende Funktion schlägt z.B. fehl, da "locations" kein Objekt des EF-Context ist:


var data = from ko in KeywordObservers
			join ks in KeywordSpecifications on ko.KeywordSpecificationId equals ks.Id
			join k in Keywords on ks.KeywordId equals k.Id
		   where ko.ProjectId == 5
		   select new {
		   		keyword = k.KeywordValue,
				locationId = ks.LocationId,
				valid = locations.Any(x => x.Id == ks.LocationId)
		   };

Das ist auch insoweit gar nicht schlimm, da das ganze nach einer Materialisierung des Queries funktioniert. Leider wird hierdurch sehr viel nerviger Code erzeugt, da ich alle Properties, die ich im "select new" eingebunden habe, bei meiner zweiten LINQ-Abfrage (auf das materialisierte Ergebnis der ersten Abfrage) wieder zuweisen muss.

Gibts da irgendwie etwas einfacheres?

Gruß
Christoph

17.07.2018 - 10:08 Uhr

verwendetes Datenbanksystem: MSSQL

Hallo zusammen,

wir entwickeln in verschiedenen Entwicklungszweigen (Branches) im Team eine Software.
Für die Versionsverwaltung des Quellcodes nutzen wir GIT. Hier können wir beliebig zwischen den verschiedenen Branches wechseln.

Ein Problem stellt jedoch die Datenbank dar. Diese läuft auf einem MSSQL-Server. Zurzeit müssen wir für jeden einzelnen Branch eine eigene Datenbank erstellen, da sich natürlich in jedem Branch die Datenbankfelder ändern können.
Da die Datenbank auch mittlerweile relativ groß ist, ist dies ein sehr träges und langwieriges Verfahren.

Gibt es hierzu irgendwie eine bessere Vorgehensweise ?

Gruß
Christoph

17.11.2017 - 15:59 Uhr

Hi zusammen,

ich möchte gerne eine in ASP.net MVC geschriebene Webseite lokalisieren, sprich übersetzten.
Welche Frameworks gibt es hierfür? Das ganze sollte nicht darin ändern, dass ich meinen HTML/Javascript/etc. Code großartig ändern muss. Ich würde eher gerne so eine Art Proxy verwenden, der Strings in den Responses sucht und diese ersetzt.

Gibt es irgendwas in der Art?

01.09.2017 - 13:47 Uhr

Ich hab eine komplett frische Installation. Plugins verwende ich nicht.

Mein System: Win 10, Intel Core I7 , 32 GB DDR4-Ram
Die Projektdateien liegen auf einer seperaten SSD-Festplatte.

Mein Projekt ist allerdings auch sehr groß, aber es kann ja nicht angehen, das VS damit nicht klar kommt!?!?!

01.09.2017 - 13:09 Uhr

Hi Leute,

Visual Studio stürtz bei mir regelmäßig ab (ungefährt jede halbe Stunde). Dies passiert in den unterschiedlichsten Situationen, ein paar davon sind z.B.

  • Ich suche nach einer Datei im Projektmappen-Explorer
  • Ich lasse mir ausgeblendete Dateien im Projektmappen-Explorrer anzeigen / blende diese aus
  • Ich füge Dateien über den Projektmappen-Explorer hinzu
  • Ich gucke mir Variablen an, wenn ich in einen Break-Point gelaufen bin
  • Teilweise Absturz, wenn ich eine Projektmappe lade
  • Intellisense will mir Codevervollständigung vorschlagen

Alles in allem ist ein kontinuierliches Arbeiten kaum noch möglich. Ich habe bereits mehrfach VS neu installiert, alle Updates installiert. Vor ein paar Tagen habe ich mein gesamtes System neu aufgesetzt. Ebenfalls keine Besserung.

Der Absturz ist immer der gleich: VS friert ein und der Task im Taskmanager verbraucht kontinuierlich 20% CPU. Es geht dann nix mehr, nach ein paar Minuten meldet Windows, dass VS nicht mehr reagiert.

Was kann ich tun?

10.08.2017 - 17:14 Uhr

verwendetes Datenbanksystem: MSSQL EF6

Hi zusammen,

ich wollte mal kurz nachhorchen, was mittlerweile BestPractise im Bereich EF-Context erzeugen ist.
Vor ein paar Jahren habe ich hier im Forum gelernt, das man immer (bei jedem ASP.NET Request) den EF-Context neu erzeugen soll. Eigentlich hieß es sogar, man sollte ihn immer neu erzeugen und so kurz wie möglich am Leben lassen.

Nun sehe ich teilweise im Netz Codeschnpsel, wo die Leute nur einen Context erzeugen und diesen mit Hifle eines Singletons verwalten.

Hat sich die BestPractise da mittlerweile geändert ?

Gruß
Christoph

04.08.2017 - 09:02 Uhr

Nun ja, ich würde einen Check aussen und innen vornehmen um nicht jeden parallelen Zugriff in eine gezwungene Synchronisierung zu zwingen.

  
        private static object syncRoot = new Object();  
  
        public static RamboService GetInstance(string pageDbPathForFastData, string pageDbPathForSlowData)  
        {  
            if (instance == null)  
            {  
                lock (syncRoot)  
                {  
                    instance = instance ?? new RamboService(pageDbPathForFastData, pageDbPathForSlowData);  
                }  
            }  
            return instance;  
        }  
  

Das bedeutet jetzt nicht, dass ich diese Art des Singletons gutheißen möchte. Gerade auch im Hinblick auf die übergebenen Argumente. Sehr gruselig.

Was meinst du genau mit außen und innen ?
Bei dem Beispiel war der lock(syncRoot) an der falschen stelle. Ich habe ihn jetzt nach außen gebracht. Aber wozu brauche ich den inneren dann noch?

Das mit den Argumenten ist nicht schön, ich weiß - allerdings sind die Argumente immer die gleichen und hängen nur davon ab, in welchem Projekt ich die Klasse verwende.

03.08.2017 - 20:58 Uhr

Vielen Dank, dass mit dem Cache klingt sehr interessant

Was mich immer noch verwundert:

Ich habe gerade mal nachgesehen und es gibt bei meinem IIS Projekt nur einen Worker-Process. Auch die Kontrolle im Code liefert immer die gleiche ProcessId.

Laut der Dokumentation teilen sich alle Threads eines Processes die gleichen statischen Variablen. Wie kann es demnach sein, dass sich meine Singletons zweimal initialisieren?

03.08.2017 - 19:34 Uhr

Ich benutze ASP.NET 4.

Mein Cache ist auch komplett fertig entwickelt. Es ist eine Klasse, die bestimmte Daten bei Bedarf aus Dateien lädt und diese nach komplexen Kriterien von 1 Stunde bis zu mehreren Tagen im Cache hält. Das funktioniert auch wunderbar, so lange alle die selbe Instanz verwenden.