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:
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.