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 Cord Worthmann
Thema: Wie können statische Files von Razor-Klassenbibliotheken in die Main-App kopiert werden?
Am im Forum: Web-Technologien

Ah okay, das habe ich wohl überlesen.

Schade, das ist jetzt natürlich blöd fürs Debuggen. Dann werde ich die CSS- u. JS-Files wohl auf unseren Server für statische Inhalte auslagern müssen.

Trotzdem vielen Dank!

Thema: Wie können statische Files von Razor-Klassenbibliotheken in die Main-App kopiert werden?
Am im Forum: Web-Technologien

Das bedeutet, dass die Dateien wie CSS u. JS nicht ins wwwroot der WebApp kopiert oder verlinkt werden, so dass ein Browser sie runterladen könnte.

Thema: Wie können statische Files von Razor-Klassenbibliotheken in die Main-App kopiert werden?
Am im Forum: Web-Technologien

Hi,

ich komme nicht weiter mit statischen Inhalten in Razor-Klassenbibliotheken (RCLs). Laut diesem Artikel muss man seit Net Core v3.1 in seinem RCL-Projekt nur einen "wwwroot"-Ordner anlegen und statische Dateien dort reinpacken, damit sie in der Webanwendung, die die RCL verwendet, zur Verfügung stehen. Aber leider funktioniert das nicht, die Dateien werden nicht übernommen.

Hat evtl. jemand eine Idee dazu?

Thema: ASP.NET Core: Sessions funktionieren nicht in Iframe
Am im Forum: Web-Technologien

Okay, vielen Dank für den Hinweis!

Die Iframe-Lösung ist leider eine Anforderung seitens unserer Leitung. Es geht um ein Modul, das verschiedene Abfragen an unsere Hauptanwendung richtet und auswertet. Die Abfragen selber mache ich schon per AJAX, aber es gehört auch ein Registrierungs- und Loginsystem dazu.

Das Iframe-Modul soll möglichst einfach in die Websites unserer Kunden eingebunden werden, die i.d.R. irgendein PHP-CMS verwenden wie Wordpress, Joomla o.ä., weswegen das mit einem eingebetteten Formular schwer wird. Aber wenn die Browser-Entwicklung diesen Weg geht, werde ich das wohl mittelfristig so umbauen müssen, dass die gesamte Funktionalität per AJAX/REST-Api abgewickelt wird.

Thema: ASP.NET Core: Sessions funktionieren nicht in Iframe
Am im Forum: Web-Technologien

Nach allerhand Recherche und Ausprobieren hat sich ergeben, dass man Sessions doch in einem Iframe verwenden kann. Man muss allerdings den AntiForgery-Mechanismus von ASP.NET deaktivieren. Bin darauf gestoßen, weil Formulardaten innerhalb des Iframes auch im Nirvana verschwunden sind.

Nur für den Fall, dass jemand mal vor einem ähnlichen Problem steht, hier der notwendige Befehl:


services.AddMvc().AddRazorPagesOptions(options =>
{
    options.Conventions.ConfigureFilter(new IgnoreAntiforgeryTokenAttribute());
});

Thema: ASP.NET Core: Sessions funktionieren nicht in Iframe
Am im Forum: Web-Technologien

So etwas hatte ich schon vermutet, war mir aber nicht sicher, ob der Browser die Cookies unterschiedlicher Domains nicht auch getrennt verwaltet.

Aber danke für den Hinweis bzw. die Bestätigung.

Thema: ASP.NET Core: Sessions funktionieren nicht in Iframe
Am im Forum: Web-Technologien

Hallo,

ich habe noch mal ein Problem mit Cookies in ASP.NET Core.

Unsere Anwendung läuft in einem Iframe, der auf Websites mit abweichender Domain erscheint. Sobald dies der Fall ist, werden keine Session-Cookies mehr geschrieben bzw. überhaupt keine Cookies mehr, die von ASP.NET automatisch erstellt werden wie Antiforgery u.ä. Im Testszenario innerhalb derselben Domain funktioniert alles wie erwünscht. Also offensichtlich ein Problem, das mit der domainübergreifenden Funktionsweise der App zu tun hat.

In der Startup.cs habe ich das so konfiguriert:



            services.AddDistributedMemoryCache();
            services.AddSession(options =>
            {
                options.IdleTimeout = TimeSpan.FromMinutes(UserManagement.SessionTimeout);
                options.Cookie.HttpOnly = true;
                options.Cookie.IsEssential = true;
                //options.Cookie.Name = UserManagement.SessionCookieName;
                options.Cookie.SameSite = SameSiteMode.None;
                options.Cookie.SecurePolicy = CookieSecurePolicy.None;
            });


            services.AddAntiforgery(options =>
            {
                options.SuppressXFrameOptionsHeader = true;
            });

Hat evtl. jemand eine Idee, was hier zu tun ist?

Gruß

Thema: Cookie überschreiben in ASP.NET Core
Am im Forum: Web-Technologien

Ein paar Fragen hätte ich noch zu diesem Verfahren.

Gehe ich recht in der Annahme, dass ein so authentifizierter Nutzer dann über die User-Eigenschaft des HttpContexts ansprechbar ist? Und sind somit auch die zuvor festgelegten Claims wieder abrufbar? Und schließlich, wenn ja, wo speichert ASP.NET diese Informationen überhaupt? Im Cookie-Wert?

Thema: Cookie überschreiben in ASP.NET Core
Am im Forum: Web-Technologien

Dann muss ich mir das mal näher anschauen. Danke soweit.

Thema: Cookie überschreiben in ASP.NET Core
Am im Forum: Web-Technologien

Nein, es geht nicht um Sessions, das erledigt hier ebenfalls NET Core. Es geht darum, länger abwesende User automatisch zu identifizieren - und das erfolgt per Cookie und UserAgent. Die Nutzer müssen auch die Möglichkeit haben, mit mehreren Geräten gleichzeitig angemeldet zu sein. Es geht also um kein Session-Cookie.

Der Gedanke war nun, dass der Nutzer, der sich einmal angemeldet hat und permanenten Login mit diesem Browser wählt, einmal ein Identifier-Cookie erhält und einmal ein AuthToken-Cookie. Beide Werte werden zusammen mit dem UserAgent in der DB gespeichert.

Kommt der Nutzer nun nach längerer Zeit auf die Seite, wird er anhand von Cookies u. UserAgent identifiziert, wenn er auf diesem Gerät/Browser schon mal angemeldet war. Und dann sollten als weiterer Schutz gegen Cookie-Diebstahl der AuthToken-Wert im Cookie und in der DB geändert werden.

Aber da es mir nicht gelingt (weil es wohl nicht geht), den AuthToken-Wert im bestehenden Cookie zu ändern oder in einem Rutsch das Cookie zu löschen und neu zu schreiben, ohne die Seite zwischendurch zurückzuschicken, ist diese Idee wohl hinfällig. Zumindest ist bis jetzt jeder Versuch fehlgeschlagen, das Cookie zu überschreiben. Auch nach einem Redirect hat es immer noch den alten Wert.

Ob man dieses Szenario mit Net-Core-Boardmitteln auch so umsetzen kann, weiß ich nicht. Zumal dabei ja höchstwahrscheinlich auch eine eigene Nutzer-Tabelle angelegt würde.

Thema: Cookie überschreiben in ASP.NET Core
Am im Forum: Web-Technologien

Hallo Foristi,

gehe ich Recht in der Annahme, dass man bestehende Cookies in ASP.NET Core nicht mit einem neuen Wert überschreiben kann, oder habe ich da was übersehen?

In meiner Anwendung können Nutzer dauerhaft angemeldet bleiben. Dazu verwende ich eine Kombination aus AuthToken per Cookie und UserAgent.

Nun möchte ich die Sicherheit noch weiter verbessern, indem jedes Mal, wenn ein Nutzer auf diese Weise identifiziert wurde, der AuthToken-Wert in der DB und im Cookie auf einen neuen geändert wird.

Nur habe ich leider keine Methode gefunden, wie ich den Wert eines bestehenden Cookies ändern könnte. Selbst Folgendes hat zu keinem Ergebnis geführt:

Response.Cookies.Delete(".AuthToken");
Response.Append(".AuthToken", "New Value", options);
Beim nächsten Seitenaufruf steht immer noch der alte Wert im Cookie, während sich der in der DB natürlich geändert hat, wodurch die automatische Authentifizierung nun fehlschlägt, und der User sich händisch neu einloggen muss.

Meine Frage also noch mal, kann man Werte bestehnder Cookies überschreiben, oder kann ich mein Sicherheitskonzept so nicht umsetzen?

Gruß, Cord

Thema: [Gelöst] LINQ2SQL: Referenzierte Objekte werden bei SELECT-Abfrage nicht mit Daten befüllt
Am im Forum: Datentechnologien

Da hast du natürlich Recht.

Thema: [Gelöst] LINQ2SQL: Referenzierte Objekte werden bei SELECT-Abfrage nicht mit Daten befüllt
Am im Forum: Datentechnologien

@Abt:

Du hast Recht, ich habe hier ein paar Begrifflichkeiten durcheinandergebracht, ich arbeite ausschließlich mit LINQ2SQL. Das ist eine Vorgabe, so dass ich auf keine andere Technolgie ausweichen kann. Ich werde mir deinen Vorschlag zu den Repositories gerne einmal anschauen, wobei ich keine direkten Zugriffe auf die Datenbank vornehme, sondern ausschließlich mit LINQ arbeite. Bis jetzt hat sich zumindest noch nicht die Notwendigkeit für einen direkten Zugriff ergeben.

Mein Problem konnte ich inzwischen lösen, indem ich die referenzierten Objekte in EntityRef<>-Instanzen lege. Jetzt werden auch die assoziierten Daten einwandfrei in die entsprechenden Objekte übertragen. An einem exemplarischen Beispiel sieht das so aus:


private EntityRef<Person> _Person = new EntitiyRef<Person>();

[Column(Name="PersonID")]
private int PersonID { get; set; }

[Association(ThisKey = "PersonID", IsForeignKey = true, IsUnique = true, Storage = "_Person")]
public Person Person
{
    get { return this._person.Entity; }
}

public Employee()
{
    this._Person.Entity = new Person();
}

Thema: [Gelöst] LINQ2SQL: Referenzierte Objekte werden bei SELECT-Abfrage nicht mit Daten befüllt
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: SQL Server 2008 Express


Hallo Forumsgemeinde,

ich verwende eine Reihe von Klassen, die als Entitäten für LINQ fungieren. Dabei gibt es eine Tabelle pro konkreter Klasse. Im Einzelnen geht's um eine Entität namens "Employee", die ich mit drei anderen Entitäten assoziiere ("Person", "Address", "BankAccount") - es besteht eine 1:1-Beziehung. Das habe ich in der Employee-Klasse so realisiert:


// Die Fremdschlüssel als private members.
[Column(Name="PersonID")]
private int PersonID { get; set; }
[Column(Name = "AddressID")]
private int AddressID { get; set; }
[Column(Name = "BankAccountID")]
private int BankAccountID { get; set; }

// Die Entitäten dazu
[Association(ThisKey = "PersonID", IsForeignKey = true, IsUnique=true)]
public Person Person { get; private set; }
[Association(ThisKey = "AddressID", IsForeignKey = true, IsUnique=true)]
public Address Address { get; private set; }
[Association(ThisKey = "BankAccountID", IsForeignKey = true, IsUnique=true)]
public BankAccount BankAccount { get; private set; }

// Instanzierung der Entitäten im Constructor
public Employee()
{
    this.Person = new Person();
    this.Address = new Address();
    this.BankAccount = new BankAccount();
}
Nun zu meinem Problem. Wenn ich ein neues Employee-Objekt erstelle und in die Datenbank schreibe, klappt alles prima, die Eigenschaftswerte werden alle übernommen, auch die aus den drei assoziierten Objekten. Auch werden die neu erzeugten IDs als Fremdschlüssel in die EMPLOYEE-Tabelle eingetragen. Wenn ich allerdings per LINQ-Syntax eine Abfrage auf ein oder mehrere Employee-Entitätsobjekte starte, dann funktioniert zwar die Abfrage selbst korrekt, aber LINQ füllt nur das Employee-Objekt mit Daten aus der DB, die assoziierten Objekte bleiben hingegen leer. Ich hoffe, dass ich mein Problem verständlich schildern konnte. Mit LINQ/SQL bin ich noch ziemlich neu, und ich habe jetzt einen kompletten Tag drauf verwendet, dieses Problem zu lösen - leider ohne Ergebnis. Kann mir jemand von euch hier weiterhelfen?


Gruß
Cord

Thema: Tunnel schreiben (Architektur)
Am im Forum: Netzwerktechnologien

Schau Dich doch mal nach Implementierungen eines Socks-Proxys um - der macht im Grunde nichts anderes.


Grüße
Cord

Thema: Eine Frage des Caching
Am im Forum: Rund um die Programmierung

Hallo Community,

es existiert die Aufgabe, eine umfangreiche erweiterbare Unternehmenslösung für sozialpflegerische Einrichtungen zu entwickeln.
Den Kern der Anwendung bilden eine Reihe von Geschäftsobjekten, welche die interne Struktur des Unternehmens plastisch nachbilden.

Im Einzelnen sind dies hierarchisch gegliederte Organisationseinheiten und die ihnen angehörenden Mitarbeiter sowie an Einheiten und Personen geknüpfte Rollen u. Berechtigungssätze, die auf späteren Prozesse und Arbeitsabläufe angewendet werden sollen.
Im weiteren Sinne gehören noch die Patienten/Zubetreuenden dazu.

Anwendungszielgruppe sind mittlere bis grosse Unternehmen mit einigen hundert bis einige tausend Mitarbeiter und ebenso grosser Zahl an Zubetreuenden.

Datenspeicherung erfolgt in erster Linie über Datenbanken, zweitrangig kommen noch Verzeichnisdienste und XML-Strukturen hinzu.

Als Anwendungsserver sollen vorrangig Webserver eingesetzt werden.


Nun komme ich zur eigentlichen Frage...

Es besteht nun die konkrete Überlegung, die oben genannten strukturellen Elemente statisch (bzw. cached) zur Verfügung zu stellen, da auf diese Objekte häufig zugegriffen wird und sie äusserst selten geändert werden.
Weniger häufig benötigte Zusatzinformationen zu den aufgeführten Objekten (z. B. Privatadresse eines MA oder Angehörige eines Zubetreuenden) werden in Profilen gespeichert, die ggf. als nicht statische Instanz aufgerufen werden. Dies gilt auch für alle anderen Geschäftsobjekte.

Der Hauptgrund für eine solche Vorgehensweise ist in erster Linie die Minimalisierung von Datenspeicher-Zugriffen und damit verbundene Optimierung von Auslastung und Geschwindigkeit.

Dem entgegen steht die ständige Belastung des Hauptspeichers, die in ihrem Ausmass nur schwer zu kalkulieren ist, da sie einerseits von der Unternehmensgrösse und damit schlicht der Anzahl der Objekte und andererseits von der durchaus variierenden Grösse der in den Objekten gespeicherten Werte abhängig ist. Dazu kommen noch die wechselnd personenspezifischen Anzahlen von Berechtigungssätzen, die vor allem abhängig von der Zahl der später verwendeten Module sind, welche alle ihre eigenen Berechtigungssätze mitbringen, denn die Module repräsentieren die Arbeitsabläufe, die innerhalb des Unternehmens anfallen.


Nun ist meine Frage an Euch, wie würdet Ihr diese Überlegung bewerten - ist es sinnvoll, dieses Kompromiss aus Minimierung der DB-Zugriffe und Hauptspeicherbelastung zu machen oder haltet Ihr es eher für eine falsche Herangehensweise, mit einer grossen Zahl statischer Objekte zu arbeiten?

Hat jemand bereits Erfahrungen mit vergleichbaren bzw. ähnlichen Architekturen bzw. Aufgabenstellungen?
Ich selbst habe an etwas Vergleichbaren noch nie zuvor gearbeitet.


Ich freue mich über jeden Beitrag bzw. Anregung oder Denkanstoss zu dieser Fragestellung.


Grüße
Cord

Thema: Interaktives Graphik Control
Am im Forum: Web-Technologien

Hallo,

es gibt eine Vektorgrafik-Erweiterung für JS im Browser, Stichwort: Canvas.
Das wird inzwischen von allen gängigen Browsern unterstützt, und für den MSIE gibt's einen schönen Wrapper bei Google Code.

Die Parameter überträgst Du dann auf den Server, wo die echten Grafiken erstellt werden.

Das wäre ein Höchstmass an Interaktion.


Grüße

Thema: Bild drehen mit Farbumschlag
Am im Forum: Web-Technologien

Wenn Du aktiviertes JS beim Client voraussetzen kannst, ist das auch sehr komfortabel per JS zu erledigen. Du brauchst nur eine einzige Grafik und kannst diese rotieren und mit entsprechender Farbe versehen (sogar Farbverläufe und Transparenzen sind machbar).


Grüße

Thema: Chatclient in ASP .NET
Am im Forum: Web-Technologien

Du kannst die J#-BrowserControls verwenden.
Diese verwenden dieselbe Schnittstelle wie sie die JRE nutzt; allerdings braucht es analog auch die entsprechenden Binaries - also die VM und die notwendigen Libs...

Eine wesentlich universellere Alternative, die allerdings ausschliesslich auf dem MSIE läuft, wäre noch ein sogenanntes .NET-Applet, welches aber ein Windows-kompatibles System und die vollständige .NET-Installation voraussetzt.


Grüsse

Thema: ASP.Net und Flash
Am im Forum: Web-Technologien

Ansonsten gibt es die PARAM Tags innerhalb des OBJECT Tags, in welches Flash etc. einzubinden ist. Diese Tags sind extra für Programmparameter gedacht. Du kannst hier Variablen und Werte angeben, auf die Dein Flash in Form externer Vars zugreifen kann.


Grüsse

Thema: simples Fileupload - ActiveX
Am im Forum: Web-Technologien

Ein ActiveX Control, das mit dem Dateisystem interagiert, wird bestimmt als unsicher eingestuft.

Thema: Panel Frage
Am im Forum: Web-Technologien

In die Code-Ansicht wechseln und folgendes Attribut angeben...
style="position:absolute;left:100px;top:50px"


Grüsse

Thema: activeX - Fileupload
Am im Forum: Netzwerktechnologien

Zitat
Original von [email protected]
Das activeX-Controll soll keine UI haben sondern im Hintergrund werkeln
Das UI soll nur die HTML-Tabelle mit den Files am Server sein.
Das wird so nicht funktionieren.
Du benötigst eine UI, mit der Du per Drag&drop interagieren kannst - HTML ist dazu nicht in der Lage.
Zitat
Original von [email protected]
Ist es möglich activex-Controls mit C# zu entwickeln?
Ja.
Webchat wie in JAVA


Grüsse

Thema: [Anfänger] Text in DataList formatieren (html zeilenumbrüche erzeugen…)
Am im Forum: Netzwerktechnologien

Versuche einmal etwas in der Art...


<%# Eval("Name").ToString().Replace(Environment.NewLine, "<br />") %>


Grüsse

Thema: Plugin-Struktur ASP .NET 2.0
Am im Forum: Web-Technologien

Man könnte evtl. folgendes machen...

Eine Erweiterung wird sicher in erster Linie ein UserControl sein, dass seine eigenen Binaries und ggf. weitere UCs oder WebControls mitbringt.

Um eine generelle Struktur festzulegen, könnte man ein Unterverzeichnis für Plugins erstellen oder man bindet diese in einem bestimmten Konfigurationsabschnitt in der web.config ein. Am Optimalsten ist sicher eine Kombination aus beidem.

Wird das Web gestartet, liest es die vorhandenen Plugins in der web.config aus und überprüft deren Vorhandensein im Unterverzeichnis u. ggf. bin/appCode-Ordner. Dann wird eine Instanz der statischen Repräsentation des Plugins gebildet und einer statischen Auflistung zugefügt. Dieses Objekt enthält die Konfigurationseinstellungen der Erweiterung und kommuniziert ggf. mit dem DataLayer.
Zukünftig in Seiten instanzierte Controls als UI-Frontend des Plugins können dann mit der statischen Instanz (dem Manager) kommunizieren.


Grüsse

Thema: Kommunikation zwischen ASP.net und JavaScript
Am im Forum: Web-Technologien

Die Page Klasse verfügt auch über allerhand Methoden zur Skriptintegration.
Die werden dann ab v2.0 als obsolet erklärt u. tauchen im ClientScriptManager wieder auf.


Grüsse

Thema: [gelöst] Service remote stoppen/starten
Am im Forum: Netzwerktechnologien

Genau - per WMI geht's...http://msdn2.microsoft.com/en-us/library/aa394418.aspx


Grüsse

Thema: Plugin-Struktur ASP .NET 2.0
Am im Forum: Web-Technologien

Zitat
Original von crusada
Wie würdet ihr eine ASP .NET -Anwendung erstellen das pfluginfähig ist? Ist das so in dieser Form überhaupt möglich wie bei WinForms-Anwendungen?
Ich würde sagen, ein Plugin-System ist hier schlicht nicht nötig, da hinzugefügte Seiten z. B. automatisch Bestandteil der Anwendung werden. Ihre Integration könnte evtl. durch Modifizierung der .sitemap Datei optimiert werden.

Wenn Du eigene HttpModule oder -Handler verwenden möchtest, müssen diese in der web.config eingetragen werden, womit sie auch ausreichend integriert sind.

//EDIT:
Wenn Du Erweiterungen einsetzen willst, die in Seiten eingebettet werden sollen, dann schreibe einfach WebControls oder UserControls, die ggf. ein oder mehrere Interfaces implementieren müssen, um reibungslos mit der vorhandenen Anwendung kommunizieren zu können.


Grüsse

Thema: Flash-ActiveXCtrl
Am im Forum: Web-Technologien

Flash ist eine ganz eigene Geschichte - es wird lediglich vom MSIE als ActiveX eingestuft, um in dessen Rechtemodell erfassbar zu sein.

Im Browser kannst Du mit einer Flash-Anwendung per Scripting kommunizieren. die notwendige API findest Du hier.

Wenn du Einsprungstellen ausserhalb der Standard-API suchst, kannst Du in Flash Methoden definieren, die von z. B. Javascript als Event gebucht werden können.


Grüsse

Thema: netzwerktool - getusername ?
Am im Forum: Netzwerktechnologien


using System.DirectoryServices;
...
DirectoryEntry root = new DirectoryEntry("WinNT://");
root.Children.SchemaFilter.Add("Domain");
foreach (DirectoryEntry domain in root.Children)
{
    Console.WriteLine(domain.Name.ToUpper());
    domain.Children.SchemaFilter.Add("Computer");
    foreach (DirectoryEntry host in domain.Children)
        Console.WriteLine("* " + host.Name);
    Console.WriteLine();
}

Ist nicht getestet, sollte aber so hinhauen.
Voraussetzung ist ein Verzeichnisdienstanbieter (z. B. PDC) im Netz - ggf. das Protokoll ändern (z. B. LDAP://).


Grüsse