"The Phalanger is a complex solution giving web-application developers the ability to benefit from both the ease-of-use and effectiveness of the PHP language and the power and richness of the .NET platform. This solution enables developers to painlessly deploy and run existing PHP code on an ASP.NET web server and develop cross-platform extensions to such code taking profit from the best from both sides. Compatible with PHP 5.0, the object model in Phalanger enables to combine PHP objects with ...
    
	
    Wenn man ein Textfile mit dem StreamReader einliest, so wird der Inhalt per default UTF8 kodiert, was Probleme mit deutschen Umlauten mit sich bringt.
So funktioniert es (zumindest auf einem deutschen System):
StreamReader sr = new StreamReader(path, System.Text.Encoding.Default);
StringBuilder body = new StringBuilder(sr.ReadToEnd());
sr.Close(); ...
    
	
    Schatzsucher Alex hat mal wieder was ausgegraben: die Doppelpunkt-separierte Auflistung von Controls (von oben nach unten) als Parameter für FindControl() - womit sich einige Aufrufe dieser Methode sparen lassen.
Allerdings kann man das imho nur verwenden, wenn die Struktur tatsächlich fest ist, und sich die ID's bzw. Reihenfolge der Controls innerhalb des Control-Trees sich nicht ändert - denn dann findet man schnell gar nichts mehr ;) ...
    
	
    Setzt man in SQL zwei Felder zu einem zusammen, und ist eines dieser
Felder NULL, so erhält man als Ergebnis ebenfalls NULL. Die Lösung:
Select IsNull(Feld1, 'Feld1 ist leer') + ' ' + IsNull(Feld2, 'Feld2 ist leer') AS Feld3 From Table ...
    
	
    Es gibt zwar overflow:scroll, allerdings bringt das unschöne Effekte mit der horizontalen Scrollleiste im Mozilla hervor. Einen funktionierenden Workaround hierfür gibt es hier:
http://css.fractatulum.net/sample/fixed2.htm ...
    
	
    Bei meinem Versuch, gecachte UserControls aus dem Cache in einen PlaceHolder zu adden, bin ich darauf gestoßen, dass das so einfach gar nicht geht.
Denn sobald ich ein Control aus der gecachten ControlCollection in den PlaceHolder geadded hatte, wurde dieses aus der Ursprungs-Collection, einer Referenz auf die Collection im Cache, entfernt.
Das führte dann dazu, dass in der gecachten Collection beim zweiten Aufruf nichts mehr vorhanden war, und somit keine Inhalte mehr angezeigt wurden - sehr ...
    
	
    Um einen Eintrag im Cache zu ersetzen, reicht es nicht aus den neuen Wert via
Cache["Key"] = NewValueObject();
zuzuweisen, denn dabei gehen sämtliche zusätzlich festgelegten Sachen wie Abhängigkeiten, Laufzeit usw. verloren.
Nach ewigem Suchen habe ich dann aber durch Zufall herausgefunden, was der Unterschied zwischen der Add() und der Insert()-Methode des Cache-Objektes ist: Add() fügt der Cache-Collection ein neues Objekt hinzu, Insert ersetzt eines. Allein die Bezeichnung Insert() ist in ...
    
	
    Ich wollte gerne eine komplette ASPX-Seite via
cachen, was ja mit der Zeile auch wunderbar funktioniert. Nun hatte ich aber das Problem, dass die Inhalte der Seite aus der Datenbank kommen und die Redakteure ihre im Admin gemachten Aenderungen sofort sehen sollten. Dabei kommt es denkbar schlecht, wenn sie erst die entsprechend eingestellte Zeit warten müssen...
Die Lösung hierfür bietet der Artikel Caching Page Output with File Dependencies in der MSDN. Hier wird beschrieben, wie man ...
    
	
    Ich bin gerade auf ein weiteres kleines, aber sehr geiles Feature von ASP.NET gestoßen: es bereitet einem sämtliche Client-Informationen über das Response-Objekt bis ins kleinste Detail auf. So braucht man nicht mehr den Header wie in ASP mehr oder weniger selbst zerschneiden, um etwa in die Info zu kommen, welchen Browser der User benutzt.
In ASP.NET benutzt man hierfier nun einfach
Request.Browser.Type.ToString()
was dann als Ergebnisse z.B. "Firefox" (Firefox 1.0), "IE6" (IE 6, XP SP 2), ...