Archive for the ‘Sharp’ Category

C# – ungültiges SSL-Zertifikat ignorieren

Um mal schnell eine SSL/TLS-Datenübertragung zu testen, ist es praktisch, wenn man ein ungültiges SSL-Zertifikat auch mal ignorieren kann. Mit diesem Code hier geht das:


using System.Net;
...

ServicePointManager.ServerCertificateValidationCallback =
new RemoteCertificateValidationCallback
(IgnoreCertificateErrorHandler);
...
private bool IgnoreCertificateErrorHandler
(object sender,
System.Security.Cryptography.X509Certificates.X509Certificate certificate,
System.Security.Cryptography.X509Certificates.X509Chain chain,
System.Net.Security.SslPolicyErrors sslPolicyErrors)
{

return true;
}
...

Quelle:
http://en.csharp-online.net/Invalid_HTTPS_certificate

VS.NET 2005 Debugger: “Step Into” weg

Heute hat mir die Step Into – Funktion im Debugger so sehr gefehlt, dass ich danach gegoogelt habe und siehe da, es gibt eine Lösung. Man lösche einfach sein Profil in VS.NET 2005, warum auch immer das nötig ist …

1) Click the Tools->Import and Export Settings menu item
2) Choose Reset all Settings
3) Don’t save your settings
4) Pick a new profile

Quelle:
http://aspadvice.com/blogs/plitwin/archive/2005/11/12/13767.aspx

Für die Suche: Visual Studio

Fenster komplett verstecken

Ich musste ein Fenster verstecken, sodass es nicht im Alt-Tab-Menü zu sehen war.

Die Lösung war folgende:

  • Form.ShowInTaskbar auf false setzen
  • Form.FormBorderStyle auf FixedToolWindow oder SizableToolWindow setzen

Quelle:
http://episteme.arstechnica.com/eve/ubb.x/a/tpc/f/6330927813/m/190001652731/r/953007043731

DateTime und ParseExact

Es kommt ja manchmal vor, dass man ein bestimmt formatiertes Datum in ein DateTime-Objekt verwandeln will.
Im aktuellen Fall war es das Format

2007-03-27T18:33:21.123

Dafür gibt es DateTime.ParseExact und so hat das bei mir funktioniert:

DateTime meinDatum = DateTime.ParseExact(meinString, "yyyy-MM-ddTHH:mm:ss.fff", CultureInfo.InvariantCulture);

In einigen Quellen war zu lesen, man müsse Doppelpunkte und andere Zeichen Quoten, das war jedoch nicht nötig. Funktioniert hat es aber erst, nachdem ich CultureInfo.InvariantCulture als zweiten Parameter angegeben habe.

Transparentes 1×1-Pixel-GIF ausgeben

Response.Clear();
Response.ContentType = “image/png�;
Response.BinaryWrite(new byte[] {0×47, 0×49, 0×46, 0×38, 0×39, 0×61, 0×01, 0×00, 0×01, 0×00, 0×80, 0×00, 0×00, 0xFF, 0xFF, 0xFF, 0×00, 0×00, 0×00, 0×21, 0xF9, 0×04, 0×01, 0×00, 0×00, 0×00, 0×00, 0×2C, 0×00, 0×00, 0×00, 0×00, 0×01, 0×00, 0×01, 0×00, 0×00, 0×02, 0×02, 0×44, 0×01, 0×00, 0×3B});
Response.End();

Transparentes 1×1-Pixel-PNG ausgeben

Response.Clear();
Response.ContentType = “image/png”;
Response.BinaryWrite(new byte[] { 0×89, 0×50, 0×4E, 0×47, 0×0D, 0×0A, 0×1A, 0×0A, 0×00, 0×00, 0×00, 0×0D, 0×49, 0×48, 0×44, 0×52, 0×00, 0×00, 0×00, 0×01, 0×00, 0×00, 0×00, 0×01, 0×08, 0×06, 0×00, 0×00, 0×00, 0×1F, 0×15, 0xC4, 0×89, 0×00, 0×00, 0×00, 0×04, 0×67, 0×41, 0×4d, 0×41, 0×00, 0×00, 0xb1, 0×8e, 0×7c, 0xfb, 0×51, 0×93, 0×00, 0×00, 0×00, 0×20, 0×63, 0×48, 0×52, 0×4d, 0×00, 0×00, 0×7a, 0×25, 0×00, 0×00, 0×80, 0×83, 0×00, 0×00, 0xf9, 0xff, 0×00, 0×00, 0×80, 0xe8, 0×00, 0×00, 0×75, 0×30, 0×00, 0×00, 0xea, 0×60, 0×00, 0×00, 0×3a, 0×97, 0×00, 0×00, 0×17, 0×6f, 0×97, 0xa9, 0×99, 0xd4, 0×00, 0×00, 0×00, 0×10, 0×49, 0×44, 0×41, 0×54, 0×78, 0×9c, 0×62, 0xf8, 0xff, 0xff, 0×3f, 0×03, 0×40, 0×80, 0×01, 0×00, 0×08, 0xfc, 0×02, 0xfe, 0×33, 0xa3, 0xe2, 0×99, 0×00, 0×00, 0×00, 0×00, 0×49, 0×45, 0×4e, 0×44, 0xae, 0×42, 0×60, 0×82});
Response.End();

.NET 2.0 – Decompiler

Auf der Suche nach einem kostenlosen Decompiler für .NET 2.0 habe ich das Tool “Reflector” entdeckt. Es hat genau getan, was ich wollte und musste noch nicht einmal installiert werden. Ich konnte einfach die .exe-Datei auf den Desktop legen und doppelklicken.

Hier ist der Link:

http://www.aisto.com/roeder/dotnet/

Noch etwas zum Page Lifecycle in ASP.NET

Mir fiel vor kurzem auf, dass der Load-Event einer ASP.NET-Seite im Postback-Fall vor dem Abarbeiten der Events der Controls (z.B. Button.Click) ausgeführt wird. Demzufolge eignet sich Page.Load nicht immer dazu, die Seite zu initialisieren, da unter Umständen bestimmte Werte bestimmter Membervariablen noch garnicht geändert sind. Ich habe daraufhin einen Blick auf den Lifecycle der Page geworfen und entdeckt, dass der PreRender-Event der Seite viel besser geeignet ist, die Seite zu initialisieren, da zu diesem Zeitpunkt alle anderen Events abgearbeitet sind. Ich habe daraufhin den Event mit einer eigenen Menthode (analog zu Page_Load) registriert. Wenn man nun z.B. einen Button klickt, reicht es, im Eventhandler der Buttons bestimmte Werte zu verändern. Der PreRender-Event der Seite überimmt dann die Ausgabe im UI.