<?xml version="1.0"?>
<?xml-stylesheet href="/App_Themes/Rss/Rss.xsl" type="text/xsl"?>
<rss version="2.0" xmlns:snippetcenter="http://www.snippetcenter.org/">
<channel>
	<title>snippetcenter.org Snippet Feed - Thomas</title>
	<link>http://www.snippetcenter.org/</link>
	<description>The newest Snippets of Thomas</description>
	<language>en-us</language>
	<copyright>snippetcenter.org</copyright>
	<generator>Advice: This is a RSS Document for reading in your RSS-Reader. Click here for mor informations.</generator>

	<image>
		<url>http://www.snippetcenter.org/Library/Media/Public/button_88x31.png</url>
		<title>snippetcenter.org</title>
		<link>http://www.snippetcenter.org/</link>
		<width>88</width>
		<height>31</height>
	</image>
	
	<item>
     <title><![CDATA[Dateien in Mehrbenutzer-Umgebungen streamen]]></title>
     <guid><![CDATA[http://www.snippetcenter.org/en/dateien-in-mehrbenutzer-umgebungen-streamen-s1969.aspx]]></guid>
     <pubDate>Fri, 04 Jul 2008 11:46:00 GMT</pubDate>
     <description><![CDATA[Mit ASP.NET respektive C# eine Datei zum Client zu streamen, ist kein großes Problem. Das macht man zum Beispiel, wenn man die Datei nicht direkt zum Download anbieten möchte, weil man sie vielleicht nur für eingeloggte Benutzer bereitstellen oder die Anzahl der Downloads mitloggen möchte.

Problematisch kann es allerdings immer dann werden, wenn mehrere Benutzer gleichzeitig versuchen, die Datei herunterzuladen, vielleicht sogar in verschiedenen von einander unabhängigen Anwendungen. Die Folge ist eine IOException mit dem schönen Text:

Der Prozess kann nicht auf die Datei D:\xyz.pdf zugreifen, da sie von einem anderen Prozess verwendet wird.

Ein Lösungsansatz, der sich anbietet, ist es diesen Ausnahmefall abzufangen, und das Ganze so lange zu probieren, bis die Datei wieder freigegeben ist. Damit das Ganze nicht in einer Endlosschleife endet, habe ich die Anzahl der Versuche allerdings auf 10 beschränkt.]]></description>
     <link><![CDATA[http://www.snippetcenter.org/en/dateien-in-mehrbenutzer-umgebungen-streamen-s1969.aspx]]></link>
</item>

<item>
     <title><![CDATA[UpdatePanel und SetFocus()]]></title>
     <guid><![CDATA[http://www.snippetcenter.org/en/updatepanel-und-setfocus-s1967.aspx]]></guid>
     <pubDate>Tue, 20 May 2008 11:51:00 GMT</pubDate>
     <description><![CDATA[Wird das UpdatePanel eingesetzt, funktioniert Page.SetFocus(); nicht mehr, um den Fokus auf ein Formularelement zu setzen.]]></description>
     <link><![CDATA[http://www.snippetcenter.org/en/updatepanel-und-setfocus-s1967.aspx]]></link>
</item>

<item>
     <title><![CDATA[Render Control to String]]></title>
     <guid><![CDATA[http://www.snippetcenter.org/en/render-control-to-string-s1966.aspx]]></guid>
     <pubDate>Tue, 20 May 2008 11:50:00 GMT</pubDate>
     <description><![CDATA[Um den Text-Output eines einfachen Controls zu bekommen bedarf es nicht viel, beinhaltet das Control selbst aber weitere Controls, die womöglich datengebunden sind oder auf Events hören, dann muss man diese Events auch "feuern". Mit diesem Snippet funktioniert das wunderbar.

(Das ermöglicht btw. interessante Einsatzgebiete, z.B. könnte man so E-Mail-Templates mit Listendarstellungen völlig designerfreundlich über ein UserControl realisieren ...)]]></description>
     <link><![CDATA[http://www.snippetcenter.org/en/render-control-to-string-s1966.aspx]]></link>
</item>

<item>
     <title><![CDATA[Text einrücken (Quotes)]]></title>
     <guid><![CDATA[http://www.snippetcenter.org/en/text-einruecken-quotes-s1965.aspx]]></guid>
     <pubDate>Tue, 20 May 2008 11:44:00 GMT</pubDate>
     <description><![CDATA[Nachfolgend eine schnell getippte Methode, die sich einen Text nimmt und diesen einrückt - wie man es etwa aus Mailclients gewohnt ist. Perfekt bis ins letzte Detail ist es noch nicht, aber ich habe mit Outlook verglichen - da kann sie sich dem Wettbewerb getrost stellen, denn Outlook versagt ab einem gewissen Level ebenfalls ;-).]]></description>
     <link><![CDATA[http://www.snippetcenter.org/en/text-einruecken-quotes-s1965.aspx]]></link>
</item>

<item>
     <title><![CDATA[ASP.NET - Session-ID zurücksetzen]]></title>
     <guid><![CDATA[http://www.snippetcenter.org/en/aspnet-session-id-zuruecksetzen-s1964.aspx]]></guid>
     <pubDate>Tue, 20 May 2008 11:41:00 GMT</pubDate>
     <description><![CDATA[Session.Abandon() killt zwar serverseitig die aktuelle Sitzung, beim nächsten Request wird dann die neue Sitzung aber mit der gleichen ID erstellt, die der Client im Session-Cookie bereits zugewiesen bekommen hat.

Will man aber unbedingt eine neue SessionID haben, weil man beispielsweise die tatsächliche Nutzungsdauer einer Anwendung durch einen Benutzer anhand dieser mitloggt, und die gleiche ID bei neuer Session so zu verfälschten Ergebnissen führt, muss man etwas handgreiflich werden.

Damit wird das Cookie welches die SessionID einfach überschrieben und vom System automatisch eine neue Nummer erzeugt.]]></description>
     <link><![CDATA[http://www.snippetcenter.org/en/aspnet-session-id-zuruecksetzen-s1964.aspx]]></link>
</item>

<item>
     <title><![CDATA[Snippet: Timestamp mit C# generieren]]></title>
     <guid><![CDATA[http://www.snippetcenter.org/en/snippet-timestamp-mit-c-generieren-s1963.aspx]]></guid>
     <pubDate>Tue, 20 May 2008 11:40:00 GMT</pubDate>
     <description><![CDATA[Einen vergleichsweise eindeutigen Timestamp bekommt man so hin:]]></description>
     <link><![CDATA[http://www.snippetcenter.org/en/snippet-timestamp-mit-c-generieren-s1963.aspx]]></link>
</item>

<item>
     <title><![CDATA[Snippet: Dateien aus FileInfo[] nach Erstellungsdatum absteigend sortieren]]></title>
     <guid><![CDATA[http://www.snippetcenter.org/en/snippet-dateien-aus-fileinfo[]-nach-erstellungsdatum-absteigend-sortieren-s1962.aspx]]></guid>
     <pubDate>Tue, 20 May 2008 11:39:00 GMT</pubDate>
     <description><![CDATA[Mit .NET sind viel Tasks ja ein Kinderspiel geworden, z.B. auch das Darstellen von Dateien in einem Ordner, z.B. in einer Tabelle im Browser. Sinnigerweise will man die Dateien nach bestimmten Kriterien sortieren, in meinem Fall einfach nach Erstelldatum absteigend, damit immer die neueste Datei oben steht. Das ist auch kein großes Problem, der Array.Sort()-Methode sei dank.]]></description>
     <link><![CDATA[http://www.snippetcenter.org/en/snippet-dateien-aus-fileinfo[]-nach-erstellungsdatum-absteigend-sortieren-s1962.aspx]]></link>
</item>

<item>
     <title><![CDATA[Relative Links in absolute Links umwandeln]]></title>
     <guid><![CDATA[http://www.snippetcenter.org/en/relative-links-in-absolute-links-umwandeln-s1957.aspx]]></guid>
     <pubDate>Sun, 02 Dec 2007 22:39:00 GMT</pubDate>
     <description><![CDATA[Es gibt Fälle, in denen man keine relativen Links setzen sollte - zum Beispiel wenn man Inhalte einer Website, die sonst in HTML gerendert werden, als RSS-Feed bereit stellt.

Wenn man keine direkte Möglichkeit der Einflussnahme auf den generierten HTML-Code hat, kann man sich mit folgendem Snippet behelfen und das Ganze automatisiert regeln:]]></description>
     <link><![CDATA[http://www.snippetcenter.org/en/relative-links-in-absolute-links-umwandeln-s1957.aspx]]></link>
</item>

<item>
     <title><![CDATA[DataList rendert SeparatorTermplate falsch]]></title>
     <guid><![CDATA[http://www.snippetcenter.org/en/datalist-rendert-separatortermplate-falsch-s1956.aspx]]></guid>
     <pubDate>Sun, 02 Dec 2007 22:38:00 GMT</pubDate>
     <description><![CDATA[Das DataList-Control rendert (getestet in ASP.NET 2.0) das Separator-Template falsch. Und zwar falsch in dem Sinne, dass es schlicht "Umbrüche" ignoriert, wenn man als Layout table verwendet.

Beispiel:

Man möchte in einer Tabelle vier Spalten haben, getrennt durch eine Platzhalter-Spalte, die man via SeparatorTemplate definiert. Dazu sollte es genügen die nötigen Templates anzulegen und RepeatColumns auf 4 zu setzen. Im Ergebnis müssten jetzt also 7 Spalten gerendert werden - 4 Content-Spalten und 3 Platzhalter-Spalten:

Content | Content | Content | Content

Das DataList-Control rendert allerdings 8 Spalten - weil es den Umbruch nach dem 4. Item ignoriert.

Content | Content | Content | Content |

Beim Float-Layout wäre das in Ordnung, nicht aber beim Table-Layout. Behelfen kann man sich durch eine Methode, die das überflüssige Item einfach wieder entfernt:]]></description>
     <link><![CDATA[http://www.snippetcenter.org/en/datalist-rendert-separatortermplate-falsch-s1956.aspx]]></link>
</item>

<item>
     <title><![CDATA[Text einrücken]]></title>
     <guid><![CDATA[http://www.snippetcenter.org/en/text-einruecken-s1955.aspx]]></guid>
     <pubDate>Sun, 02 Dec 2007 22:36:00 GMT</pubDate>
     <description><![CDATA[Nachfolgend eine schnell getippte Methode, die sich einen Text nimmt und diesen einrückt - wie man es etwa aus Mailclients gewohnt ist. Perfekt bis ins letzte Detail ist es noch nicht, aber ich habe mit Outlook verglichen - da kann sie sich dem Wettbewerb getrost stellen, denn Outlook versagt ab einem gewissen Level ebenfalls ;-).]]></description>
     <link><![CDATA[http://www.snippetcenter.org/en/text-einruecken-s1955.aspx]]></link>
</item>



</channel>
</rss>
