Laden...
Avatar #avatar-2534.gif
Khalid myCSharp.de - Experte
Softwareentwickler Hannover Dabei seit 19.07.2005 3.511 Beiträge
Benutzerbeschreibung

Forenbeiträge von Khalid Ingesamt 3.511 Beiträge

10.12.2013 - 14:09 Uhr

Hallo,

du kannst auf einen Schlag ja mittels XPath alle Key/Value Paare auslesen. Das geht dann via


SELECT 
 C.value('(@NAME)[1]', 'nvarchar(100)') AS [Name],
 C.value('(@VALUE)[1]', 'nvarchar(100)') AS [Value]
FROM Table
CROSS APPLY XmlColumn.nodes('/PROPS/PROP') AS T(C)

Funktioniert, wenn dein XML wie folgt aussieht


<PROPS> 
  <PROP NAME="ATTRIB1" VALUE="Wert1" />
  <PROP NAME="ATTRIB2" VALUE="2653" />
  <PROP NAME="ATTRIB3" VALUE="Test0815" />
</PROPS>

Ansonsten musst du den XPath Ausdruck unter nodes('xxxx') anpassen.

Das Ergebnis kannst du dann in eine temp. Tabelle schmeißen und via dynamischen PIVOT kippen.

Das ist auf jeden Fall performanter als die "für jeden Wert ein Query" Lösung.

Die effizienteste Methode bei solchen Modellen ist allerdings eine eigene .NET CLR Stored Procedure. Denn hier kannst du direkt eine Tabelle ausgeben und mittels .NET Mittels die XML Manipulation vornehmen.

Gruß
Khalid

09.12.2013 - 17:11 Uhr

Wenn du den Tabellennamen nicht für jeden Trigger setzen willst, kannst du diesen aus dem Trigger auslesen via


SELECT OBJECT_SCHEMA_NAME( parent_id ) + '.' + OBJECT_NAME( parent_id ) tableName FROM sys.triggers WHERE object_id = @@PROCID

09.12.2013 - 14:34 Uhr

Hallo,

das ist mit .NET bzw. Visual Studio kein Problem. Die Technik dafür ist dann dementsprechend ASP.NET MVC 5 (IMHO würde ich gleich auf 5 gehen). Desktop und Mobil sind eh eine Seite, wenn diese repsonsive gehalten wird. Das aber z.B. mittels Bootstrap kein Problem ist.

Authentifizierung würde ich dann über ein einfaches User/Pass (SimpleMembershipProvider) Verfahren machen. Dazu gibt es aber zu hauf Infos zu.

09.12.2013 - 14:11 Uhr

Hallo,

verstehe ich dich richtig, dass du nicht weißt, welche Columns in der inserted Tabelle vorhanden sind? Dann wird es schwierig. Du kannst die Tabelle als XML konvertieren und anschließend per XPath dir wieder die einzelnen Werte holen. Das ist für ein Trigger aber alles andere als performant.

Wenn du die Columns kennst, kannst du die CSV Zeile einfach selber zusammenschustern. Ist nicht unbedingt die eleganteste Art, aber die effizienteste.

06.12.2013 - 09:39 Uhr

Entweder eine NoSql (und so wie es klingt, passt das wie Faust aufs Auge), oder mit dem XML Spalten Typ im SQL Server arbeiten. Ist etwas gefummel, funktioniert aber ganz gut. Mit einem passenden XSD kann auch ein Index auf den Spalten abgelegt werden.

Die Transformation würde ich dann mit einer .NET CLR SP machen. Weil du hier wesentlich bessere Möglichkeiten mit dem Umgang von XML hast, und auch dynamische Tabellen als Ergenis lassen sich damit hervorgangend umsetzen.

06.12.2013 - 08:41 Uhr

Du kannst im OnStart eines Dientes jederzeit Environment.Exit aufrufen. Das bricht den Startprozess ab. Das führt nicht dazu, dass OnStop aufgerufen wird. Wenn du den eigenen Dienst kontrolliert abbrechen willst, kannst du mittels ServiceController den eigenen Dienst stoppen. Dann wird auch OnStop aufgerufen.

Und wegen dem WCF. Ich gehe mal stark davon aus, dass das ein Self Hosted Service ist. Deswegen solltest du ohne weiteres kein Problem haben, den WCF Dienst nach der Rückgabe des Wertes zu beenden und anschließend den Dienst zu beenden.

Ist doch an sich ein einfaches Konstrukt:


// Die WCF Methode
public int MachIrgendwas()
{
  try
  {
    return FuehreEineTolleBerechnungDurch();
  }
  finally
  {
    if (SollDienstBeendetWerden)
    {
      SignalisiereHostDenDienstZuBenden(); // (*)
      // Irgendein Interface was vom Host mit an den Dienst gegeben wird
    }
  }
}

Der Host erhält die Nachricht den WCF Kanal zu schließen und beendet dann danach sauber mit ServiceController.Stop den eigenen Dienst.

Habe es so noch nie gemacht, aber sollte funktionieren.

Gruß
Khalid

(*) Etwas problematischer wird es, wenn der Aufruf async ist. Aber selbst dass lässt sich über ein ContinueWith ohne weiteres lösen.

04.12.2013 - 12:01 Uhr

Ich sehe das ähnlich wie Abt. Bücher haben zum großen Teil ausgedient in der IT Welt. Es gibt spezielle Bücher, wie z.B. "CLR via c#" (IMHO ein must have) die einen schon viel weiter helfen, aber Bücher über WCF, WF, ASP.NET MVC oder gar jQuery sind schon überholt, bevor sie gedruckt werden.

Man sieht ja auch hier im Forum, dass das Interesse allgemein eher bei "wie geht das?" statt "was steckt dahinter?" liegt.

Ja leider. Ist aber nicht nur im Forum so, sondern auch in der Welt da draussen. Ich kenne das aus dem Arbeitsumfeld, dass Leute immer und immer wieder die gleichen Fehler machen, anstatt sich einfach mal mit dem zu beschäftigen, was die da eigentlich machen. Leider verleiten auch Frameworks wie .NET dazu, dass man sich das eigentliche Hintergrundwissen nicht erarbeiten muss. Geht ja einfach so.

29.11.2013 - 15:01 Uhr

Hallo,

Problem gelöst. Zuerst hatte ich, wie im Link von telnet gepostet, die MaxTokenSize auf den Client erhöht. Das hatte alledings nicht wirklich was gebracht.

Unter dem Link "MaxTokenSize und seine Freunde" habe ich dann die Lösung gefunden. Serverseitig habe ich den Wert "MaxFieldLength" erhöht und dann den IIS neu gestartet. Seit dem funktioniert die Anmeldung wieder wie gewohnt.

Gruß
Khalid

26.11.2013 - 09:54 Uhr

Hi,

so ein Control ist doch fix selber gebaut. Grid mit 2 Columns. Erste Columns ist der orangene "Block". Zweite Column der Inhalt. Um das Grid herum ein Border mit grauen Rand. Der Content der zweiten Column ist wiederum ein Grid mit zwei Columns. Eine fürs Icon, zweite für den Text und ggf. Button.

19.11.2013 - 13:42 Uhr

Kann aber hinkommen, da unsere Struktur auch sher feingliederig ist. Ich verfolg den Ansatz mal und melde mich ggf. wieder.

Danke für den Hinweis.

19.11.2013 - 13:17 Uhr

D.h. Gruppen migrieren, um das Ticket klein zu halten? Weißt du, ob das beim IE 10 auch der Fall ist?

19.11.2013 - 12:15 Uhr

Moin Leute,

habe seit heute ein recht merkwürdiges Problem. Eine Intranetseite, die bis jetzt immer ohne Probleme aufgerufen werden konnte, verweigert seit heute die Anmeldung (über NTLM). Es ploppt immer der Credentials Dialog hoch und meint anschließend 401. Die Credentials sind aber sowas von korrekt, da ich mich mit den gleichen Credentials an der Kiste anmelden kann. Komischerweise hat Firefox keinerlei Probleme mit der Anmeldung. Gleicher Rechner, Domaine, bla.

Habe den IE bereits komplett zurückgesetzt, alle Caches gelöscht usw... Bis jetzt hat nichts gebracht.

Ich raff das gerade nicht 😃

Irgendwer eine Idee dazu, bzw. kennt jemand das Phänomen (vielleicht auch mit der Lösung 😉)

Gruß
Khalid

15.11.2013 - 16:22 Uhr

Müsste IsWebBrowserContextMenuEnabled sein.

Edit: Siehe gerade, dass du das schon verwendet hast. Seltsam, da bei einem Mini-Test das bei mir sofort funktioniert hat.

14.11.2013 - 16:06 Uhr

Bei einem geöffneten Word Dokument hilft nur ein Word AddIn. Hätte an sich den Vorteil, dass du dich halt nicht mit dem OpenXml Krams auseinandersetzen musst, sondern direkt halt die Word Automation verwenden kannst. Was auch ehrlich gesagt einfacher ist.

12.11.2013 - 07:55 Uhr

@unconnected:
Ich habe auf meiner Entwicklerkiste zu Hause auch "nur" 6GB Ram. Zwar ein i7 drin, aber ich öffne ohne Probleme 4 Visual Studios (mit ReSharper, NCrunch, usw...). Habe da überhaupt keine Performanceeinbrüche.

Edit: Das Ganze natürlich ohne Eclipse. Hab ich irgendwie "überlesen". Scheint ein automatischer Verdrängungseffekt zu sein, sobald irgendwas mit Java erwähnt wird 😃

31.10.2013 - 11:59 Uhr

Man könnte auch eine Zwischenschicht einfügen, in dem die Dialoge beschreiben werden und dann dementsprechend entweder auf Win oder auf Web Seite dargestellt werden.

Der TFS macht dies seit Jahren so. Das Layout der verschiedenen WorkItems wird per XML beschreiben und sehen dann unter VS, sowie im Web, identisch aus.

31.10.2013 - 11:09 Uhr

Hallo,

es gibt bedingt die Möglichkeit während des debuggens den Code zu ändern. Das Ganze nennt sich dann "Edit and Continue". Bei VS 2012 oder kleiner funktioniert dies allerdings nur bei x86 kompilierten Code. Auch komplexere Änderungen sind mit "Edit and Continue" nicht möglich. Darauf weißt dich VS dann aber hin und du musst neu kompilieren. Um das zu verwenden, musst du einfach nur ein Break Point irgendwo hinsetzen, und dann den Code ändern.

Gruß
Khalid

30.10.2013 - 07:55 Uhr

Hallo,

der TFS wurde ja schon genannt. Für Aufgabenverwaltung gut geignet, da der TFS auch wunderbar mit SharePoint und Project harmoniert. Ansonsten gibt es auch noch Jira, welches als Aufgabensystem auch ganz nett ist.

Als Dokumentenverwaltung würde ich aber immer zum SharePoint tendieren, da sich SharePoint halt in fast alle MS Produkte integrieren lässt (Office, Outlook, Project, TFS (wie erwähnt), usw...). Einzig die Einstiegshürde ist beim SharePoint etwas hoch. Man muss schon wissen was man da tut, sonst baut man sich das System zu.

29.10.2013 - 14:46 Uhr

Hallo,

es ist um längen einfacher, dass ganze Konstrukt via Xaml zu beschreiben und dann anschließend den DataContext mit einem vernünftigen ViewModel zu füttern. Mit diesen ganzen Code Behind geraffel wirst du nicht glücklich werden.

Im Xaml kannst du dann ganz einfach Buttons mit in das DataGrid nehmen und diese an ICommands des ViewModels heften.

Das Pattern an sich dazu heißt MVVM.

So, da sind erst mal ein paar Begriffe gefallen, die du dir anschauen solltest 😃

29.10.2013 - 13:20 Uhr

Hmm, dann verschluckt der Xaml Designer das. Wie gesagt, mach sowas wenn nur für eigene Komponenten. Da geht sowas recht gut. Naja, war ne Idee.

29.10.2013 - 12:20 Uhr

Du könntest versuchen Visual Studio mit einem Visual Studio zu debuggen um zu sehen, wo der fehler tatsächlich entsteht. Ich mach sowas zwar immer nur bei eigenen Komponenten, aber dürfte auch für Fremdkomponenten gehen.

10.10.2013 - 08:49 Uhr

Die frx Dateien werden aus den frm Dateien erzeugt und gehören definitiv nicht in ein VCS.

Was genau willst du zum TFS Branching wissen?

Ehrlich gesagt hab ich das Gefühl, dass ihr selbst SourceSafe bis jetzt "falsch" genutzt habt, und ihr jetzt versucht den falschen Weg fortzusetzen.

10.10.2013 - 08:45 Uhr

Hi herbivore,

Oder übersehe ich irgendwas?

Ja, nämlich das selbst ein Bruchteil einer Instanz mit SQL Server, mit Service Bus und z.B. 100GB Speicher, schon mehr kosten als mancher Root Server mit mehr Leistung. Dann nehme ich doch den mit mehr Leistung und knn ggf. selbst skalieren.

Ich selbst habe Azure zum "Spielen" bis jetzt genutzt (dank MSDN hat man ja bissl was frei im Monat). Das ganze Konzpt finde ich hoch interessant. Für Firmen, die überhaupt keine eigene Infrastruktur aufbauen wollen, ist das echt eine Alternative. Ich muss mich nicht um Wartung, um Sicherheitsprobleme um eigene Server und vor allem um Stromkosten keine gedanken machen. Dann sieht man bei Azure wieder einen Vorteil. Dann muss ich aber das Gesamtpaket nehmen.

Möchte ich allerdings "nur" eine Webseite hosten, würde ich zu Root Servern tendieren. Ausser ich brauche Global redundant Server, die hoch skalierbar sind, usw... Dann würde ich wahrscheinlich auch eher zu Azure gehen, weil ich mir um die Infrastruktur keine Gedanken machen muss.

Ich denke Azure hat gute Vorteile, aber auch schlechte Nachteile. Man muss genau wissen, was man will und genau abwägen was es bringt.

Gruß
Khalid

09.10.2013 - 16:48 Uhr

Also, meine VB6 Zeiten sind unendlich lange her, aber ich kann mich nicht daran erinnern, dass die Forms binär waren. Höchstens die Resourcen-Dateien. Aber sobald es Binär wird, hat man das Problem bei jeder Sprache mit jedem VCS.

Wegen den TFS und Branching: Einfach mal nach "TFS Branching Guide" suchen.

09.10.2013 - 14:46 Uhr

Vom wirtschaftlichen Aspekt müssen IMHO Beträge immer mit mindestens 4 Nachkommastellen gespeichert werden. Sonst heimst du dir etliche Rundungsfehler ein.

09.10.2013 - 13:38 Uhr

Hi,

Wenn ich in der DB Money wähle, entspricht das in Code Decimal?

Ja

Gruß
Khalid

09.10.2013 - 12:40 Uhr

Hi,

Money ist nicht so genau wie Decimal. Es kommt aber darauf an, was du mit dem eigentlichen Wert machst. Legst du den Wert nur ab, nimm Money. Fängts du an mit den Werten zu rechnen (addieren, subtrahieren), bleib bei Money. Fängst du an zu multiplizieren, oder dividieren, nimm Decimal.

Bei Rechenoperationen ist Money von der Performance her besser, da intern nur mit Ints gearbeitet wird und die Darstellung nur "angepasst" wird. Decimal hingegen ist halt ein reiner Fließkommatyp und ist bei intensiven Rechenoperationen daher maginal langsamer.

Um sicher zu gehen, würde ich gleich auf Decimal gehen. Der Money Datentyp ist ein Byte kleiner gegenüber dem default Decimal, der Verlust ist also gleich null (ausser du hast Milliarden von Rechnungen).

Gruß
Khalid

[Edit] Diese Ausage bezieht sich allerdings auf dem SQL Server, und nicht auf CE. Aber ich gehe mal davon aus, dass es das Gleiche ist.

09.10.2013 - 08:26 Uhr

Moin,

ich persönlich würde Windows Forms nicht mehr verwenden und gleich auf WPF setzen.

01.10.2013 - 08:30 Uhr

Hier gibt es auch ein ganz guten Überblick: Layered Architecture for .NET

30.09.2013 - 14:06 Uhr

Hallo,

wenn ich dich richtig verstanden habe, dann so


var adressen = new List<Adresse>();
// ... Liste von irgendwo her füllen ...

var result = adressen.Select(x => x.Name).Take(10);

Ansonsten, beschreib dein Problem nochmal etwas deutlicher.

Gruß
Khalid

26.09.2013 - 10:27 Uhr

Hi,

für sowas eignen sich Tools wie z.B. von Red-Gate der ANTS Memory Profiler.

26.09.2013 - 07:50 Uhr

Moin,

irgendein Port (COM, USB, TCP, oder was weiß ich) muss der Scanner ja schon öffnen. Mit fast allen Barcode Scannern mit den ich zu tun hatte (und DataLogic war darunter) wurde ein neuer virtueller COM Port angelegt. Auf den kannst du dich einfach per SerialPort drauf klemmen und gut ist.

19.09.2013 - 09:04 Uhr

Hallo,

Vorlagen als solche kenne ich nicht. Aber, wenn du nicht alles x mal ausprogrammieren möchtest, und du für alle Systeme eine Basis-Assembly haben möchtest, dann schau dir mal die "Portable Assemblies" an. Die sind genau für diese Anwendungsfälle gedacht.

Gruß
Khalid

30.08.2013 - 07:50 Uhr

Moin,

eigene Dialoge kannst du auch bei der MondoUI verwenden (mach ich z.B. auch so).

Eine eigene MessageBox könntest du via einer CustomAction bereitstellen. ABER: Der Sinn bei MSIs ist es, dass alles im Context des MSIs läuft und keine Benutzereingaben von "ausserhalb" stattfinden sollen. Ein MSI sollte auch immer im Silent Modus laufen, was bei einer MessageBox dann nicht mehr funktioniert.

Schnapp dir am besten die Sourcen von WiX und schau dir an, wie die MondoUI aufgebaut ist (ist alles in den Verezeichnissen zu finden). Dann baust du dir einen eigenen kleinen Dialog (Vorlagen hast du dann ja genug) und setzt den ein. Das ist kein Hexenwerk und leicht verständlich.

Von einer MessageBox würde ich definitiv abraten.

29.08.2013 - 14:32 Uhr

Hallo,

dazu musst du die Datei in eine eigene Component legen und dann per Condition abfragen, ob diese auch wirklich entfernt werden soll.


<Component Id="removeFile" Guid="*">
  <RemoveFile Id="remove" Name="my.config" On="uninstall"/>
  <Condition>(WIRKLICHLOESCHEN = 1)</Condition>
</Component>

Die Variable "WirklichLoeschen" muss dann in einem eigenen Dialog natürlich per CheckBox ausgewertet werden.

Aber so in etwa funktioniert das dann.

Gruß
Khalid

28.08.2013 - 15:09 Uhr

Södele,

Problem gelöst. laut MSDN weiß man nicht, ob der Dialog entweder ein aboluten oder relativen Security Descriptor zurückgibt. Deswegen prüfe ich jetzt, was es ist und wandle den Descriptor ggf. um (mittels MakeSelfRelativeSD) und anschließend kann man den Descriptor dann wunderbar per SetSecurityDescriptorBinaryForm setzen.

28.08.2013 - 10:44 Uhr

Hallo,

ich möchte mittels des in Windows eingebauten EditSecurity Dialoges ein ActiveDirectorySecurity Objekt manipulieren.

Soweit funktioniert es auch, sprich ich erzeuge z.B. ein neues leeres ActiveDirectorySecurity Objekt und packe dort 1-2 NTAccounts rein und rufe anschließend die EditSecurity Methode auf. Das ISecurityInformation Interface, welches dahinter liegt, wird mittels der Methode GetSecurityDescriptorBinaryForm gefüttert.Anschließend möchte ich das geänderter Objekt mittels SetSecurityDescriptorBinaryForm neu schreiben. Und dann tritt folgender Fehler auf: > Fehlermeldung:

ArgumentException "Security descriptor must be in the self-relative form."

Und hier weiß ich momentan nicht weiter. Anscheinend wandelt EditSecurity den Security Descriptor von relativ zu aboslut um.

Hat irgendwer schon mal mittels SetSecurityDescriptorBinaryForm ein ADS manipuliert, oder weiß wie ich aus einem absoluten ein relatives Security Objekt bekomme?

Gruß
Khalid

19.08.2013 - 16:38 Uhr

Meine Antwort von damals gilt (leider) immer noch.

Solange die CLR nicht im Kernel-Modus geladen wird, wird es nicht gehen mit c# Treiber zu programmieren. Und soviel wie ich immer mal so nebenbei gelesen habe, da die Frage immer wieder in den MS Foren auftaucht, wird es auch in absehbarer Zeit nicht der Fall sein.

MS hat ja mit Singularity schon mal vor längerer Zeit gezeigt, das ein Kernel im Managed Bereich geladen und auch verwendet werden kann (zugegeben, Singularity ist ein OS komplett in c#, bzw. spec# 😃). Aber da Singularity nicht weiterentwickelt wird, gehe ich mal davon aus, dass das leider nie wirklichkeit wird.

15.08.2013 - 08:19 Uhr

Hallo,

hier ein paar Stichwörter: WCF (wurde ja schon genannt), MSMQ (oder auch andere Queues), SNMP.

Mein Ansatz bei sowas wäre: Neben der Anwendung ein Dienst laufen zu lassen, der die Kommunikation übernimmt. Empfängt der Dienst die Anforderung zum Schließen für sein Rechner, dann per Windows Message die Anwendung zum Schließen auffordern (z.B. WM_CLOSE, oder auch WM_COPYDATA um noch z.B. Daten zu übergeben). Der Dienst muss dann "Interagieren mit Desktop" zulassen.

Gruß
Khalid

13.08.2013 - 11:37 Uhr

Hallo,

Tips im welchen Zusammenhang? Hast du vorher schon mit c# gearbeitet? Sind das deine ersten Schritte? Hast du eine Frage zu einem speziellen Thema? Beherrscht du schon c# und willst du dich in einem Bereich weiterbilden?

Wir würden dir hier gerne helfen, doch ohne konkrete Frage wird es etwas schwierig 😃

09.08.2013 - 10:26 Uhr

Hallo,

ist ein bisschen ungenau. Wo genau markierst du die Dateien?

Gruß
Khalid

08.08.2013 - 16:09 Uhr

Unter WiX erstellt man eine neue Property (oder auch mehrere), bindet diese in einen Dialog ein. Mittels der Methode XmlFile (zu finden in den WixUtilExtensions) kann man dann z.B. eine app.config Datei manipulieren.

Schau dir erstmal WiX an, und mach dich mit den Grundlagen vertraut (ist wirklich nicht schwer) und wenn du dann wieder konkrete Fragen hast, kannst du die gerne hier wieder posten (bitte neues Thema, wenn du dann WiX verwenden solltest).

08.08.2013 - 10:42 Uhr

würde es gerne bevorzugen wenn ich das NUR über Visual Studio 2010 mache

WiX integriert sich ins Visual Studio. Du kannst also alles im VS 2010 machen, und brauchst keine externen Tools o.ä.

Aber was hat das den mit meinem Problem zutun?

Das Problem ist, wenn du jetzt ein Setup Project in VS2010 anlegst, kannst du es - solltest du auf VS2012 umsteigen - eh noch mal neu machen. Nämlich mit WiX. Deswegen solltest du vielleicht doch sofort mit WiX arbeiten.

08.08.2013 - 10:02 Uhr

Hallo,

zu deinen eigentlichen Problem mit dem fehlendem Dialog kann ich nichts sagen, aber ich würde dir zu Windows Installer XML (WiX) raten. Ist schnell zu erlernen, und du kannst damit IMHO wesentlich bessere Ergebnisse erzielen, als der "schrottige" Installer Assistent im Visual Studio.

Gruß
Khalid

08.08.2013 - 08:15 Uhr

Sequence != Identity.

Ich bin jetzt davon ausgegangen, dass icolor weiß was Identities sind. Aber was genau das bezwecken soll, kann uns wohl nur icolor beantworten 😃

07.08.2013 - 16:46 Uhr

Hallo,

was willst du eigentlich genau erreichen? Sieht mir irgendwie danach aus, dass du eine Art Sequence nachbauen willst.

Wenn ja:
Hast du die Möglichkeit auf SQL 2012 umzusteigen? Denn dort gibt es Sequenzen frei Haus. Und warum das Ganze als Procedure und nicht Function? Zusätzlich musst du bei sowas darauf achten, dass du bei mehrmaligen Zugriff nicht die gleiche ID vergibst. D.h. wenn 2x hintereinander die SP aufgerufen wird, erhältst zu 2x die gleiche ID. Du musst also das Abrufen, Verwenden und Updaten in eine Transaktion packen.

Wenn nein:


DECLARE Tmp TABLE (Value INT)
INSERT INTO Tmp
EXEC sp_executesql @cmd, @parms, @NEWD

SELECT * FROM Tmp

Gruß
Khalid

06.08.2013 - 10:16 Uhr

Hallo,

ist schon richtig so. Einfach zwei Spalten mit ID und ParentID und gut ist. Mittels rekursiven Abfragen kann man dann so später bequem ein "Baum" erzeugen.

02.08.2013 - 13:36 Uhr

Hi Abt,

so mach ich es jetzt auch. Auf der Website hole ich mir bei jedem Request, der einen Aufruf zum Dienst macht, das WindowsIdentity und per Impersonate rufe ich dann meine eigene kleine API auf. Diese habe ich allerdings nicht auf HttpWebRequest umgebaut, sondern auf WebClient (ist IMHO etwas einfacher zu bedienen).

Danke und Gruß
Khalid

02.08.2013 - 10:55 Uhr

Hi,

Impersonation funktioniert nicht. Es gibt etliche User die auf das Web zugreifen. A führt etwas aus. B schaut sich den Status an. C auch, darf aber nicht (fehlende Rolle). D führt den gleichen wie A aus. Usw...

Die Authentifizierungsinformationen müssen am Dienst vom Web genauso ankommen, wie man sich am Web angemeldet hat. Sonst fliegt mir so einiges um die Ohren 😃