Welche Kultur haben denn deine Deutschen Ressourcen?
de-DE, de-CH oder nur de?
Für eine Autostart Anwendung trifft das jetzt nicht zu, aber wenn du einen Dienst (also windows-Service) implementierst, kannst du Abhängigkeiten für den Start definieren, in deinem Fall also TFSService und der Netzwerklaufwerke-Client-Dienst (sofern es den gibt 😉)
Wenn du keinen Service willst, würde ich aber auch einfach auf die Preconditions checken.
Vermutlich meinst du "WebsiteSpark" von MS (es gibt auch noch andere *-Sparks, wie Dreamspark für Studenten und BizSpark)
Ja es ist möglich eine Email vor dem Senden zu verändern (was wohl grob deine Frage war):
Siehe hier: How To: Make changes to an Outlook message before sending
Du könntest nach dem Singleton-Pattern eine Klasse gestalten, die normale Events beinhaltet.
Das kann nun alles sehr vielfältig sein und hängt von einigen Punkten ab:
Nichtsdestotrotz führe eine Übersetzung der Fehlermeldung und Google zu folgendem Stackoverflow-Eintrag: Unable to connect to the Microsoft Remote Debugging Monitor. A security package specific error occurred
Mein erster Versuch wäre es dabei den Remote-Debugger lokal auf der Remote Maschine zu installieren ... Manchmal hilft so etwas schon.
Das ist nicht so einfach. Unsere Anwendung besteht nur zum Teil aus .Net-Programmen. Der überwiegende Teil sind zurzeit unmanaged COBOL-Dlls (ca. 2.000 Stück). Das macht wohl keinen Sinn, die jedes Mal alles in jedes Projekt zu kopieren.
Du musst sie nicht jedes mal kopieren ein Repository zeichnet sich ja grade dadurch aus, dass es nur geänderte Dateien überträgt. Und den Rest schafft man wie winsharp93 schon gesagt hat mit ein paar Post-Build-Events und Robocopy ...
Mein beschriebenes Problem kenne ich aus anderen Entwicklungsumgebungen nicht, dort spielt es keine Rolle, welchen Stand die DLL im Anwendungsordner hat. Es wird immer die aktuelle aus dem Projektverzeichnis verwendet.
Daher hätte ich gehofft, dass ich diese Möglichkeit in Visual Studio bislang nur einfach noch nicht gefunden habe.
Wie willst du ordentlich debuggen, wenn es nicht die gleichen sind?
Für mich klingt das nach einem Fall in dem ein Repository wahre Wunder wirken könnte: zum Beispiel GIT oder Mercurial.
Damit könnte jeder eine Lokale Kopie der zentralen Anwendung haben und diese auf seinem PC starten. Dann hat man keine Probleme mit Locks, unstabilen Versionen auf dem Share oder ähnlichem.
Du könntest die Projekte einfach dorthin kopieren wo sie hinsollen und von dort laden.
Gute Idee, aber würde dann nicht eine Meldung beim Boot-Vorgang erscheinen?
Das wäre dann vielleicht noch verwirrender für die Leute
Nein - dann würde dich ja jeder Windows-(nicht-unbedingt-von-MS)-Dienst fragen, der als System läuft, ob er starten darf - ich vermute so etwas hast du bisher noch nicht gesehen. Das wird bereits bei der Installation vom Dienst festgelegt und dort kommt dann die Abfrage nach erhöhten Rechten.
Ich hab mir keine direkten Notitzen gemacht, aber es ist eine LSA-Fehlermeldung, dass GroupPrincipals nicht aufgelöst werden können (in diesem Fall), die undefiniert auftritt. Ich hab 4 Server in einer kleinen Farm, davon waren 2 ständig betroffen und einer zeitweise betroffen.
Ich habe dann GetAuthorizationGroups über das underlyingObject und die tokenGroups-Property nachgebaut - nur löse ich die Gruppen dann von Hand auf und nicht wie der LSA das tut auf einen Schlag.
Andere Unzulänglichkeiten hab ich selbst noch nicht bemerkt, aber in StackOverflow gabs einige Hinweise zu offenen Bugs (mit Connect-Link).
Mehr kann ich aber auch nicht sagen.
Hallo,
also mit dem Login hat es folgendes auf sich:
Fall 1) Windows-Authentifizierung (Kerberos)
Der Benutzer bekommt bei der Anmeldung ein Kerberos-TGT (Ticket-Granting-Ticket), das heißt er darf sich selbst Tickets für bestimmte Ressourcen (DB, Files, Webseiten, etc.) ausstellen. In diesem TGT ist auch der Gruppenvektor des Benutzers enthalten. Selbiger wird beim Login aktualisiert.
Fall 2) Die Anwendung sucht den Benutzer im AD und fragt seine Rollen ab
Die Anwendung kennt nur den Benutzernamen und holt sich die Gruppen im AD. Das führt dazu, dass (sofern nicht gecacht wird) der Gruppenvektor immer aktuell ist - nutzt man NTLM oder AccountManagement (.NET) werden dabei die APIs von LSA benutzt. Ob selbiger einen Cache hat oder nicht kann ich nicht sagen.
Man sollte beachten, dass der AccountManagement Namespace und die von Abt angesprochenen Principals (User und Computer) GetGroups() und GetAuthorizationGroups() anbieten. Ersteres liefert alle DIREKTEN Gruppen und DistributionGroups, letzteres leifert alle Sicherheitsgruppen (auch rekursive). Um die rekursiven Gruppen zu lesen, muss der lesende Account Mitglied in "Windows Authorization Access" sein (das ist eine Well-Known-Group im AD).
GetGroups() ruft im übrigen "MemberOf" des Benutzers ab und GetAuthorizationGroups() ruft "tokenGroups" auf.
Der AccountManagement-Namespace hat aber einige Bugs, die dazu führen können, das GetAuthorizationGroups() nicht funktioniert, weshalb sich ein eigener Rekursiver aufruf von GetGroups als alternative lohnen kann - natürlich nur, wenn vorher GetAuthorizationGroups() gescheitert ist, das ist nämlich deutlich performanter.
Der Anwender könnte mit dem Wissen dieser Lücke und genug Rechten das Active Directory manipulieren; und zwar kräftig.
Ich will ja nix sagen, aber mit genug Rechten muss er nichtmal etwas von der Lücke wissen - dann kann er es eh 😉){gray}
Hallo allerseits.
ich mache in einer MVC3-Web-Applikation einen WebRequest mit
var request = WebRequest.Create(sb.ToString());
in meiner Web.Config ist folgendes Konfiguriert:
<system.net>
<defaultProxy enabled="true">
<proxy usesystemdefault="True" autoDetect="True" />
</defaultProxy>
</system.net>
Der WebServer steht unter meiner Kontrolle und ich habe somit kein Partial-Trust o.Ä. Der Pool-Benutzer ist ein Domänen-Account.
Folgendes passiert nun:
Applikation als AppPoolUser --> Proxy wird verwendet
Applikation als Domänen-Account --> Proxy wird nicht verwendet
Domänen-Account in (lokaler) Administrator-Gruppe --> Proxy wird verwendet.
Via netsh winhttp ist der Proxy eingetragen und auch für den Benutzer-Account in IE eingetragen.
Die Applikation kann aber auf Dauer nicht als AppPoolUser laufen und Admin-Rechte soll sie natürlich auch nicht haben.
Hat jemand damit Erfahrung, warum so etwas auftritt?
//Ergänzung:
Ich habe den Domänen-Benutzer auch schon in anderen Gruppen untergebracht, wie z.B. IUSRS, Domain Users, Lokaler Benutzer, etc. pp. und auch jedes mal neu gestartet - aber nix hilft ...
Hallo,
kurz eine Sache zum Design: lagere das was du dort tust in eine Funktion aus und mach es nicht direkt im Eventhandler 😉
Ansosnten:
string filter = "(&(objectClass=user)(objectCategory=person)(cn=" + txtBenutzer.Text + "*))";
//Das heißt soviel wie: cn endet mit txtBenutzer.Text
string filter = "(&(objectClass=user)(objectCategory=person)(cn=*" + txtBenutzer.Text + "*))";
//Das heißt cn beinhaltet txtBenutzer.Text
im übrigen vermute ich, dass du statt cn lieber samaccountName (= Windows-Anmeldename) nehmen möchtest oder sn (= Nachname)
Hallo,
was häufig klappt um dinge zu verarbeiten, die eigentlich nicht automatisiert werden "wollen" ist das Ausführen der Anwendung per ProcessInfo.Start().
Im schlimmsten Fall musst du dann die Ergebnisse dieses Programms in eine Datei schreiben lassen und sie von dort wieder laden.
Das mag zwar nicht elegant sein, funktioniert aber fast immer.
Ich würde vermuten, dass du UserControls verwenden möchtest ...
Wenn Buchkritik 1:n zu buch ist muss es etwas anders aussehen:
context.Bucher.Where(
b => b.Bezeichnung.Contains(keyword) ||
b.Verarbeitung.Contains(keyword) ||
b.Buchkritik.Any(a => a.BEM1.Contains(keyword)));
Das Problem ist, dass das äußere Where nur Boolean erwartet, dein inneres Where aber IEnumerable<Buchkritik> ist. .Any() prüft hingegen auf Existenz.
Ergänzung, da Abt schneller war:
Du kannst natürlich auch .Contains() anstatt == verwenden 😉
Entweder konstruierst du deinen SQL Befehl einfach selbst (auf jeden Fall parameterisiertes SQL benutzen!) oder du schaust dir mal das Entity-Framework an - letzteres kann auch mit zusammengesetzen Schlüsseln arbeiten.
Hallo und willkommen,
das Datenformat ist für dein Vorhaben ziemlich egal, aber etwas anderes steht dir im Wege:
C# ist keine Skript-Sprache - soll heißen, du hast kompilierten Code und das macht dein Vorhaben nicht grade einfach.
Google liefert da was wenn du in Richtung "C# eval function" suchst.
Möglichkeit 1: 2 geschachtelte For-Schleifen;
Möglichkeit 2: 2 geschacktelte foreach-Schleifen;
Möglichkeit 3: LinQ:
var averages = values.Select(list => list.Average()).ToList();
Bitte beachte aber die Regeln für das Forum!
Ich wollte nicht sagen, dass dein Vorschlag blödsinn ist - was aber mein Problem angeht, so liefert es keine Lösung.
Ich nun auch die ViewBags entfernt. Aber es bleibt dabei - model.DisplayName im DropDownListFor führt zum falschen markierten Eintrag.
Die Änderung der Selektion passiert beim Aufruf von DropDownListFor - vorher ist die Selektion ja korrekt. Und wie gesagt - ein anderer Name umgeht das Problem - das ist nicht optimal, aber reicht mir für den Moment.
Ich hätte gerne mit dem Debugger reingeschaut, aber weder der MS Symbol-Server noch Reflector erlauben mir das - und zum eindinden der MVC3 Quellen war ich .. nicht motiviert genug.
Leider funktioniert dein Vorschlag so nicht.
Ich habe es mal genauer betrachtet - ein Umbenennen von DisplayName > DisplayedName bringt den gewünschten Erfolg.
Lieber wäre es mir allerdings, wenn ich wüßte, warum das nicht mit "DisplayName" funktioniert.
Das auswählen und generieren einer SelectList aus einer anderen Liste kann man im Übrigen durchaus als "View-Logik" bewerten, weshalb es in der View stehen darf - zumindest hier bei uns.
Hallo allerseits,
ich habe eine MVC3 DropDown-Liste, die nicht das erwartete Element als "selected" markiert und ich würde mich über einen Ratschlag freuen:
Die Liste wird initialisiert mit:
var displayNamesSelectList = new SelectList((IEnumerable<String>)ViewBag.AvailableDisplayNames, Model.DisplayName);
Prüfe ich während des Debuggens, ist der korrekte Eintrag als "selected" markiert und zwar NUR der korrekte Eintrag, also auch kein weiterer.
Nach dem Ausführen von
@Html.DropDownListFor(model => model.DisplayName, displayNamesSelectList)
ist aber leider der erste Eintrag markiert. Kurz vor der Ausführung, ist die SelectList noch in Ordnung (geprüft mit dem Debugger).
Ein weiteres Feld mit dem Namen "DisplayName" existiert nicht und es wird auch im QueryString kein solcher Name übergeben.
Ein Label, dass den gleichen Inhalt wie die DropDown-Box hat, zeigt den erwarteten Text an.
Vielen Dank für Hinweise 😃
CodeProject weiß etwas zu SSL auf Self-hosted-Services.
Wenn dein Service im IIS läuft ist's noch einfacher, weil man das dort mit dem seinen Einstellungen abhandeln kann.
Sieh's als Kür für dein Schulprojekt 😉
ähm.. es reicht die Zeit nicht?
Klingt kompliziert SSL auf dem Server anzuschalten und im Client statt http https hinzuschreiben 😉
Unkonventionell - ja ...
also deine Verschlüsselung kannst du dir (wenn sie Synchron ist) getrost sparen - synchrone verschlüsselung mit öffentlichen Schlüsseln bringt in etwa .... nichts. ((Deshalb war auch dieses Xpire-Bild-selbst-lösch-System nichts wert)
Viel wichtiger wäre es das ganze in HTTPS (oder ein anderes asynchrones Verschlüsselungsverfahren) zu kapseln, aber das nur am Rande.
Du könntest anstatt diese Antwort zu senden auch ein Cookie senden, wo du genau den String reinschreibst.
Egal wie - da REST ja eher JSON und XML spricht anstatt von Klassen kannst du sicherlich (hab's nicht geprüft - ich vermute nur grade) auch einfach einen String zurückgeben.
Für eine Session-Basierte authentifizierung, würdest du klassischerweise wohl ein Session-Cookie erzeugen, das eine genügend Randomisierte generierte Zahl enthält, die du dann mitsendest.
Auf Serverseite speicherst du das entweder in HTTPContext.Session (das ist allerdings wohl nicht "REST-Konform" (sofern es letzteres überhaupt gibt) oder du speicherst es in eine Datenbank (macht auch ne Serverseitige Session).
Du kannst aber auch sowas wie NTLM oder die Basic-Authentifizierung benutzen, dabei wird jedesmal die Authentifizierung mitgesendet (was im Kontext von REST wohl der "richtige" Weg wäre).
Zwei Dinge:
Hallo allerseits:
Folgende Situation:
Ich habe auf einem IIS-Server einige Services laufen.
Alle diese Services erben von einer Service-Basisklasse und implementieren neben ihrem Speziellen Interface also auch das Interface der Basisklasse.
Ich möchte nun erreichen, dass ich im Clienten (MVC3) diese Basisklasse im Basiscontroller nutzen kann, um eine Bestimmte funktion auszuführen.
Momentan habe ich allerdings für jeden Service eine ServiceReference und jede Service Reference Definiert natürlich das (auf Server-Seite) gemeinsame Interface neu.
Gibt es da eine sinnvolle Möglichkeit dieses Problem zu umgehen ohne a) den Komfort der svcutil-Code-Generierung zu verlieren und b) möglichst ohne die Services in einer Klasse zusammenzufassen.
Danke für Ideen 😃
Ich nutze in WPF genau 2 Wege für Resourcen
die Ressource aus Properties - meistens für Lokalisierung: Zugriff im Code über NamespaceDesProjekts.Properties.Ressources.BildName
Bilder in der Projektmappe, die Ressource als Build-Einstellung haben da kannst du dann aus XAML einfach mit SOURCE=/relativer/Pfad/zum/Bild.jpg zugreifen
Der Pfad den du da bekommst "/ToDoToday2.0;component/Images/sticky1.gif" ist was, was XAML verwendet. Genaueres dazu findest du vermutlich in der MSDN (könnte Ressourcen-Addressierung heißen...)
Naja - jenachdem, wie ineffizient das mit dem Speicher umgeht und wie viele Daten du auslieferst und wie wenig Arbeitsspeicher .... blabla ..
Es kann halt viel sein - du kannst mit echo ein paar Execution Times mitberechnen - vielleicht geben die dir einen Hinweis auf die genauere Quelle.
Willkommen,
ich empfehle dir den Fiddler, um zu sehen ob das verhalten an .NET liegt oder am andere Ende. Du kannst Requests an die Webseite senden und die Antworten untersuchen (es gibt da einen Request-Composer).
Insbesondere solltest du schauen, was passiert, wenn du eine zweite Abfrage sendest.
Wenn es dann immer noch langsam ist, dann ist wohl das PHP-Skript schuld.
Du kannst sie auch anstatt mit einem Laufwerksbuchstaben zu versehen in einen deiner Benutzerordner (muss leer sein) einmounten und die AccessControlList entsprechend konfigurieren- dann hast auch nur du zugriff (und jemand anderes sieht sie auch nicht) ... was allerdings das Problem der Admins nicht löst - denn ein Admin ist nunmal Admin und du kannst mit Software im Bestenfalle die Funktionen des OS nicht umgehen.
Und hast du auch die "kritische Länge" herausfinden können?
Ich hatte das auch ne Weile, hatte aber Probleme mit Backups über den WindowsBackup-Dingens (sowohl auf USB als auch auf ein Share) deshalb, hab' ich's wieder in meine Reale Maschine gezogen ...
Man testet ja auch an nem Testsystem, ne? 😉
Bei mir hat mal ein von EF definierter Key zu einer ähnlichen Situation geführt.
Das trat dann zumindest bei Select auf, weil er da in EF den Key doppelt hatte, der aber in der DB kein Key war. - Fiel mir grade so ein ...
Was genau soll dein Code denn machen?
Wie ist deine Datenstruktur?
Vielleicht ne blöde Frage, aber hast du mal versucht, was passiert, wenn du eine Entity umbenennst (grade im vorderen Teil) - du kannst ja mal nen einzelnen Buchstaben Testweise durch was anderes ersetzen.
Damit findest du (falls vorhanden) sicher auch die Längenbeschränkung...
Ich Rate mal:
PreviewTouchMove als Event verwenden anstatt des TouchMove
Schmeiß deine Settings einfach in eine Klasse und schreib sie per XML-Serializer wohin auch immer du willst bzw. lese sie von wo immer du willst.
Quick and dirty - funktioniert aber.
Abgesehen davon, dass dein Bildausschnitt nicht vielsagend ist (denn hier spielt ja eventuell auch die Projekttionsmatix eine Rolle), sieht das ein wenig aus, wie ein Problem im Z-Buffer - ist deine Auflösung in der Z-Achse eventuell zu klein (soll heißen sind deine Distanzen zu gering)?
Du könntest einfach mal bei KeePass in den SourceCode schauen. Die haben dort das sog. "AutoType"-Feature, was ziemlich genau das tut, was du ebenfalls versuchst.
Version 2 ist sogar in .NET geschrieben.
Die Serialisierung nach JSON ist wohl das beste was du in dieser Situation tun kannst.
Alternativ - sofern du auf das WebBrowserDing verzichten kannst - stell die
Daten einfach in einer WinForm dar - das geht noch am allerschnellsten. Insbesondere kannst du hier mit Databinding arbeiten.
Wenn ich sowas lese stellt sich mir die Frage: Warum?
Der IIS kostet nichts, ist leicht zu installieren und kann gut/leicht verwendet werden und vor allem gut getestet!
Von ASP.NET direkt auf Anwendungsdaten zugreifen?
Prinzipiell kann ASP.NET alles was auch .NET hergibt - die Frage hierzu: Was hast du denn vor?
Nur als Hinweis:
Alleine das Suchen nach der EventSource funktioniert in Windows Vista/7/8 nur, wenn du über Administrationsrechte verfügst - ansonsten kannst du nämlich nicht auf das Security-Log zugreifen - und das ist häufig ein Problem.
Die Variante das Log immer zu löschen ist wohl eher eine Krücke.
Wenn es für dich so i.O. ist, dann lass es, aber ansonsten würde ich dir empfehlen im Installer des Dienstes (der sowieso elevated laufen muss) das Eventlog zu prüfen und ggf. zu konfigurieren.
Am Rande:
Windows Services bieten dir automatisch ein EventLog an, welches du ohne weitere Konfiguration zum Schreiben benutzen kannst.
Entweder versucht ihr einen Trust zwischen den Domänen aufzusetzen, dann kannst du anhand der Domäne entscheiden, wo ein Nutzer herkommt.
Oder du lässt dir was pfiffiges einfallen, wo du im Code entscheidest, wie du zu authentifizieren hast (da gibt's bestimmt auch schon varianten im Netz).
Oder aber du schaust dir einmal ADFS 2.0 an und siehst zu, dass ihr in beiden Firmen einen ADFS 2.0 Server bekommt (Achtung!: nicht die Rolle aus Windows Server 2008 R2 nehmen, dass ist Version 1.0) und dann einen Trust zwischen den beiden aufsetzt.
Context.User und Thread.CurrentPrincipal werden für ASP-Anwendungen gesynct.
Letzteres ist halt auch in nicht-ASP.NET-Umgebungen verfügbar.
Bei LeastPrivilege kann man es nachlesen.
Wenn du mit den "Windows-Namen" authentifizierst, dann Thread.CurrentPrincipal