Laden...
G
Grumbler85 myCSharp.de - Member
Entwickler Rheingau Taunus Dabei seit 13.05.2008 538 Beiträge
Benutzerbeschreibung

Forenbeiträge von Grumbler85 Ingesamt 538 Beiträge

25.08.2011 - 11:03 Uhr

Kurzer Hinweis noch:
Hardlinks eignen sich NICHT zur Spiegelung.
Eine Spiegelung legt Dateien mehrfach ab. Ein Hardlink gibt einer Datei nur mehrere Namen.

25.08.2011 - 10:30 Uhr

Zitat aus Flexhex.com:

To get the number of links use the Win32 API function GetFileInformationByHandle. The nNumberOfLinks member of the returned BY_HANDLE_FILE_INFORMATION structure contains the total number of links (a value of 1 means there are no hard links).

24.08.2011 - 15:19 Uhr

Du könntest in LinQ die Navigation Properties von den Betreffenden klassen auf Inhalt (also count > 0) prüfen.
Prinzipiell kannst du aber davon ausgehen, dass wenn du eine Exception beim Löschen bekommst, die nicht von der Connection kommt, wegen der referentiellen Integrität bekommst.

Und die Exception kannst du ja fangen und dort - wenn du es noch für nötig erachtest - den SQL Fehlercode prüfen.

24.08.2011 - 12:06 Uhr

Ich würde dir folgendes ans Herz legen, denn ich vermute du solltest dich mit dem Thema Datenbanken erst noch ein wenig auseinandersetzen.

🛈 📗

23.08.2011 - 15:52 Uhr

Du kannst einen WebRequest absetzen

23.08.2011 - 14:40 Uhr

Ich weiß nicht, ob das Interop dazu in der Lage ist, aber folgendes könnte funktionieren:

-- Versuch 1 --

  1. Visio starten mit dem Befehl wie es AppV (= Softgrid) starten würde
  2. Diese Instanz benutzen für die Interop.

-- Versuch 2 --
Sollte das nicht gehen, müsstest du dein eigenes Programm gemeinsam mit Visio sequenzieren. Dann laufen sie in der gleichen Sandbox und der Zugriff sollte möglich sein.

-- Versuch 3 --
Sequenziere ein kleines Dienstprogramm gemeinsam mit Visio, was deine Funktionalität kapselt und über HTTP oder MSMQ kommuniziert - aber Achtung "localhost" ist in der virtualisierten Applikation nicht unbedingt das gleiche wie auf deinem System.

//edit:
Beim weiteren Überlegen halte ich Versuch 2 für vielversprechend.

22.08.2011 - 15:00 Uhr

du könntest folgendes tun:

<% if(LoggendOnUser.LoggedIn) { %>
<li><%: Html.ActionLink(...) %></li>
<% } else { %>
<li><span class="disabled">Anmelden</span></li>
<% } %>
22.08.2011 - 08:46 Uhr

Das war mal (zumindest in XP) eine Windows-weite Einstellung. Ich weiß aber nicht, ob die mit Vista und 7 erhalten geblieben ist.

Wenn du es ansonsten erreichen willst, könntest du versuchen alle Element auf Visibility = Hidden zu setzen und einen transparenten Hintergrund verwenden - das erschafft zumindest den Effekt.

19.08.2011 - 12:51 Uhr

Mit Fiddler2 kannst du den Datenverkehr zerlegen.

Musst allerdings drauf achten, dass dein Client keinen Proxy umgeht.

19.08.2011 - 10:30 Uhr

Du könntest erst einmal schauen, wiviele Handles überhaupt erzeugt werden.
Einige von den Sysinternals Tools eignen sich dazu (Handles und ProcExp).

Ansonsten gibt es wohl diverse Stellen die man ändern kann, um die Handle-Zahlen zu erhöhen - ABER es hat einen guten Grund, dass diese Grenzen existieren und es ist eher ein Design-Fehler, wenn du zu viele benötigst.

Vielleicht helfen dir die Artikel weiter, aber zuvor noch eine Rückfrage.
Was passiert eigentlich, wenn du die Dateien mit Handle == 0 überspringst?
Kommen dann alle anderen auch mit Handle == 0? Oder betrifft das nur bestimmte Dateien?

Pushing the Limits
Increasing User and GDI Handle Limit

18.08.2011 - 14:56 Uhr

Hm...
Du könntest mal versuchsweise das Handle nach jedem Load wieder schließen und schaun ob er dann durchläuft - aber die Handle-Grenze pro Applikation liegt für Windows irgendwo bei 16 Mio.
Ich weiß allerdings nicht, ob .NET nicht schon früher bockig wird.

18.08.2011 - 14:30 Uhr

Also die MSDN ist ja recht deutlich mit der 0:

If uFlags does not contain SHGFI_EXETYPE or SHGFI_SYSICONINDEX, the return value is nonzero if successful, or zero otherwise.

18.08.2011 - 14:27 Uhr

Und jede Datei hat auch ein großes und ein kleines Icon?

18.08.2011 - 14:16 Uhr

Hat denn jede Datei in Windows ein Icon?

17.08.2011 - 11:26 Uhr

Wenn du Serverseitig validieren willst/musst könntest du das ja auch am Ende machen und gleichzeitig alle validieren.

17.08.2011 - 10:36 Uhr

Dann benutze doch ein normales Postback im Button Click

17.08.2011 - 10:25 Uhr

Du kannst das mit irgendwielchen lustigen Tricks machen, dass die Version automatisch erhöht wird ...
Ich glaube in VS 2003 war das mal ein Problem.

16.08.2011 - 15:12 Uhr

Versuch's einfach mal ohne Cast - das könnte schon klappen

16.08.2011 - 13:49 Uhr

Also Prinzipiell solltest du versuchen, die vorhandene Infrastruktur zu benutzen.

In deinem Fall also erstens die Manifest-Datei (die es ermöglicht, dass das Programm immer vom Admin ausgeführt werden muss).
Auch unter XP sollte das kein Problem sein, wenn die Kinder einen eingeschränkten Account haben (wenn sie einen normalen haben kannst du eh nix dran ändern, dass sie auch Admin sind)

Also Manifest, wie beschrieben.

Deine Anwendung sollte für den Fall, wo UAC aus/nicht vorhanden ist dann folgendes tun:


var myPrincipal = (WindowsPrincipal)Thread.CurrentPrincipal;
if(!myPrincipal.IsInRole(WindowsBuiltInRole.Administrator))
  throw new SecurityException("BAD CHILD!");

Damit sorgst du dafür, dass deine Anwendung nicht funktioniert, wenn jemand ohne Adminrechte sie startet (Fehler abfangen und netter beenden wäre vielleicht ratsam).

Dann brauchst du kein Loginfenster - das macht Windows für dich und bei XP wird das Programm dann nur starten, wenn du Admin bist.

16.08.2011 - 13:38 Uhr

Der Port ist für SSL ziemlich egal.
443 ist halt der Standard HTTPS Port.

16.08.2011 - 13:34 Uhr

Impersonierung betrifft nur die lokale Maschine - ist also der Webserver eine andere Maschine, als die auf der die Einstellungen gemacht werden sollen, so spricht man von Delegation.
Delegation ist im Endeffekt eine stärkere Form der Impersonierung.
Delegieren (also Impersonieren für Remote-Resourcen relativ zum ausführenden Kontext) funktioniert nur dann, wenn entweder der Kontext das Passwort kennt (was bei Forms, oder Basic der Fall ist) oder wenn die Delegation bei Kerberos zugelassen ist (was der Fall ist, wenn es den Benutzer auf der Remotemaschine ebenfalls gibt, oder die AD entsprechend konfiguriert ist). Seit Windows 2003 gibt es die "Constrained Delegation" und die "Protocol Transition", die die Delegation von Kerberostokens lenken.

Noch eine Anmerkung:

<identity impersonate=true />

funktioniert nicht mit "integrated Pipeline" - hier benötigt man die Code-Basierte Impersonierung.

16.08.2011 - 12:44 Uhr

Dein Problem ist vermutlich die Delegation der Rechte.

Der IIS Läuft in einem Benutzerkontext (IIS APPPool). Dieser Benutzer hat nicht die erforderlichen Rechte.
Wenn du impersonation auf true gesetzt hast (beim Klassichen App Pool) funktioniert das auf der Lokalen Maschine, weil der IIS das Benutzerticket von dir verwenden kann.

Ist es aber so, dass das alles auf einer Fremden Maschine ablaufen soll, dann musst du Delegieren. Das geht nicht ohne weiteres mit einer Windows-Authentifizierung.
Wenn du SSL verwendest, kannst du es mit Basic machen (da kannst du delegieren) ansonsten schau dir Impersonation and Delegation in der MSDN an.

16.08.2011 - 12:39 Uhr

Sind das spezielle Berichte oder ist das RDL(C)?
Wenn nämlich RDLC, kannst du den Microsoft Report Designer benutzen.

16.08.2011 - 12:10 Uhr

Wenn es als Admin ausgeführt wurde, hat der doch bereits sein Passwort eingegeben, oder?

Vielleicht habe ich auch einfach noch nicht so genau verstanden, was du vor hast.
Aber das schöne ist ja, dass eine Applikation muss nicht authentifizieren muss - allenfalls autorisieren. Den Rest kann i.A. Windows übernehmen.
Und für die Autorisierung hast du diverse Mechanismen, wie PrincipalPermissions oder IsInRole aus Thread.Identity (vlt auch Thread.Principal)

16.08.2011 - 11:42 Uhr

Ja das Problem kenne ich -
die beste Lösung heißt: anderes Installer Produkt.

WiX kann helfen, vielleicht taugt auch der InstallShield LE (kostenlos für VS 2010 Pro) etwas.

Ansonsten kann ich dir nicht genau sagen, wann der VS-Installer die Version tatsächlich austauscht.

Vielleicht reicht es auch aus, wenn du die Dateiversion änderst.

16.08.2011 - 11:11 Uhr

Wenn das MSI mit VS erzeugt wird, gibt es eine Eigenschaft des Setups "RemovePreviousVersions" - damit sorgst du dafür, dass ältere Versionen (gleicher UpgradeCode, anderer ProcuctCode) entfernt werden.

16.08.2011 - 11:03 Uhr

Hier steht alles was du brauchst
Stackoverflow: RunAs Admin

//edit:
Die empfehlen da IsInRole.
Eventuell ist PricipalPermission.Demand() der bessere Weg.

16.08.2011 - 11:01 Uhr

Du kannst die Anforderung nach Adminrechten einfach im Link oder im Manifest platzieren, dann kümmert sich Windows um den Rest.

12.08.2011 - 15:24 Uhr

Nur zur Klärung - du willst also sowas wie den Header-, den Footer- und einen scrollbaren Content-Bereich haben?

12.08.2011 - 10:46 Uhr

Das Trace des Servers bringt eine Antwort (Beispielkonfiguration)
Auslesen kann man den Trace mit %windir%/Microsoft SDKs/Windows/v7.0A/Bin/SvcTraceViewer.exe


<system.diagnostics>
    <sources>
      <source name="System.ServiceModel.MessageLogging"
        switchValue="Verbose">
        <listeners>
          <add type="System.Diagnostics.DefaultTraceListener" name="Default">
          </add>
          <add initializeData="C:\inetpub\logs\LogFiles\Listing\Listing.svc"
            type="System.Diagnostics.XmlWriterTraceListener" name="messages"
            traceOutputOptions="DateTime">
          </add>
        </listeners>
      </source>
    </sources>
  </system.diagnostics>

  <system.serviceModel>
    <diagnostics>
      <messageLogging logEntireMessage="true" logMalformedMessages="true"
        logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true"
        maxMessagesToLog="3000" maxSizeOfMessageToLog="2000" />
      <endToEndTracing propagateActivity="true" activityTracing="true"
        messageFlowTracing="true" />
    </diagnostics>

Der Trace förderte zu Tage, dass ich ein IEnumerable<> (das nach ein paar Operationen entsteht) nicht serialisieren kann. Anstattdessen serialisiere ich nun IList<> und es Funktioniert

11.08.2011 - 16:59 Uhr

Hm - also ich habe einen Try-Catch im der ServiceMethode, aber den triffts nicht.
Genauer: Return wird ausgeführt und er springt auch zur schließenden Klammer in der Methode.
Der Fehler tritt erst beim Client auf.
Hier der ganze Trace:

Fehlermeldung:
[SocketException (0x2746): An existing connection was forcibly closed by the remote host]
System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) +245

[IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.]
System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) +7856541
[...]

[WebException: The underlying connection was closed: An unexpected error occurred on a receive.]
System.Net.HttpWebRequest.GetResponse() +7859780
System.ServiceModel.Channels.HttpChannelRequest.WaitForReply(TimeSpan timeout) +99

[CommunicationException: An error occurred while receiving the HTTP response to
>
. This could be due to the service endpoint binding not using the HTTP protocol. This could also be due to an HTTP request context being aborted by the server (possibly due to the service shutting down). See server logs for more details.]
System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) +4729827
System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) +1725
[...]

11.08.2011 - 16:16 Uhr

Hallo,

ich bekomme beim return eines WCF-Service (IIS gehostet) folgende Fehlermeldung:

Exception, wie mein Browser sie mir zeigt (CustomErrors OFF):> Fehlermeldung:

An existing connection was forcibly closed by the remote host.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host

Exception wie sie nach dem Auftreten aussieht:> Fehlermeldung:

An error occurred while receiving the HTTP response to
>
. This could be due to the service endpoint binding not using the HTTP protocol. This could also be due to an HTTP request context being aborted by the server (possibly due to the service shutting down).

Im Eventlog findet sich das gleiche nochmal wieder.

Der Fehler wird im Client geworfen.
Die Bindung ist eine ws2007FederationHttpBinding mit generierten Standardeinstellungen.
Timeout ist unwahrscheinlich, da der Service nur ca. 5 Sekunden (mit Debugger und bis ich auf weiter geklickt habe) für die Abarbeitung benötigt (und dann auch die Meldung anders wäre).

Hat jemand sowas schon einmal gesehen?

11.08.2011 - 10:05 Uhr

Punkt 1)
Erzeuge eine Gruppe mit den Rechten, die ein solcher Benutzer haben soll und werf in dort hinein. Nicht gesetzte Regeln erhalten den Standardwert.

Punkt 2)
Ich vermute du wirst das selbst tun müssen.

11.08.2011 - 09:54 Uhr

Durch die Integrationsfeatures wird ja die Position des Mauszeigers von Host auf Guest übertragen, falls der Zeiger über dem Gast ist.

Ich vermute, dass dein Zeiger im Gast sogar unsichtbar wird - allerdings interessiert das deinen Host eher gar nicht.

Vielleicht klappts wenn die VM im Fullscreenmode läuft.

Unabhängig davon:
Wenn du eine C# anwendung hast und somit auf .NET unterwegs bist (und nicht grade unglaublich spezielle oder native DLLs oder Treiber verwendest) erschließt es sich mir nicht, warum die Anwendung überhaupt statt auf dem Host in einem Windows XP Gast läuft. - Außer einer merkwürdigen Firmenpolitik fällt mir da wenig zu ein ...

10.08.2011 - 10:56 Uhr

Eine normale Textbox tut den Job, also hast du wohl irgendetwas getan, was das verhalten der Textbox anpasst ...

Wie soll hier irgendjemand erraten, was du tust und was dabei falsch sein könnte?

Wie Poste ich richtig? Punkt 5.

10.08.2011 - 10:29 Uhr

Du kannst den Content der HTML-Datei laden und einfach senden ...

10.08.2011 - 10:01 Uhr

Meine Textboxen können "Deadkeys" ...

Ich vermute stark, dass du irgendwas bei Keydown oder so verarbeitest, aber da du nicht angibst wo, wann in welchem Code unter welchen Umständen das auftritt, wird man dir nicht helfen können.

("Wie Poste ich richtig" ist lesenswert)

09.08.2011 - 14:30 Uhr

Kannst du Response.Redirect benutzen?
Das verhält sich natürlich anders als Transfer, aber dann solltest du keine Probleme haben.

09.08.2011 - 13:22 Uhr

In der Systemsteuerung bei Programmen sollte es auftauchen...
Ansonsten tuts auch nicht weh es einfach zu installieren 😉

09.08.2011 - 10:35 Uhr

Vielleicht hast du einen Error im Errordokument?
Schalte mal die CustomErrors auf Off und öffne dein Errordokument per hand.

05.08.2011 - 15:57 Uhr

Naja - im allgemeinen weißt du nicht wie lange etwas dauern wird - es ist auch unrealistisch das zu schätzen, da die Einflussfaktoren viele sind.
Was aber geht ist entweder (wie der Troll sagt) das ControlAdded event zum Zählen benutzen (du weißt ja wieviele Controls es am Ende sein sollen)

Oder aber du modifizierst das Laden:

Mach dir ein Event (FormReady), dass du sendest, wenn alles geladen ist.
Deine Progressbar kann das abonnieren und dann Form.Show() auslösen.
ein weiteres Event (FormProgress) kann deine Progressbar über den aktuellen Zustand des ladens informieren.
Die Daten laden kannst du dann entweder im Konstruktor oder in einer eigenen Funktion und ich würde dir empfehlen die Events in einem Interface zu definieren, damit du es für mehrere Forms nutzen kannst.

05.08.2011 - 15:00 Uhr

Also - die Initialisierung (InitializeComponent()) ist eher schwer abzuschätzen - wobei du zählen könntest wieviele schon initialisiert wurden, wenn du sie zunächst mal an Form.Controls vorbeilenkst und dabei zählst.

Falls du Daten lädst (was du im eventuell im onLoad-Event tun solltest) kannst du dort ebenfalls zählen ...

03.08.2011 - 11:47 Uhr

Okay - ich hab's mal versucht und kann das Problem nachvollziehen.

Interessant aber, dass man ohne weiteres die Abstrakte Form selbst bearbeiten kann...

Vielleicht wird dir das helfen können:

MSDN Social: UserControl, Inherited Control, Abstract class, (C#)
Dort im letzten Abschnitt ist ein Workaround, der Funktionieren dürfte.

03.08.2011 - 09:07 Uhr

Nur mal so als Hinweis:

C# als Sprache arbeitet nicht mit Namenskonventionen, um Events zu binden - das musst du also schon mitteilen.
Im Normalfall (also für die Events die du per Doppelklick aus VisualStudio erzeugst) werden die Event-Abonements in der Form.Designer.cs abgelegt.

Vielleicht solltest du auch die Grundlagen-Bücher lesen: 🛈 📗

02.08.2011 - 17:24 Uhr

Hallo MrFluffy,

wenn man nicht weiß und auch nicht ermitteln kann, wann man am Ende sein wird, so nutzt man häufig keine Progressbar mit Steps sondern mit Marquee - also eine laufende ohne genaue Daten (Windows 7 macht das zum Beispiel wenn es noch nicht weiß, wieviel es kopieren wird).

Du könntest dann zusätzlich in der Statusleiste einfach anzeigen, wieviel Daten bereits verarbeitet wurden.

02.08.2011 - 16:23 Uhr

Der Browser meldet das schließen einer Webseite nicht ohne weiteres an den Server.

Vielleicht kannst du die Verbindung schließen, nachdem du sie benutzt hast?

02.08.2011 - 15:53 Uhr

Für das was du als Beispiel genannt hast brauchst du gar keine CMD - C# hat da eigene Mittel (genauer: .NET hat die Mittel). Stecken in System.IO.

Ansonsten musst du schon unterscheiden, ob du COPY oder Ähnliches ausführen willst (das sind nämlich oft Befehle der Kommandozeile und nicht zwingend Programme) oder Programme (wie fubar.exe).

02.08.2011 - 11:42 Uhr

Wenn das Beliebige mit der Authentifizierung per Zertifikat umgehen kann, dann wahrscheinlich schon.