<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" version="2.0"><channel><title>DotNetNuke Blogs On DNN, For DNN</title><link>http://www.dotnetnukeblogs.com</link><description>RSS Feed for DotNetNuke Blogs On DNN, For DNN</description><ttl>120</ttl><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/DotnetnukeBlogsGerman" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="dotnetnukeblogsgerman" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><title>Grafik Platzhalter für Layout Demos ganz einfach</title><link>http://www.dotnetnukeblogs.com/Home/Articles/itemId/33761/Grafik-Platzhalter-fr-Layout-Demos-ganz-einfach</link><description>&lt;p&gt;Üblicherweise verwendet man für den Entwurf von Screen Layouts Platzhalter um zu demonstrieren wie der Bildschirm im fertigen Design aussieht. Der übliche 'Lorem Ipsum' und eine einfache Grafik die dann auf die notwendige Größe skaliert wird kommen hier dann zum Einsatz.&lt;/p&gt;&lt;a href=http://www.eagleworx.net/Home/tabid/167/EntryId/169/Grafik-Platzhalter-fur-Layout-Demos-ganz-einfach.aspx&gt;More...&lt;/a&gt;</description><thumbnail /><dc:creator>Eagleworx DNN Tips and Tricks</dc:creator><pubDate>Wed, 25 Jan 2012 09:49:00 GMT</pubDate><guid isPermaLink="false">5f5ef354-0694-4029-ab1b-3a9152219aeb</guid></item><item><title>DotNetNuke speichern von Zugangsdaten der Benutzer</title><link>http://www.dotnetnukeblogs.com/Home/Articles/itemId/33687/DotNetNuke-speichern-von-Zugangsdaten-der-Benutzer</link><description>DotNetNuke bietet drei Möglichkeiten die Passwörter von Benutzern zu speichern. Diese können im Klartext, als verschlüsselte Zeichenfolge oder als Hashwert in der Datenbank gespeichert werden. Das die erste Variante höchtens für Test- und Entwicklungsinstallationen in Frage kommt, muss wohl nicht weiter diskutiert werden. Konfiguiert wird die Behandlung von Passwörtern in der web.config direkt bei den Einstellungen des MembershipProvider:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;&lt;add
name=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"AspNetSqlMembershipProvider"&lt;/span&gt; type=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"System.Web.Security.SqlMembershipProvider"&lt;/span&gt; connectionStringName=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"SiteSqlServer"&lt;/span&gt; enablePasswordRetrieval=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"true"&lt;/span&gt; enablePasswordReset=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"true"&lt;/span&gt; requiresQuestionAndAnswer=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"false"&lt;/span&gt; minRequiredPasswordLength=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"7"&lt;/span&gt; minRequiredNonalphanumericCharacters=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"0"&lt;/span&gt; requiresUniqueEmail=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"false"&lt;/span&gt; passwordFormat=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"Encrypted"&lt;/span&gt; applicationName=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"DotNetNuke"&lt;/span&gt; /&gt; &lt;/span&gt;
&lt;br /&gt;
&lt;/pre&gt;Worin besteht aber der genau Unterschied zwischen veschlüsselt und hashed?&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Verschlüsselte Zeichenfolgen
&lt;/h3&gt;
Bei diesem Modus werden die Passwörter durch einen Verschlüsselungsalgorithmus unleserlich
gemacht, so das bei einem Auslesen der Tabelle, die Passwörter nicht im Klartext zur
Verfügung stehen. DotNetNuke bzw. jedes DNN-Module ist in der Lage die Passwörter
ohne Probleme zu lesen. 
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Hashwerte 
&lt;/h3&gt;
Wenn man als Modus "Hashed" wählt, dann wird nur ein Hashwert vom Passwort abgespeichert
und nicht das eigentliche Passwort. Aus dem Hashwert kann man das Passwort nicht mehr
in Klartext umwandeln und somit hat auch kein Module mehr Zugriff auf die Passwörter.
Das bedeutet aber auch, dass die "Passwort zusenden"-Funktion nicht mehr das Passwort
dem Benutzer zur Verfügung stellen kann. Ob das eine Anwendung überhaupt machen sollte
ist eine ganz andere Diskussion. Die Funktion "Passwort vergessen" funktioniert aber
natürlich trotzdem, in diesem Modus wird von DotNetNuke einfach ein neues Zufallspasswort
erzeugt.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Welche Variante
&lt;/h3&gt;
Es gibt keine klare Empfehlung für eine der verfügbaren Methode. Für die Auswahl sollten
im Vorfeld Überlegungen angestellt werden, ob man das Passwort wirklich jemals im
Klartext benötigt. Aus der Perspektive eines Datenschützers wäre eigentlich nur die
Möglichkeit "als Hashwert" akzeptable. 
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=230d5553-c68a-43d6-8e44-ac3d926890c9" /&gt;</description><thumbnail /><dc:creator>.NET - Software &amp; DotNetNuke (DNN) Blog</dc:creator><pubDate>Tue, 22 Nov 2011 17:29:45 GMT</pubDate><guid isPermaLink="false">dd5a55ce-f516-4473-8a11-93b5c4e883f9</guid></item><item><title>DotNetNuke Performance Optimierung</title><link>http://www.dotnetnukeblogs.com/Home/Articles/itemId/33666/DotNetNuke-Performance-Optimierung</link><description>Die Performance einer Webseite ist heute aus vielen Gründen - die hier nicht weiter aufgeführt werden müssen - wichtig. DotNetNuke selber bietet eine Vielzahl von Einstellungen, die direkten Einfluss auf die Performance der Webseite haben können. Es gibt auf Codeplex ein Projekt, dass durch ein paar SQL Scripts die Einstellungen einer DotNetNuke Installation so modifiziert, das eine maximale Performance möglich ist. &lt;br /&gt;
&lt;br /&gt;
Natürlich muss man im Einzelfall über manche Einstellung extra entscheiden aber als
Startpunkt für eine Optimierung finde ich das sehr gelungen.&lt;br /&gt;
&lt;br /&gt;
Das Projekt findet man unter &lt;a href="http://dnnperformance.codeplex.com" target="_blank"&gt;http://dnnperformance.codeplex.com&lt;/a&gt;
&lt;br /&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=a133ddb3-bba9-4dc0-9e5a-f565477e9739" /&gt;</description><thumbnail /><dc:creator>.NET - Software &amp; DotNetNuke (DNN) Blog</dc:creator><pubDate>Thu, 17 Nov 2011 11:11:25 GMT</pubDate><guid isPermaLink="false">8e7f94e7-3e77-4627-95e8-a9214bf7d54d</guid></item><item><title>Die web.config bei der Installation eines Modules verändern</title><link>http://www.dotnetnukeblogs.com/Home/Articles/itemId/33623/Die-webconfig-bei-der-Installation-eines-Modules</link><description>Je nach Modul gibt es schon mal die Anforderung, dass neue Einträge in die web.config geschrieben werden müssen. Dieses kann man entweder im SourceCode erledigen oder aber die Änderungen in dem DNN Modul Manifest / Definitionsdatei (meinmodule.dnn) definieren. Verfügbar ist das ab der Version 5 von DotNetNuke. Um das zu nutzen, muss man in der Manifest-Datei folgendes hinzufügen:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;&lt;component
type=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"Config"&lt;/span&gt;&gt;
&lt;config&gt; &lt;configFile&gt;web.config&lt;/configFile&gt; &lt;install&gt; &lt;configuration&gt;
&lt;nodes&gt;             .....
&lt;/nodes&gt; &lt;/configuration&gt; &lt;/install&gt; &lt;uninstall&gt; &lt;configuration&gt;
&lt;nodes /&gt; &lt;/configuration&gt; &lt;/uninstall&gt; &lt;/config&gt; &lt;/component&gt;&lt;/span&gt;&lt;/pre&gt;Wie
man sieht gibt es zwei Bereiche. Der Bereich &lt;install&gt; wird während der Installation
und der Bereich &lt;uninstall&gt; wird be der Deinstallation von dem DNN Modul ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Innerhalb des Tags &lt;nodes&gt; können dann die entsprechenden Einträge hinzugefügt
werden. Hier ein Beispiel womit ein HttpHandler hinzugefügt wird:&lt;br /&gt;
&lt;pre&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;&lt;node
path=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"/configuration/system.web/httpHandlers"&lt;/span&gt; action=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"update"&lt;/span&gt; 
&lt;br /&gt;
key=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"path"&lt;/span&gt; collision=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"overwrite"&lt;/span&gt;&gt;
&lt;add verb=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"*"&lt;/span&gt; path=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"myhandler.axd"&lt;/span&gt; validate=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"false"&lt;/span&gt; 
&lt;br /&gt;
type=&lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;DNN.Module.Shop.MyHandler&lt;/span&gt;&lt;/span&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;,
DNN.Module.Shop"&lt;/span&gt; /&gt; &lt;/node&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
Weiter Informationen findet man im Wiki auf &lt;a href="http://www.dotnetnuke.com/Resources/Wiki/Page/Manifest-Component-Installers-The-Config-Component.aspx" target="_blank"&gt;www.dotnetnuke.com&lt;/a&gt;
&lt;br /&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=b859ac36-66d3-4f53-9982-95ed0802d89f" /&gt;</description><thumbnail /><dc:creator>.NET - Software &amp; DotNetNuke (DNN) Blog</dc:creator><pubDate>Thu, 27 Oct 2011 17:04:00 GMT</pubDate><guid isPermaLink="false">0789070e-9207-4aee-8dae-4077deb618c0</guid></item><item><title>Conditional Stylesheets oder CSS hacks</title><link>http://www.dotnetnukeblogs.com/Home/Articles/itemId/33606/Conditional-Stylesheets-oder-CSS-hacks</link><description>Jeder der sich schon mal mit dem Thema Webdesign beschäftigt hat, kennt die Probleme der unterschiedlichen Browser. Besonders der Internet Explorer ist ein Kandidat, bei dem man sehr schnell graue Haare bekommt kann. &lt;br /&gt;
&lt;br /&gt;
Meistens werden Hacks verwendet, die nur von bestimmten Versionen / Browsern erkannt
bzw. akzeptiert werden und von den anderen als Fehler ignoriert. 
&lt;br /&gt;
&lt;br /&gt;
Das Problem von solchen Hacks ist unter anderem dafür sorgen das eine CSS nicht mehr
validiert werden kann. Um dieses Problem zu umgehen verwenden viele Conditional Stylesheets,
die dann vom jeweiligen Browser erkannt und geladen werden. Das sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;&lt;&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;link&lt;/span&gt; rel=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"stylesheet"&lt;/span&gt; type=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"text/css"&lt;/span&gt; media=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"screen"&lt;/span&gt; href=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"skin/css/style.css"&lt;/span&gt; /&gt;
&lt;!--[&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;if&lt;/span&gt; IE
7]&gt;&lt;&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;link&lt;/span&gt; rel=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"stylesheet"&lt;/span&gt; type=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"text/css"&lt;/span&gt; media=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"screen"&lt;/span&gt; href=&lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;skin/&lt;/span&gt;&lt;/span&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;css/ie7.css"&lt;/span&gt; /&gt;&lt;
![endif]--&gt; &lt;!--[&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;if&lt;/span&gt; IE
6]&gt;&lt;&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;link&lt;/span&gt; rel=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"stylesheet"&lt;/span&gt; type=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"text/css"&lt;/span&gt; media=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"screen"&lt;/span&gt; href=&lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;skin/&lt;/span&gt;&lt;/span&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;css/ie6.css"&lt;/span&gt; /&gt;&lt;
![endif]--&gt;&lt;/span&gt;&lt;/pre&gt;Nun kann man für die verschiedenen Browser(versionen) die
entsprecheden CSS-Definitionen sauber überschreiben. Ist doch super oder?&lt;br /&gt;
&lt;br /&gt;
Diese Variante ist schon deutlich besser als die Verwendung von Hacks im eigentlichen
CSS aber hat den großen Nachteil das noch mehr Dateien vom Server geladen werden müssen. 
&lt;br /&gt;
&lt;br /&gt;
Eine deutlich besser Lösung sieht so aus:&lt;br /&gt;
&lt;pre&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;&lt;/span&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;&lt;/span&gt;&lt;pre&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;&lt;!--[&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;if&lt;/span&gt; lt
IE 7 ]&gt; &lt;html class=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"ie6"&lt;/span&gt;&gt;
&lt;![endif]--&gt; &lt;!--[&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;if&lt;/span&gt; IE
7 ]&gt; &lt;html class=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"ie7"&lt;/span&gt;&gt;
&lt;![endif]--&gt; &lt;!--[&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;if&lt;/span&gt; IE
8 ]&gt; &lt;html class=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"ie8"&lt;/span&gt;&gt;
&lt;![endif]--&gt; &lt;!--[&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;if&lt;/span&gt; IE
9 ]&gt; &lt;html class=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"ie9"&lt;/span&gt;&gt;
&lt;![endif]--&gt; &lt;!--[&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;if&lt;/span&gt; (gt
IE 9)&lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;|&lt;/span&gt;!(IE)]&gt;&lt;!--&gt;
&lt;html class=&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;""&lt;/span&gt;&gt;
&lt;!--&lt;![endif]--&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;Hier wird nun in Abhängigkeit von der
Browserversion das Tag HTML mit einer CSS-Klasse versehen und man kann nun ganz sauber
und ohne Hacks für die div. Versionen CSS-Definitionen erstellen, dass dann z.B. so
aussieht::&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt; 
&lt;br /&gt;
&lt;br /&gt;
div.contentpane { width: 510px; } 
&lt;br /&gt;
.ie6 div.contentpane { width: 500px; }&lt;/span&gt;
&lt;br /&gt;
&lt;br /&gt;
Diese Technik wird z.B. auch vom bekannten &lt;a href="http://html5boilerplate.com/" target="_blank"&gt;http://html5boilerplate.com/&lt;/a&gt; verwendet.&lt;br /&gt;
&lt;img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=6439022a-3bdd-4260-9ec7-1b8f566eb9ee" /&gt;</description><thumbnail /><dc:creator>.NET - Software &amp; DotNetNuke (DNN) Blog</dc:creator><pubDate>Wed, 19 Oct 2011 13:43:52 GMT</pubDate><guid isPermaLink="false">a12f0105-cc63-4539-b652-bd8bc903851e</guid></item><item><title>Benötigen auch Kleinunternehmer oder Mittelständler Richtlinien für den Umgang mit Social Media?</title><link>http://www.dotnetnukeblogs.com/Home/Articles/itemId/33530/Bentigen-auch-Kleinunternehmer-oder-Mittelstndle</link><description>&lt;p&gt;Mittlerweile bewegen sich bereits viele Kleinunternehmen und  Mittelständler auch innerhalb der Sozialen Netzwerke. Üblicherweise  erfolgt dies ohne eine klare Richtschnur an der sich Mitarbeiter  orientieren können wie sie in geeigneter Form auch im jeweiligen  Unternehmensinteresse dort agieren sollen. Hier empfiehlt es sich den  Mitarbeitern einen kleinen ‘Ratgeber’ an die Hand zu geben um auch in  den sozialen Netzwerken als Unternehmen einen möglichst Professionellen  Eindruck zu hinterlassen. Nachfolgend eine Zusammenstellung der meiner  Meinung nach wichtigsten Dinge die Mitarbeiter beachten sollten wenn  diese sich in einem Unternehmenskontext auf den jeweiligen Plattformen  bewegen.&lt;/p&gt;&lt;a href=http://www.eagleworx.net/Home/tabid/167/EntryId/164/Ben-ouml-tigen-auch-Kleinunternehmer-oder-Mittelst-auml-ndler-Richtlinien-f-uuml-r-den-Umgang-mit-Social-Media.aspx&gt;More...&lt;/a&gt;</description><thumbnail /><dc:creator>Eagleworx DNN Tips and Tricks</dc:creator><pubDate>Tue, 06 Sep 2011 09:01:22 GMT</pubDate><guid isPermaLink="false">d93dc0d0-dbb3-46df-9e03-26fe4febe6eb</guid></item><item><title>DotNetNuke 6.0.1 Datenmodell</title><link>http://www.dotnetnukeblogs.com/Home/Articles/itemId/33507/DotNetNuke-601-Datenmodell</link><description>&lt;p&gt;Pünktlich zum neuen Release der &lt;a target="_blank" href="http://dotnetnuke.codeplex.com/releases/view/71896#DownloadId=270970"&gt;Version 6.0.1 von DotNetNuke&lt;/a&gt; gibt es auch schon das entsprechende Datenmodell zum Download&lt;/p&gt;&lt;a href=http://www.eagleworx.net/DotNetNuke/tabid/493/EntryId/162/DotNetNuke-6-0-1-Datenmodell.aspx&gt;More...&lt;/a&gt;</description><thumbnail /><dc:creator>Eagleworx DNN Tips and Tricks</dc:creator><pubDate>Thu, 25 Aug 2011 07:52:00 GMT</pubDate><guid isPermaLink="false">bee13149-172b-4382-a72c-a948f4e3e3ad</guid></item><item><title>URI schema constant</title><link>http://www.dotnetnukeblogs.com/Home/Articles/itemId/33491/URI-schema-constant</link><description>Immer wiedermal muss man in seinem Code überprüfen welches Schema die URI (URL) besitzt. Daher sieht man oft solche Codezeilen:&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;&lt;pre&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;if&lt;/span&gt; (httpRequest.Uri.Scheme
== &lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"https"&lt;/span&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;&lt;/span&gt;&lt;/span&gt;Ich
bin absolut kein Freund von solchen Abfragen, die auf einen String-Wert vergleichen,
den man selber schreiben muss. Das ist einfach viel zu Fehleranfällig und verleitet
auch durch Copy &amp; Paste und zu schnelles Tippen einfach Fehler zu machen... die
Abfrage ist ja auch wirklich zu einfach um länger drüber nachzudenken.&lt;br /&gt;
&lt;br /&gt;
Dabei kann man sich das Leben auch einfacher machen und zumindest in meinen Augen
auch den Code richtig schreiben durch die Verwendung einer Konstanten aus dem .NET
Framework. Die Klasse URI besitzt nämlich schon bereits diese Konstanten!&lt;br /&gt;
&lt;br /&gt;
Der Code von oben sieht dann plötzlich wie folgt aus:&lt;br /&gt;
&lt;pre&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;if&lt;/span&gt; (httpRequest.Uri.Scheme
== Uri.UriSchemeHttps)&lt;/span&gt;&lt;/pre&gt;Hier einen Auszug der vordefinierten Werte:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;b&gt;UriSchemeFtp&lt;/b&gt;: URI für  FTP (File Transfer Protocol).&lt;/li&gt;
&lt;li&gt;
&lt;b&gt;UriSchemeHttp&lt;/b&gt;: URI für HTTP (Hypertext Transfer Protocol) &lt;/li&gt;
&lt;li&gt;
&lt;b&gt;UriSchemeHttps&lt;/b&gt;: URI für HTTPS (Secure Hypertext Transfer Protocol).&lt;/li&gt;
&lt;li&gt;
&lt;b&gt;UriSchemeMailto&lt;/b&gt;: Gibt an, dass der URI eine E-Mail-Adresse ist und der Zugriff
über SMTP (Simple Mail Transport Protocol) erfolgt.&lt;/li&gt;
&lt;li&gt;
&lt;b&gt;UriSchemeNetPipe&lt;/b&gt;: Gibt an, dass auf den URI über das von Windows Communication
Foundation (WCF) verwendete NetPipe-Schema zugegriffen wird.&lt;/li&gt;
&lt;li&gt;
&lt;b&gt;UriSchemeNetTcp&lt;/b&gt;: Gibt an, dass auf den URI über das von Windows Communication
Foundation (WCF) verwendete NetTcp-Schema zugegriffen wird.&lt;/li&gt;
&lt;li&gt;
&lt;b&gt;UriSchemeNntp&lt;/b&gt;: URI für eine Internetnewsgroup, auf die über NNTP (Network News
Transport Protocol) zugegriffen wird&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/system.uri_fields.aspx" target="_blank"&gt;Details
gibt es hier&lt;/a&gt;.&lt;br /&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=1772d4b1-8a8c-4e30-b17b-f67d0d65c407" /&gt;</description><thumbnail>http://www.dotnetnukeblogs.com/Portals/5/-1</thumbnail><dc:creator>.NET - Software &amp; DotNetNuke (DNN) Blog</dc:creator><pubDate>Thu, 04 Aug 2011 08:38:59 GMT</pubDate><guid isPermaLink="false">7c5820c3-4342-46aa-90a8-607af058bf6e</guid></item><item><title>Schnelles anlegen einer Seitenstruktur in DotNetNuke 6</title><link>http://www.dotnetnukeblogs.com/Home/Articles/itemId/33487/Schnelles-anlegen-einer-Seitenstruktur-in-DotNetNu</link><description>&lt;p&gt;Stehen Sie auch häufig vor der Aufgabe viele von Seiten innerhalb eines DNN Portals möglichst Zeitsparend anlegen zu müssen?    &lt;br /&gt;
Seit DotNetNuke Version 6.x gibt es hierzu einen extrem einfachen und zeitsparenden Weg.&lt;/p&gt;&lt;a href=http://www.eagleworx.net/DotNetNuke/tabid/493/EntryId/161/Schnelles-anlegen-einer-Seitenstruktur-in-DotNetNuke-6.aspx&gt;More...&lt;/a&gt;</description><thumbnail /><dc:creator>Eagleworx DNN Tips and Tricks</dc:creator><pubDate>Tue, 02 Aug 2011 11:57:00 GMT</pubDate><guid isPermaLink="false">fbf6da12-c07d-4bea-a544-8c4b4cc48ac4</guid></item><item><title>ASP 0131 Unzulaessiger Pfad zum uebergeordneten Verzeichnis</title><link>http://www.dotnetnukeblogs.com/Home/Articles/itemId/33481/ASP-0131-Unzulaessiger-Pfad-zum-uebergeordneten-Ve</link><description>Bei dem Versuch eine alte ASP (classic asp) Anwendung auf einem Windows 2008 R2 System und damit auf einem IIS 7.5 funktionsfähig zu bekommen bestand das Problem das die Seite immer nur einen HTTP Errorcode 500 zurück gibt. Einen Blick in die Logs von IIS ergab die Fehlermeldung:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;"|23|ASP_0131|Unzulässiger_Pfad_zum_übergeordneten_Verzeichnis"&lt;/b&gt;
&lt;br /&gt;
&lt;br /&gt;
Ursache dieses Problems ist das Standardmäßig der übergeordneten ASP-Pfade für eine
Website oder Anwendung bei gleichzeitiger Verwendung relativer übergeordneter Pfade
in einer Include-Anweisung nicht erlaubt / deaktiviert ist. 
&lt;br /&gt;
&lt;br /&gt;
Empfohl ist die Einbindungen von 
&lt;br /&gt;
&lt;br /&gt;
&lt;!--#include file="../dbconn.inc"--&gt;&lt;br /&gt;
&lt;br /&gt;
auf&lt;br /&gt;
&lt;br /&gt;
&lt;!--#include virtual="/&lt;virtual path&gt;/dbconn.inc"--&gt;&lt;br /&gt;
&lt;br /&gt;
zu verändern. 
&lt;br /&gt;
&lt;br /&gt;
Alternativ kann man aber auch den Internet Information Server so einstellen, dass
die übergeordneten ASP-Pfade erlaubt sind.&lt;br /&gt;
&lt;br /&gt;
Dafür muss man beim IIS auf das entsprechende Web klicken und in der rechten Seite
unter ASP die Konfiguration öffnen. Dort gibt es dann die Option "&lt;b&gt;Übergeordnete
Pfade aktivieren&lt;/b&gt;" der Wert muss von &lt;b&gt;False &lt;/b&gt;auf &lt;b&gt;True &lt;/b&gt;umgestellt werden.&lt;br /&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=704d5790-d647-43e8-97b2-6f55d74ab4dc" /&gt;</description><thumbnail>http://www.dotnetnukeblogs.com/Portals/5/-1</thumbnail><dc:creator>.NET - Software &amp; DotNetNuke (DNN) Blog</dc:creator><pubDate>Sun, 31 Jul 2011 12:12:56 GMT</pubDate><guid isPermaLink="false">1ef67abf-3d00-4bc8-bd46-93d0c2fa972d</guid></item><item><title>Ist Geschwindigkeit bald keine Hexerei mehr?</title><link>http://www.dotnetnukeblogs.com/Home/Articles/itemId/33486/Ist-Geschwindigkeit-bald-keine-Hexerei-mehr</link><description>&lt;p&gt;Wer immer schon vermutet hatte, dass auch die Geschwindigkeit einer Web-Seite einen Einfluss auf das Ranking innerhalb von Suchmaschinen hat, wird nun wohl indirekt bestätigt.&lt;br /&gt;
Google kündigt in seinem &lt;a href="http://googlewebmastercentral.blogspot.com/2011/07/page-speed-service-web-performance.html" target="_blank"&gt;Web-Master Blog&lt;/a&gt; an, zukünftig einen ‘Beschleunigungsservice’ für Web-Seiten anbieten zu wollen, und hat die Testphase eröffnet.&lt;br /&gt;
&lt;br /&gt;
Prinzipiell ist es natürlich immer eine gute Idee, die eigenen Web-Seiten schneller an den Anwender ausliefern zu können, allerdings sollte man sich die Frage stellen, ob man es wirklich riskieren sollte sich darauf zu verlassen, was ein externer Anbieter so alles mit dem eigenen Code anstellt, den man ihm liefert. Laut Blog werden wohl verschiedenste Aktionen durchgeführt (Konsolidierung der CSS Dateien, Bildkompression, Caching, Zip-Kompression). Ob das immer mit dem zu erzielenden Ergebnis vereinbar ist, muss sich wohl im Praxistest zeigen.&lt;br /&gt;
&lt;br /&gt;
Wenn man es bevorzugt, selbst die Kontrolle über derartige Prozesse zu behalten, sollte über den Einsatz eines eigenen &lt;a href="http://www.webbooster.de/"&gt;Kompressionsmechanismus respektive einer entsprechenden Appliance&lt;/a&gt; nachgedacht werden. Insbesondere größere Installationen können so besser gesteuert werden als dies bei externen Services möglich wäre.&lt;br /&gt;
Preise für den von Google bereitgestellten Service sind noch nicht bekannt und sollen im Laufe des Jahres bekannt gegeben werden. Vermutlich will man zunächst abwarten, wie groß die Resonanz auf das Angebot sein wird.&lt;/p&gt;
&lt;p&gt;Lektorat by VMH&lt;script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"&gt;&lt;/script&gt;&lt;/p&gt;</description><thumbnail /><dc:creator>Eagleworx DNN Tips and Tricks</dc:creator><pubDate>Fri, 29 Jul 2011 08:43:00 GMT</pubDate><guid isPermaLink="false">4a694efe-65e7-4013-8f28-11ec1e92bab6</guid></item><item><title>Tips für ein einfaches Upgrade von DNN 4.x auf DNN 5.6.3</title><link>http://www.dotnetnukeblogs.com/Home/Articles/itemId/33485/Tips-fr-ein-einfaches-Upgrade-von-DNN-4x-auf-DNN</link><description>&lt;p&gt;Nachfolgend ein paar Tips die man befolgen sollte um ein möglichst nahtloses Upgrade durchführen zu können&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Backup, backup, backup:  &lt;br /&gt;Wie üblich gilt auch hier, “alles das schiefgehen kann, wird auch schiefgehen”.       &lt;br /&gt;Somit sollte auch hier zunächst ein komplettes Backup des Portals erfolgen bevor der Upgrade-Prozess gestartet wird.       &lt;br /&gt;Führen Sie das Upgrade nach Möglichkeit an einer Kopie des Portals durch. Das erlaubt es Ihnen möglicherweise notwendige Änderungen wie der Ersatz von Modulen oder Änderungen am Menüprovider durchzuführen ohne das Ihr Produktives Portal in Mitleidenschaft gezogen wird. &lt;/li&gt;    &lt;li&gt;Upgrade auf Version 4.9.4: Sollte Ihr Portal nicht bereits in der Version 4.9.5 laufen führen Sie bitte zunächst ein Upgrade zu dieser Version durch. Sollte bereits dieses Upgrade Probleme verursachen dann werden Sie mit Sicherheit auch Probleme beim Upgrade auf die Version 5.6.3 haben. Somit ist ein sauberes Upgrade auf 4.9.5 unabdingbare Voraussetzung. &lt;/li&gt;    &lt;li&gt;Deinstallieren Sie alle ‘nicht Core’ Module welche in Ihrem Portal nicht verwendet werden. Dies minimiert ganz einfach mögliche Konflikte die auf Kompatibilitätsproblemen von Modulen beruhen könnten. In Version 4.x gibt es keine einfache Möglichkeit unbenutzte Module in Ihrem Portal zu identifizieren. Pete Saunders von &lt;a href="http://www.cfwebmasters.com/" target="_blank"&gt;CFWebmasters&lt;/a&gt; hat ein SQL Skript entwickelt welches diese Aufgabe übernehmen kann. Das Skript generiert eine Liste von Modulen welche derzeit nicht verwendet werden. Die generierte Liste wird auch einige Core Module enthalten die zwar installiert sind, aber von Ihnen nicht verwendet werden. In dem nachstehenden Skript werden einige bereits ‘ausgeblendet’. Sie können diese Liste selbst einfach erweitern.       &lt;br /&gt;select distinct dm.[FriendlyName],dm.[DesktopModuleID]  &lt;br /&gt;from [ModuleDefinitions] md  &lt;br /&gt;INNER JOIN [DesktopModules] dm ON dm.[DesktopModuleID] =  &lt;br /&gt;md.[DesktopModuleID] WHERE md.[moduledefid]  &lt;br /&gt;/* exclude core modules */  &lt;br /&gt;NOT IN (SELECT [ModuleDefID] FROM [Modules] WHERE [isDeleted] = 0)  &lt;br /&gt;AND (dm.[FriendlyName] &lt;&gt; 'Help'  &lt;br /&gt;AND dm.[FriendlyName]&lt;&gt; 'Account Login'   &lt;br /&gt;AND dm.[FriendlyName] &lt;&gt; 'Search Input'  &lt;br /&gt;AND dm.[FriendlyName] &lt;&gt; 'User Account'  &lt;br /&gt;AND dm.[FriendlyName] &lt;&gt; 'UsersOnline')  &lt;br /&gt;ORDER BY dm.[FriendlyName]       &lt;br /&gt;Besondere Beachtung erfordert in jedem Fall das XML/XSL Modul. Dieses Modul muss zwingend auf die aktuellste Version upgegradet werden VOR einem Upgrade des Portals auf 5.6.3.       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Prüfen und gegebenen falls Upgraden von Fremdherstellermoulen (soweit möglich) &lt;/li&gt;    &lt;li&gt;Führen Sie nochmals zur Sicherheit ein Backup durch. Das Upgrade auf 5.6.3 steht kurz bevor, und falls doch noch etwas schiefgeht müssen sie die vorherigen Schritte nicht noch einmal durchführen, sondern können einfach Ihre Sicherung zurückspielen. &lt;/li&gt;    &lt;li&gt;Nun kommt das Upgrade auf die Version 5.6.3 . Durch die vorgenannten Schritte können Sie alle zwischenschritte beim Upgrade über die Version 5.x einsparen. Die Upgrade Skripte der Version 5.6.3 machen sauber alle Updates in der Datenbank. &lt;/li&gt;    &lt;li&gt;Aufräumen: nachdem das Upgrade durchgeführt wurde könnte es durchaus möglich sein das einige Nacharbeiten an den verwendeten Skins erforderlich werden. Es haben in der Zwischenzeit erhebliche Änderungen zwischen der 4.x und 5.x stattgefunden, so das hier möglicherweise Menü-Probleme oder verschobene Layouts auftreten könnten. Dies ist im übrigen der Hauptgrund warum Sie das Upgrade auf einer Kopie durchführen sollten. Dies gibt Ihnen die Gelegenheit alle aufgetretenen Fehler im Layout zu korrigieren ohne das Ihre Produktive Seite beeinflusst wird. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Nachdem Sie diese Probleme ausgeräumt haben ersetzen Sie Ihre ‘alte’ 4.x Seite mit der neuen 5.6.3…und bereiten sich schon einmal auf einen Wechsel zur Version 6.x vor!&lt;/p&gt;  &lt;p&gt;Dies ist eine freie Übersetzung eines Blog-Posts von &lt;a href="http://www.dotnetnukefool.com/Blog/EntryId/38/Upgrading-from-DotNetNuke-4-x-to-5-6-3-smoothly.aspx" target="_blank"&gt;Robb Brynn&lt;/a&gt;&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px; padding:0px 0px 0px 0px;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt; tweetmeme_source = 'eagleworx'; tweetmeme_hashtags = '#DNN,#DotNetNuke';&lt;/script&gt; &lt;script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"&gt;&lt;/script&gt;&lt;/div&gt;</description><thumbnail /><dc:creator>Eagleworx DNN Tips and Tricks</dc:creator><pubDate>Fri, 08 Jul 2011 08:05:04 GMT</pubDate><guid isPermaLink="false">7473c0f5-d871-41af-adf8-1a6c44d1ba67</guid></item><item><title>Microsoft SQL Server Error: 15138 drop user account</title><link>http://www.dotnetnukeblogs.com/Home/Articles/itemId/33374/Microsoft-SQL-Server-Error-15138-drop-user-accoun</link><description>Gerade habe ich eine ältere Sicherung in den Mircosoft SQL Express 2008 eingespielt. Dabei wollte ich ein wenig aufräumen und die nicht benötigten Benutzerkonten löschen. Jedoch habe ich bei dem Versuch immer die Fehlermeldung&lt;br /&gt;
&lt;br /&gt;
"The database principal owns a schema in the database, and cannot be dropped. (Microsoft
SQL Server, Error: 15138)." 
&lt;br /&gt;
&lt;br /&gt;
bekommen. Die Lösung für dieses Problem ist recht einfach: Wenn für den Benutzeraccount
ein Schema angelegt wurde, muss zunächst das Schema aus der SQL Server Datenbank entfernt
werden. Um zu überprüfen, ob es ein Schema für den Benutzer gibt, kann man mit dem
SQL Server Manager bei der entsprechenden Datenbank unter Sicherheit =&gt; Schema
nachschauen. Wenn kein Schema mehr von diesem Benutzer existiert, lässt sich auch
das Benutzerkonto ohne Fehlermeldung löschen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=9527c34c-4d61-4c04-8f6d-3093fe9471c8" /&gt;</description><thumbnail>http://www.dotnetnukeblogs.com/Portals/5/-1</thumbnail><dc:creator>.NET - Software &amp; DotNetNuke (DNN) Blog</dc:creator><pubDate>Wed, 22 Jun 2011 22:16:40 GMT</pubDate><guid isPermaLink="false">c903cf59-b936-4463-9783-2b7aa0c2b866</guid></item><item><title>ICANN hat den Vorschlag der finalen Fassung des Draft Applicant Guidebooks zur Registrierung neuer gTLDs veröffentlicht</title><link>http://www.dotnetnukeblogs.com/Home/Articles/itemId/33484/ICANN-hat-den-Vorschlag-der-finalen-Fassung-des-Dr</link><description>&lt;p&gt;Die ICANN (Internet Corporation for Assigned Names and Numbers) hat ende Mai 2011 die endgültige Fassung der Ausschreibungsregeln für die Registrierung neuer gTLDs bereitgestellt. Nach dem jetzt bekannt gewordenen vorläufigen Zeitplan wird die Organisation wohl am 20.Juni 2011 die entsprechenden Ausschreibungsregeln final veröffentlichen. Es wird erwartet das demzufolge bereits im Oktober/November 2011 in einem 45 Tägigen Zeitfenster die Bewerbungen für einen neu Top-Lever Domain eingereicht werden müssen.&lt;/p&gt;  &lt;p&gt;Die für die Koordination des Domain-Name-Systems zuständige (ICANN) hat am 30.05.2011 die finale Fassung der Ausschreibungsregeln ("Draft Applicant Guidebook") für die Registrierung neuer gTLDs ("new gTLDs") veröffentlicht. Nach dem von ICANN angekündigten vorläufigen Zeitplan wird erwartet, dass das ICANN BOard am am 20. Juni 2011 die Ausschreibungsregeln verabschieden wird und bereits im Oktober/November 2011 in einem Zeitfenster von 45 Tagen die Bewerbungen für eine neue Top-Level-Domain bei ICANN eingereicht werden müssen.&lt;/p&gt;  &lt;p&gt;Einzelheiten des „new gTLD program“ sind in „&lt;a href="http://www.icann.org/en/topics/new-gtld-comments-en.htm"&gt;Draft Applicant Guidebook&lt;/a&gt;" ("DRAFT RFP") dargestellt.&lt;/p&gt;  &lt;p&gt;Der veröffentlichte Entwurf sieht eine Öffnung des Domain-Namensraumes um eine unbegrenzte Zahl neuer gTLDs vor.&lt;/p&gt;  &lt;p&gt;Konkret bedeutet dies das zukünftig auch TLDs für bestimmte Branchen (.travel, .hotel, .bank usw.) oder auch geographischer Regionen (.bayern, .berlin, .chicago usw.) möglich sein werden. Auch Firmen werden sich eigene gTLDs registrieren lassen können.&lt;/p&gt;  &lt;p&gt;Es bleibt abzuwarten wie sich die neuen gTLDs durchsetzen werden. Zu erwarten ist in jedem Fall zunächst ein ‘run’ auf die neuen Domainerweiterungen. Es scheint wieder einmal Goldgräberstimmung angesagt zu sein.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px; padding:0px 0px 0px 0px;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt; tweetmeme_source = 'eagleworx'; tweetmeme_hashtags = '#DNN,#DotNetNuke';&lt;/script&gt; &lt;script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"&gt;&lt;/script&gt;&lt;/div&gt;</description><thumbnail /><dc:creator>Eagleworx DNN Tips and Tricks</dc:creator><pubDate>Mon, 20 Jun 2011 10:58:36 GMT</pubDate><guid isPermaLink="false">03ae0694-6a8d-4193-94e6-b46ad2fc2d09</guid></item><item><title>Vorbelegen des DNN-Suchfeldes mit einem Standardtext</title><link>http://www.dotnetnukeblogs.com/Home/Articles/itemId/33276/Vorbelegen-des-DNNSuchfeldes-mit-einem-Standardte</link><description>&lt;p&gt;Das Standard Search Skin-Objekt von DotNetNuke unterstützt derzeit (bis Version 5.6.2) keine Anzeige eines Standardtextes innerhalb des Eingabefeldes.&lt;/p&gt;
&lt;p&gt;Um dieses Effekt zu simulieren kann man jedoch eine geschickt platzierte Hintergrundgrafik einsetzen.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Hier der entsprechende Code ausschnitt zur Darstellung des Suchfeldes:&lt;/p&gt;
&lt;div class="csharpcode"&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="skinsitesearch"&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="search"&lt;/span&gt; &lt;span class="attr"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;="background-position: 0px 0px;"&lt;/span&gt;&lt;span class="kwrd"&gt;&gt;&lt;&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="search"&lt;/span&gt; &lt;span class="attr"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;="background-position: 0px 0px;"&lt;/span&gt;&lt;span class="kwrd"&gt;&gt;&lt;&lt;/span&gt;&lt;span class="html"&gt;dnn:SEARCH&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="dnnSEARCH"&lt;/span&gt; &lt;span class="attr"&gt;cssclass&lt;/span&gt;&lt;span class="kwrd"&gt;="SEARCH"&lt;/span&gt; &lt;span class="attr"&gt;Submit&lt;/span&gt;="&amp;&lt;span class="attr"&gt;amp&lt;/span&gt;;&lt;span class="attr"&gt;lt&lt;/span&gt;;&lt;span class="attr"&gt;img&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;=&amp;&lt;span class="attr"&gt;amp&lt;/span&gt;;&lt;span class="attr"&gt;amp&lt;/span&gt;;&lt;span class="attr"&gt;quot&lt;/span&gt;;&lt;span class="attr"&gt;images&lt;/span&gt;/&lt;span class="attr"&gt;search&lt;/span&gt;.&lt;span class="attr"&gt;gif&lt;/span&gt;&amp;&lt;span class="attr"&gt;amp&lt;/span&gt;;&lt;span class="attr"&gt;amp&lt;/span&gt;;&lt;span class="attr"&gt;quot&lt;/span&gt;; &lt;span class="attr"&gt;border&lt;/span&gt;=&amp;&lt;span class="attr"&gt;amp&lt;/span&gt;;&lt;span class="attr"&gt;amp&lt;/span&gt;;&lt;span class="attr"&gt;quot&lt;/span&gt;;&lt;span class="attr"&gt;0&lt;/span&gt;&amp;&lt;span class="attr"&gt;amp&lt;/span&gt;;&lt;span class="attr"&gt;amp&lt;/span&gt;;&lt;span class="attr"&gt;quot&lt;/span&gt;; &lt;span class="attr"&gt;align&lt;/span&gt;=&amp;&lt;span class="attr"&gt;amp&lt;/span&gt;;&lt;span class="attr"&gt;amp&lt;/span&gt;;&lt;span class="attr"&gt;quot&lt;/span&gt;;&lt;span class="attr"&gt;absmiddle&lt;/span&gt;&amp;&lt;span class="attr"&gt;amp&lt;/span&gt;;&lt;span class="attr"&gt;amp&lt;/span&gt;;&lt;span class="attr"&gt;quot&lt;/span&gt;;&lt;span class="kwrd"&gt;&gt;&lt;/span&gt;" showWeb="false" ShowSite="false" &lt;span class="kwrd"&gt;/&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;style type="text/css"&gt;






.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/p&gt;
&lt;pre class="csharpcode"&gt; &lt;/pre&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;font color="#000000" face="Calibri"&gt;Dazu kommt noch ein Stück Javascript im Skin:&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="csharpcode"&gt; &lt;/pre&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;!--&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;var SearchField = document.getElementById(&lt;span class="str"&gt;'dnn_dnnSEARCH_txtSearch'&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;var skinsitesearch = document.getElementById(&lt;span class="str"&gt;'skinsitesearch'&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;function ChangeBG1(){&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt; skinsitesearch.style.backgroundPosition = &lt;span class="str"&gt;'0px 0px'&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;}&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;function ChangeBG2(){&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt; skinsitesearch.style.backgroundPosition = &lt;span class="str"&gt;'0px -20px'&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;}&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (SearchField.addEventListener){&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt; SearchField.addEventListener(&lt;span class="str"&gt;'focus'&lt;/span&gt;, ChangeBG2, &lt;span class="kwrd"&gt;false&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt; SearchField.addEventListener(&lt;span class="str"&gt;'blur'&lt;/span&gt;, ChangeBG1, &lt;span class="kwrd"&gt;false&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;} &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (SearchField.attachEvent){&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt; SearchField.attachEvent(&lt;span class="str"&gt;'onfocus'&lt;/span&gt;, ChangeBG2);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt; SearchField.attachEvent(&lt;span class="str"&gt;'onblur'&lt;/span&gt;, ChangeBG1);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;}&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;--&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;&lt;/script&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;style type="text/css"&gt;






.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;style type="text/css"&gt;






.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;und das dazu passende CSS&lt;/p&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;.SEARCH,A.SEARCH:link,A.SEARCH:active,A.SEARCH:visited{font-weight:bold;font-size:11px;color:#ffffff;text-decoration:none;font-family:Tahoma}&lt;/pre&gt;
&lt;pre&gt;A.SEARCH:hover{font-weight:bold;font-size:11px;color:#ffffff;text-decoration:underline;font-family:Tahoma}&lt;/pre&gt;
&lt;pre class="alt"&gt;/*Other you want */&lt;/pre&gt;
&lt;pre&gt;.breadcrumb-txt{font-size:11px;color:#e7784b;font-family:Arial;font-weight:bold;vertical-align:middle;}&lt;/pre&gt;
&lt;pre class="alt"&gt;.breadcrumb-padding{padding:0px 0px 0px 6px;}&lt;/pre&gt;
&lt;pre&gt;.date-padding{padding:0px 15px 0px 0px}&lt;/pre&gt;
&lt;pre class="alt"&gt;.logo-padding{padding:0px 0px 0px 15px}&lt;/pre&gt;
&lt;pre&gt;.copyright-padding{padding:0px 0px 0px 3px}&lt;/pre&gt;
&lt;pre class="alt"&gt;.terms-padding{padding:0px 3px 0px 0px}&lt;/pre&gt;
&lt;pre&gt;.user-padding{padding:0px 7px 0px 0px;}&lt;/pre&gt;
&lt;pre class="alt"&gt;.right-padding{padding:0px 0px 0px 19px}&lt;/pre&gt;
&lt;pre&gt;.menu-padding{padding:0px 4px 0px 0px;}&lt;/pre&gt;
&lt;pre class="alt"&gt;.search-padding{padding:0px 15px 0px 0px;}&lt;/pre&gt;
&lt;pre&gt;#dnn_dnnSEARCH_txtSearch{border:0px solid #e0e0e0;font-family:Arial;font-weight:normal;font-size:11px;color:#e7784b;background:Transparent;width:135px;height:18px;padding:2px 0px 0px 8px; margin:0px 0px -2px 0px}&lt;/pre&gt;
&lt;pre class="alt"&gt;#dnn_dnnSEARCH_cmdSearch{}&lt;/pre&gt;
&lt;pre&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;#skinsitesearch {&lt;/pre&gt;
&lt;pre&gt;background:transparent url(images/search-Coral.jpg) repeat scroll 0pt 0px;&lt;/pre&gt;
&lt;pre class="alt"&gt;height:20px;&lt;/pre&gt;
&lt;pre&gt;width:151px;&lt;/pre&gt;
&lt;pre class="alt"&gt;}&lt;/pre&gt;
&lt;pre&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;#skinsitesearch input {&lt;/pre&gt;
&lt;pre&gt;background:transparent none repeat scroll 0%;&lt;/pre&gt;
&lt;pre class="alt"&gt;border:0px none;&lt;/pre&gt;
&lt;pre&gt;color:#c4c4c4;&lt;/pre&gt;
&lt;pre class="alt"&gt;float:left;&lt;/pre&gt;
&lt;pre&gt;font-family:Tahoma;&lt;/pre&gt;
&lt;pre class="alt"&gt;font-size:11px;&lt;/pre&gt;
&lt;pre&gt;font-size-adjust:none;&lt;/pre&gt;
&lt;pre class="alt"&gt;font-stretch:normal;&lt;/pre&gt;
&lt;pre&gt;font-style:normal;&lt;/pre&gt;
&lt;pre class="alt"&gt;font-variant:normal;&lt;/pre&gt;
&lt;pre&gt;font-weight:normal;&lt;/pre&gt;
&lt;pre class="alt"&gt;height:16px;&lt;/pre&gt;
&lt;pre&gt;line-height:normal;&lt;/pre&gt;
&lt;pre class="alt"&gt;margin:4px 0px 0px 3px;&lt;/pre&gt;
&lt;pre&gt;padding-bottom:0px;&lt;/pre&gt;
&lt;pre class="alt"&gt;padding-top:0px;&lt;/pre&gt;
&lt;pre&gt;width:120px;&lt;/pre&gt;
&lt;pre class="alt"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;style type="text/css"&gt;






.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;und natürlich eine dazu passende Grafik:&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Jetzt führt ein klick in das Suchfeld dazu das sich die Grafik um 20 Pixel verschiebt, und man ein ‘leeres’ Textfeld sieht.&lt;/p&gt;
&lt;p&gt;Standardmäßig wird der Grafikanteil mit dem Text ‘Search’ angezeigt. &lt;br /&gt;
Vielleicht keine sehr elegante Lösung, aber immerhin ein Workaround.&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" class="wlWriterHeaderFooter"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script type="text/javascript"&gt; tweetmeme_source = 'eagleworx'; tweetmeme_hashtags = '#DNN,#DotNetNuke';&lt;/script&gt;&lt;script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"&gt;&lt;/script&gt;&lt;/div&gt;</description><thumbnail /><dc:creator>Eagleworx DNN Tips and Tricks</dc:creator><pubDate>Fri, 15 Apr 2011 07:14:41 GMT</pubDate><guid isPermaLink="false">aab18f8b-d4bc-4338-b386-1de57146c09d</guid></item><item><title>Tastaturkürzel in Windows 7</title><link>http://www.dotnetnukeblogs.com/Home/Articles/itemId/33240/Tastaturkrzel-in-Windows-7</link><description>&lt;h2&gt;Windows ist natürlich für die Maus gebaut. Effizienter geht es manchmal allerdings mit Tastaturkombinationen, und davon gibt es auch in WIN 7 einige.&lt;/h2&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="IMG00116-20100331-1239" border="0" alt="IMG00116-20100331-1239" align="left" src="/Portals/4/Blog/Files/13/145/Windows-Live-Writer-Tastaturkrzel-in-Windows-7_98C5-IMG00116-20100331-1239_thumb.jpg" width="137" height="104" /&gt;&lt;/a&gt;Während Sie die Finger gerade auf der Tastatur haben, um etwa einen zu Text schreiben, kann es sich anbieten , für bestimmte Funktionen eine Tastenkombination statt der Maus zu verwenden.     &lt;br /&gt;Sie müssen nicht extra das Eingabegerät wechseln und sind schneller. &lt;/p&gt;  &lt;p&gt;Das sind die Tastaturkombinationen, die unter WIN 7 hinzugekommen sind:&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="398"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="155"&gt;&lt;strong&gt;Tastenkombination&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="241"&gt;&lt;strong&gt;Funktion&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="155"&gt; &lt;/td&gt;        &lt;td valign="top" width="241"&gt; &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="158"&gt;‹Win›-‹Cursor hoch›&lt;/td&gt;        &lt;td valign="top" width="239"&gt;Fenster maximieren&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="160"&gt;‹Win›-‹Cursor runter›&lt;/td&gt;        &lt;td valign="top" width="237"&gt;Maximiertes Fenster wiederherstellen/ normales Fenster minimieren&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="162"&gt;‹Win›-‹Cursor links›&lt;/td&gt;        &lt;td valign="top" width="236"&gt;Fenster links andocken&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="163"&gt;‹Win›-‹Cursor rechts›&lt;/td&gt;        &lt;td valign="top" width="235"&gt;Fenster rechts andocken&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="164"&gt;‹Win›-‹Shift›-‹Cursor links›&lt;/td&gt;        &lt;td valign="top" width="234"&gt;Fenster einen Monitor nach links verschieben&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="165"&gt;‹Win›-‹Shift›-‹Cursor rechts›&lt;/td&gt;        &lt;td valign="top" width="233"&gt;Fenster einen Monitor nach rechts verschieben&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="166"&gt;‹Win›-‹Pos1›&lt;/td&gt;        &lt;td valign="top" width="233"&gt;Alle Fenster bis auf das aktive minimieren/ wiederherstellen&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="166"&gt;‹Win›-‹T›&lt;/td&gt;        &lt;td valign="top" width="233"&gt;durch die Taskbar-Vorschauen der aktiven Programme wechseln&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="166"&gt;‹Win›-‹Leertaste›&lt;/td&gt;        &lt;td valign="top" width="233"&gt;Aero Peek: Durchblick auf den Desktop&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="166"&gt;‹Win›-‹G›&lt;/td&gt;        &lt;td valign="top" width="233"&gt;Minianwendungen nach vorne bringen&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="166"&gt;‹Win›-‹P›&lt;/td&gt;        &lt;td valign="top" width="233"&gt;         &lt;p&gt;Anzeigeoptionen einblenden (z.B. externer/interner Monitor)&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px; padding:0px 0px 0px 0px;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt; tweetmeme_source = 'eagleworx'; tweetmeme_hashtags = '#DNN,#DotNetNuke';&lt;/script&gt; &lt;script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"&gt;&lt;/script&gt;&lt;/div&gt;</description><thumbnail /><dc:creator>Eagleworx DNN Tips and Tricks</dc:creator><pubDate>Wed, 30 Mar 2011 08:57:51 GMT</pubDate><guid isPermaLink="false">005f9cc8-429b-45fd-b88a-b0bc86d0bc18</guid></item><item><title>10 Dinge die überprüft werden sollten bevor man eine Web-Site Publiziert</title><link>http://www.dotnetnukeblogs.com/Home/Articles/itemId/33241/10-Dinge-die-berprft-werden-sollten-bevor-man-ei</link><description>&lt;h3&gt;Wenn das Ende eines Web-Site Projektes in Sicht kommt, der Domain Name gesichert ist, das Framework installiert ist, die notwendigen Templates erstellt sind, der Inhalt erstellt und eingebaut wurde, Bilder und Videos platziert sind und der Kunde langsam den druck erhöht um die web-Site endlich live zu stellen ist es zunehmend wichtig einige grundlegende Dinge zu prüfen bevor man eine Web-Site letztendlich live stellt.&lt;/h3&gt;
&lt;p&gt;Oftmals werden im Erstellungsprozess einige Kleinigkeiten zurückgestellt mit der Maßgabe “Das prüfe ich dann später…”. Um dieses Problem zu vermeiden hier eine (nicht mit Anspruch auf Vollständigkeit) Liste von Dingen die sich in der Vergangenheit schon einmal als Fallstricke herausgestellt haben nachdem eine Web-Site Publiziert wurde.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Validierung und Cross Browser Kompatibilität     &lt;br /&gt;
&lt;/strong&gt;Prüfen Sie nochmals ob ihre Site den W3C Markup Validation Service besteht (&lt;a href="http://validator.w3.org/"&gt;http://validator.w3.org/&lt;/a&gt;) und das die Site in den gängigsten Browsern identisch dargestellt wird IE7, IE8, FireFox, Safari, Opera und Chrome (Ich nehme mir die Freiheit den IE6 aus diesem Test mittlerweile auszuschließen, aber das ist lediglich eine persönliche Präferenz)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Rechtschreibung und Grammatik&lt;/strong&gt;     &lt;br /&gt;
Schicken Sie einfach alle Texte noch einmal kurz durch eine Rechtschreibprüfung. Sollten Sie Teile der Site ‘handkodiert’ haben, so empfiehlt sich auch eine kurze Prüfung des HTML-Codes auf Rechtschreibfehler.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Links     &lt;br /&gt;
&lt;/strong&gt;Folgen Sie einmal allen Links und stellen Sie sicher das der Absprung auf zum richtigen Ziel führt. Ich habe es mir zudem zur regel gemacht das alle Links welche zu einer externen Seite führen immer in einem neuen Browserfenster geöffnet werden (target=”_blank”)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Formulare&lt;/strong&gt;     &lt;br /&gt;
Senden Sie alle Formulare einmal komplett mit Beispiel Inhalten ab um sicher zu stellen das alle Daten auch an die richtigen E-Mail Adressen versendet werden.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. Meta Daten und Bild alt Tags     &lt;br /&gt;
&lt;/strong&gt;Prüfen Sie die Meta Daten der Site wie Titel, Beschreibung und Key-Words auf jeder Seite und machen Sie diese eindeutig und mit Bezug auf den Inhalt der jeweiligen Seite. Versehen Sie alle Bilder mit alt-Tags wo notwendig.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6. E-Mail Adressen&lt;/strong&gt;     &lt;br /&gt;
Stellen Sie sicher das alle innerhalb der Site verwendeten E-Mail Adressen, sowohl als Kontaktadressen als auch innerhalb der Formulare, existieren und funktionieren.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;7. 301 Redirects und sitemap.xml Files     &lt;br /&gt;
&lt;/strong&gt;Ist die Web-Site ein Re-Design, spiegeln Sie die alte Struktur soweit passend und möglich zur neuen Struktur und bauen Sie die entsprechenden Re-Directs. Erzeugen Sie eine XML-Sitemap für Suchmaschinen und die Google Webmaster Tools.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;8. Tracking&lt;/strong&gt;     &lt;br /&gt;
Falls Sie Google Analytics verwenden, stellen Sie sicher das der entsprechende Code auf allen Seiten platziert ist und die Site bei Google angemeldet ist. Dies gilt auch für die Google Webmaster Tools.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;9. Server / DNS     &lt;br /&gt;
&lt;/strong&gt;Prüfen Sie das die Web-Site sowohl unter www.domainname.com als auch unter domainname.com erreichbar ist.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;10. Favicon&lt;/strong&gt;     &lt;br /&gt;
Erstellen Sie ein Favicon (das ist das kleine Symbol neben der URL in der Adresszeile des Browsers) und legen Sie dieses im Hauptverzeichnis der Web-Site ab.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Die ersten Tage nach einem Web-Site Launch sind immer die spannendsten, denn hier werden Ihre Besucher auch schnell zu Kritikern. Gerade in dieser Zeit besteht eine gute Chance qualifiziertes Feedback zu bekommen. Mit der Durchführung der vorgestellten Routine vor einem Web-Site Launch, erhöhen Sie die Chance das der erste Eindruck Ihrer Web-Site positiv wird, und nicht durch vergessene Kleinigkeiten verwässert wird. Insbesondere die Punkte Rechtschreibung und Cross-Browser Kompatibilität haben sich in der Vergangenheit durchaus als Stolpersteine dargestellt.&lt;/p&gt;
&lt;p&gt;Dies ist eine Übersetzung des Originalen Blog-Eintrages von Rick Beddie / PSDtoDNN, zu finden &lt;a target="_blank" href="http://www.psdtodnn.com/Blog/tabid/76/EntryId/15/10-things-to-check-before-going-live-with-a-new-or-re-designed-website.aspx"&gt;hier&lt;/a&gt;&lt;/p&gt;
&lt;div style="margin:0px; padding:0px 0px 0px 0px;" class="wlWriterHeaderFooter"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script type="text/javascript"&gt; tweetmeme_source = 'eagleworx'; tweetmeme_hashtags = '#DNN,#DotNetNuke';&lt;/script&gt; &lt;script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"&gt;&lt;/script&gt;&lt;/div&gt;</description><thumbnail /><dc:creator>Eagleworx DNN Tips and Tricks</dc:creator><pubDate>Wed, 30 Mar 2011 07:52:40 GMT</pubDate><guid isPermaLink="false">73f93474-3154-487b-90c8-1e9e8fdccbfb</guid></item><item><title>Eindeutige Zeichen für die Tatsache das Ihre Web-Site ein Re-Design benötigt</title><link>http://www.dotnetnukeblogs.com/Home/Articles/itemId/33237/Eindeutige-Zeichen-fr-die-Tatsache-das-Ihre-WebS</link><description>&lt;p&gt;Stellen Sie sich doch bitte zunächst einige einfache Fragen:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Besteht Ihre Web-Site aus Frames? &lt;/li&gt;    &lt;li&gt;Wurde Ihre Web-Site in Flash realisiert und Sie haben nahezu keine Möglichkeit selbst Änderungen am Inhalt vorzunehmen? &lt;/li&gt;    &lt;li&gt;Hat Ihre Web-Site eine feste breite von 640 Pixeln? &lt;/li&gt;    &lt;li&gt;Haben Sie möglicherweise ein Standard Layout der von ihnen verwendeten Software im Einsatz? &lt;/li&gt;    &lt;li&gt;Ist Ihre Web-Site älter als 10 Jahre? &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Sollten Sie irgendeine der obigen Fragen mit Ja beantworten, sollten Sie ernsthaft über ein Re-Design der Seite nachdenken.    &lt;br /&gt;Warum diese Aussage? Nun, lassen Sie uns dies doch ein wenig genauer untersuchen.&lt;/p&gt;  &lt;h2&gt;Besteht Ihre Web-Site aus Frames?&lt;/h2&gt;  &lt;br /&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;Frames waren in den Anfängen des Internet sehr populär. Damals hat es diese Technik ermöglicht eine zentrale Navigation über alle vorhanden Seiten darzustellen ohne den dazu notwendigen Code auf jeder einzelnen Seite zu wiederholen.     &lt;br /&gt;&lt;strong&gt;     &lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;h3&gt;Woran merke ich denn überhaupt das meine Web-Site mittels Frames erstellt wurde?    &lt;br /&gt;&lt;/h3&gt;  &lt;p&gt;Typischerweise erkennt man Seiten mit Frames an einer Scroll Bar innerhalb des Haupt-Inhaltsbereiches, mittels der sie sich in diesem Content bewegen können ohne das sich die Navigation bewegt. Am sichersten sieht man dies natürlich durch einen Blick in den Quellcode der Seite. Finden Sie dort ein&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;&lt;/span&gt;&lt;span class="html"&gt;frame&lt;/span&gt;&lt;span class="kwrd"&gt;&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&lt;/&lt;/span&gt;&lt;span class="html"&gt;frame&lt;/span&gt;&lt;span class="kwrd"&gt;&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Konstrukt, so steht fest das Ihre Web-Site mittels dieser Technologie erstellt wurde. 
  &lt;br /&gt;Heutzutage ist dies durch die Verwendung globaler Dateien und CSS wesentlich effizienter (und auch attraktiver) möglich.&lt;/p&gt;

&lt;h3&gt;Warum sind Frames überhaupt schlecht?&lt;/h3&gt;

&lt;p&gt;Die beiden Hauptgründe sind die Verwendung von Bookmarks und die Auffindbarkeit in Suchmaschinen. 
  &lt;br /&gt;Wenn Ihre Seite Frames verwendet können Anwender die sog. Unterseiten nicht mit einem Bookmark versehen ohne die zentrale Navigation zu verlieren. Die Anwender müssen immer einen Bookmark auf die Startseite setzen um auch die Navigationselemente zu behalten. Technisch gesprochen sind sogenannte ‘Deep-Bookmarks’ oder aber auch das verlinken durch andere Seiten, sog. ‘Deep-Links’, nicht möglich.&lt;/p&gt;

&lt;p&gt;Suchmaschinen tun sich schwer mit Frames auf Web-Seiten. Wenn Ihr Web-Entwickler nicht spezielle Vorkehrungen getroffen hat um den Suchmaschinen bei der Indizierung Ihrer Seite zu helfen gehen die zentralen Inhalte Ihrer Seite oft bei den Suchmaschinen verloren. Insbesondere die großen Suchmaschinen ‘bestrafen’ regelrecht Frames durch eine Herabstufung der Qualität der Seite wenn Sie auf Frames treffen. Frames werden dort als ‘veraltete’ Technologie bewertet.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;Wurde Ihre Web-Site in Flash realisiert?&lt;/h2&gt;

&lt;p&gt;Im Prinzip ist dagegen eigentlich nichts zu sagen. Viele Web-Seiten werden heute mit Flash realisiert. Insbesondere die gerne gezeigten sog. ‘MicroSites’ für Filme oder für Werbung. Flash bietet hier (zumindest vor HTML5) riesige Möglichkeiten hinsichtlich grafischer Gestaltung und Interaktivität. 
  &lt;br /&gt;Sollte Ihre Web-Site in Flash realisiert worden sein, so werden Sie allerdings bereits festgestellt haben das Sie für jede Inhaltliche Änderung einen externen Entwickler bemühen müssen (vorausgesetzt Sie sind nicht selbst ein Flash Entwickler (sic!)). Die Konvertierung einer Flash Web-Site in ein Content Management System ist zwar anfänglich mit Aufwand verbunden, jedoch amortisiert sich diese Investition sehr schnell, da Sie alle weiteren Änderungen hinsichtlich des Inhaltes in Zukunft selbst vornehmen können. Auch das anlegen komplett neuer Seiten innerhalb der Seitenstruktur stellt keine Herausforderung mehr dar. Somit können Sie die Inhalte Ihrer Web-Site zu jedem Zeitpunkt ändern, ohne auf externe (möglicherweise kostenintensive) Hilfe angewiesen zu sein.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;Hat Ihre Web-Site eine feste breite von 640 Pixeln?&lt;/h2&gt;

&lt;br /&gt;

&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;Die gute Nachricht: “Sie sind nicht allein”! Es gibt auch heute noch eine ganze Reihe von Web-Seiten die eine feste breite von lediglich 640 Pixeln aufweisen. 

  &lt;br /&gt;Die schlechte Nachricht: “Die heutigen Monitore stellen Ihre Web-Site nahezu unleserlich klein dar”. 

  &lt;br /&gt;Diese kleine Auflösung war anfänglich dem Umstand geschuldet das auch die Monitore lediglich kleiner Auflösungen unterstützten. Mit der Zeit wurden Monitore (und deren Auflösung) immer größer, so das eine Web-Site mit dieser Abmessung heute nur noch sehr klein wiedergegeben wird. Stellen Sie sich doch einfach einmal vor wie eine 640 Pixel breite Web-Site auf einem 46" LED Bildschirm dargestellt wird.&lt;/p&gt;

&lt;p&gt;Laut diesem Wikipedia Artikel verwenden 76% der Anwender heute Bildschirmauflösungen größer 1024 x 768 Pixeln. 
  &lt;br /&gt;Weniger als 1% verwenden noch Auflösungen von 800 x 600 Pixeln. 

  &lt;br /&gt;Referenz: &lt;a href="http://en.wikipedia.org/wiki/Display_resolution" target="_blank"&gt;en.wikipedia.org/wiki/Display_resolution&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;Haben Sie möglicherweise ein Standard Layout der von ihnen verwendeten Software im Einsatz?&lt;/h2&gt;

&lt;br /&gt;

&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;Die ersten Programme welche es einem Anwender erlaubten ohne jegliche HTML Kenntnisse eine Web-Site zu erstellen waren recht einfach zu nutzen, legten jedoch Standard Layouts zugrunde welche dann vom Anwender lediglich modifiziert wurden. 

  &lt;br /&gt;Nahezu jeder etwas erfahrene Web-Anwender sieht auf den ersten Blick ob Ihre Web-Site eines dieser Standard Layouts verwendet. 

  &lt;br /&gt;Heute erzeugt die Verwendung derartiger einfacher Layouts immer einen etwas amateurhaften ersten Eindruck.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;Ist Ihre Web-Site älter als 10 Jahre?&lt;/h2&gt;

&lt;br /&gt;

&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;Insbesondere im Internet hat die Technologie in den letzten Jahren sehr große Fortschritte gemacht. 

  &lt;br /&gt;Sollte Ihre Web-Site älter als 10 Jahre sein so ist die Chance groß das diese noch veraltete Technologien verwendet. 

  &lt;br /&gt;Schlagworte wie CSS oder auch die mögliche Trennung von Inhalt und Layout sind nicht zu unterschätzende Faktoren für den effizienten (und damit kostengünstigen) Betrieb einer Web-Site. 

  &lt;br /&gt;Gleiches gilt natürlich auch für eine zentrale Navigationsstruktur. Früher musste man, um eine neue Seite in eine Web-Site einzubauen, noch alle (oder zumindest viele) weitere Seiten modifizieren um die neue Seite in die allgemeine Navigation mit einzubauen. 

  &lt;br /&gt;In modernen Content Management System ist eine derartige Aufgabe mit einem Mausklick erledigt. Auch globale Änderungen an Schriftgrößen, Farben, Layout Elementen sind heut recht einfach zentral Steuerbar und verursachen somit auch keinen allzu großen Aufwand mehr. 

  &lt;br /&gt;&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px; padding:0px 0px 0px 0px;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt; tweetmeme_source = 'eagleworx'; tweetmeme_hashtags = '#DNN,#DotNetNuke';&lt;/script&gt; &lt;script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"&gt;&lt;/script&gt;&lt;/div&gt;</description><thumbnail /><dc:creator>Eagleworx DNN Tips and Tricks</dc:creator><pubDate>Tue, 29 Mar 2011 12:14:21 GMT</pubDate><guid isPermaLink="false">b1711529-1692-4b68-abbb-610118535153</guid></item><item><title>Erweitern der erlaubten Dateitypen welche in einem DotNetNuke Portal hochgeladen werden dürfen</title><link>http://www.dotnetnukeblogs.com/Home/Articles/itemId/33219/Erweitern-der-erlaubten-Dateitypen-welche-in-einem</link><description>&lt;p&gt;In einer DNN standardinstallation sind standardmäßig folgende Dateitypen für einen Upload in das Portal erlaubt:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;.swf&lt;/li&gt;
    &lt;li&gt;.jpg&lt;/li&gt;
    &lt;li&gt;.jpeg&lt;/li&gt;
    &lt;li&gt;.jpe&lt;/li&gt;
    &lt;li&gt;.gif&lt;/li&gt;
    &lt;li&gt;.bmp&lt;/li&gt;
    &lt;li&gt;.png&lt;/li&gt;
    &lt;li&gt;.doc&lt;/li&gt;
    &lt;li&gt;.docx&lt;/li&gt;
    &lt;li&gt;.xls&lt;/li&gt;
    &lt;li&gt;.xlsx&lt;/li&gt;
    &lt;li&gt;.ppt&lt;/li&gt;
    &lt;li&gt;.pptx&lt;/li&gt;
    &lt;li&gt;.pdf&lt;/li&gt;
    &lt;li&gt;.txt&lt;/li&gt;
    &lt;li&gt;.xml&lt;/li&gt;
    &lt;li&gt;.xsl&lt;/li&gt;
    &lt;li&gt;.css&lt;/li&gt;
    &lt;li&gt;.zip&lt;/li&gt;
    &lt;li&gt;.template und&lt;/li&gt;
    &lt;li&gt;.csv&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Um diese Liste zu erweitern müssen Sie sich mit einem Host Account am Portal anmelden. Navigieren Sie dann zu&lt;/p&gt;
&lt;p&gt;System -&gt; Systemeinstellungen -&gt; weitere Einstellungen -&gt; zugelassene Dateierweiterungen&lt;/p&gt;
&lt;p&gt;Hier finden Sie ein Eingabefeld welches die Dateierweiterungen als kommaseparierte Liste enthält. Hängen Sie einfach die von Ihnen benötigten Erweiterungen an diese Liste an und Speichern Sie die Änderungen.&lt;/p&gt;
&lt;p&gt;Bitte beachten Sie das wir grundsätzlich davon abraten auch ausführbare Dateien wie z.B. .exe oder .dll für den Upload zuzulassen.&lt;/p&gt;
&lt;p&gt;Dies ist eine Übersetzung des Originalen Blog-Eintrages von Rick Beddie / PSDtoDNN, zu finden &lt;a target="_blank" href="http://www.psdtodnn.com/Blog/tabid/76/EntryId/14/Including-permission-for-additional-file-extensions-to-be-uploaded-through-DotNetNuke.aspx"&gt;hier&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;</description><thumbnail /><dc:creator>Eagleworx DNN Tips and Tricks</dc:creator><pubDate>Tue, 22 Mar 2011 08:07:00 GMT</pubDate><guid isPermaLink="false">26688383-becc-47f6-9617-52a4e3c53a09</guid></item><item><title>API REST Html-Helppage display Json requestsample</title><link>http://www.dotnetnukeblogs.com/Home/Articles/itemId/33194/API-REST-HtmlHelppage-display-Json-requestsample</link><description>&lt;p&gt;
Für mein aktuelles API Projekt erstelle ich eigene &lt;b&gt;Helppages &lt;/b&gt;auf denen ich
auch Requestbeispiele für Xml und Json anzeige. Die Erstellung eines Request-Beispiel
wird durch &lt;b&gt;Xsd &lt;/b&gt;erstellt und das resultierende Xml wird dann durch &lt;b&gt;Json.NET&lt;/b&gt; in
Json konvertiert.
&lt;/p&gt;
&lt;p&gt;
Der Aufruf dazu sah wie folgt aus:&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;pre&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;var
jsonSample &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; JsonConvert.SerializeXNode(xmlSampelRequest);&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Als Ergebnis wurde auch Json ausgebeben, leider aber ohne Zeilenumbrüche, was die
Darstellung und Lesbarkeit doch stark reduziert. Damit der Json-String auch "vernüftig"
formatiert wird, kann man bei der Serializierung noch einen Parameter setzen und damit
die Formatierung erzwingen: &lt;b&gt;Formatting.Indented&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
Der Aufruf sieht dann wie folgt aus:&lt;br /&gt;
&lt;/p&gt;
&lt;pre&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;var
jsonSample &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; JsonConvert.SerializeXNode(xmlSampelRequest,
Newtonsoft.Json.Formatting.Indented);&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=df16ec60-7479-4d47-9c0f-30943bfd4459" /&gt;</description><thumbnail>http://www.dotnetnukeblogs.com/Portals/5/-1</thumbnail><dc:creator>.NET - Software &amp; DotNetNuke (DNN) Blog</dc:creator><pubDate>Tue, 15 Mar 2011 10:13:49 GMT</pubDate><guid isPermaLink="false">b946f5de-f8c4-4c47-bf34-5ddd81564f7d</guid></item><item><title>Automapper custom TypeConverter Exceptionhandling</title><link>http://www.dotnetnukeblogs.com/Home/Articles/itemId/33187/Automapper-custom-TypeConverter-Exceptionhandling</link><description>In einem Projekt verwende ich aktuell die Komponente &lt;b&gt;AutoMapper&lt;/b&gt; (automapper.codeplex.com),
im zwischen den externen Datacontracts und den internen Entities zu mappen. Teilweise
habe ich dafür auch eigenen TypeConverter entwickelt. Wenn man in diesem &lt;b&gt;TypeConverter&lt;/b&gt; eine
eigene Exception auslöst, dann erhält man beim aufrufenden Code immer eine &lt;b&gt;AutoMapperMappingException&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Da ich in dem Projekt ein globales ErrorHandling habe (&lt;b&gt;WCF&lt;/b&gt; bzw. Implementierung
vom IErrorHandler), möchte ich aber die konkrete Exception gerne aus dem TypeConverter
in mein Errorhandling weitergeben. 
&lt;br /&gt;
&lt;br /&gt;
Damit das funktioniert baut man sich am besten einen Wrapper für den Aufruf vom Automapper,
um dort zu entscheiden, welche Exception man weitergeben möchte. Die eigene Exception
wird als &lt;b&gt;InnerException&lt;/b&gt; vom &lt;b&gt;AutoMapperMappingException &lt;/b&gt;mitgeliefiert.
Durch überprüfung der InnerException kann man als feststellen, wie die aktuelle Exception
zu bahandeln ist.&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel:&lt;br /&gt;
&lt;pre&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;class&lt;/span&gt; AutoMapperWrapper
{ &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;static&lt;/span&gt; U
Map&lt;T, U&gt;( T source) { &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;try&lt;/span&gt; { &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;return&lt;/span&gt; Mapper.Map&lt;T,
U&gt;(source); } &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;catch&lt;/span&gt; (Exception
e) { &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;while&lt;/span&gt; (e &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;is&lt;/span&gt; AutoMapperMappingException)
e &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; e.InnerException; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;if&lt;/span&gt; (e
== &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;null&lt;/span&gt;) &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;throw&lt;/span&gt;; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;else&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;throw&lt;/span&gt; e;
} } }&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=cc07a262-24a0-4297-87e5-a13dc5d1ef2b" /&gt;</description><thumbnail>http://www.dotnetnukeblogs.com/Portals/5/-1</thumbnail><dc:creator>.NET - Software &amp; DotNetNuke (DNN) Blog</dc:creator><pubDate>Fri, 11 Mar 2011 12:44:49 GMT</pubDate><guid isPermaLink="false">0403ecda-5296-476c-b5da-c2c52e9181a7</guid></item><item><title>WCF OperationContract nicht optionale Prameter im Wsdl</title><link>http://www.dotnetnukeblogs.com/Home/Articles/itemId/33167/WCF-OperationContract-nicht-optionale-Prameter-im</link><description>Wenn man mit der WCF einen Service definiert und dabei Nachrichtenbasiert kommunizieren möchte, sieht kann die Definition z.B. so aussehen:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;[ServiceContract(Namespace &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; APICommon.DefaultSOAPNameSpace)]&lt;br /&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;interface&lt;/span&gt; ICartSoapService&lt;br /&gt;
{&lt;br /&gt;
[OperationContract]&lt;br /&gt;
ProcessCartResponse ProcessCart(ProcessCartRequest request);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[DataContract]&lt;br /&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;class&lt;/span&gt; ProcessCartRequest&lt;br /&gt;
{&lt;br /&gt;
[DataMember(IsRequired &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;true&lt;/span&gt;)]&lt;br /&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; Cart
Cart&lt;br /&gt;
{&lt;br /&gt;
get;&lt;br /&gt;
set;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
[DataContract]&lt;br /&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;class&lt;/span&gt; ProcessCartResponse
: BaseResponseMessage&lt;br /&gt;
{&lt;br /&gt;
[DataMember(IsRequired &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;true&lt;/span&gt;)]&lt;br /&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; ProcessResultType
ProcessResult&lt;br /&gt;
{&lt;br /&gt;
get;&lt;br /&gt;
set;&lt;br /&gt;
}&lt;br /&gt;
}&lt;/span&gt;&lt;/pre&gt;Die WCF erzeugt auch brav eine passendes Wsdl Datei für diese Beschreibung.
Allerdings hat die "Standardausgabe" der WCF datei den Nachteil, das der Parameter
"request" der Methode ProcessCart immer optionaler Parameter ist bzw. in der Wsdl
Datei wird das Element mit den Attribute&lt;b&gt; minOccurs="0"&lt;/b&gt; gekennezichnet. Da ohne
den Parameter die Methode aber nicht vernüftig abgearbeitet werden kann, müsste im
Wsdl eigentlich ein &lt;b&gt;minOccurs="1" &lt;/b&gt;stehen ...also kein optionaler Parameter. 
&lt;br /&gt;
&lt;br /&gt;
Leider gibt es bei den Standardattributen der WCF keine Möglichkeit, diese Verhalten
oder viel mehr die Wsdl-Generierung zu beinflussen. Trotzdem kann man durch ein eigenes
Attribute das gewünschte Verhalten sehr schnell der WCF beibringen.&lt;br /&gt;
&lt;br /&gt;
Dafür muss man lediglich ein &lt;b&gt;Attribute &lt;/b&gt;anlegen und die Interfaces &lt;b&gt;IContractBehavior &lt;/b&gt;+ &lt;b&gt;IWsdlExportExtension &lt;/b&gt;mit
hinzufügen. Die vollständige Implementierung sieht so aus:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt; [AttributeUsage(AttributeTargets.Interface)]&lt;br /&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;class&lt;/span&gt; OperationsParametersAreRequiredAttribute
: Attribute, IContractBehavior, IWsdlExportExtension&lt;br /&gt;
{&lt;br /&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;private&lt;/span&gt; List&lt;RequiredOperationParameter&gt;
_requiredOperationParameters;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;void&lt;/span&gt; AddBindingParameters(&lt;br /&gt;
ContractDescription contractDescription,&lt;br /&gt;
ServiceEndpoint endpoint,&lt;br /&gt;
System.ServiceModel.Channels.BindingParameterCollection bindingParameters)&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;void&lt;/span&gt; ApplyClientBehavior(&lt;br /&gt;
ContractDescription contractDescription,&lt;br /&gt;
ServiceEndpoint endpoint,&lt;br /&gt;
System.ServiceModel.Dispatcher.ClientRuntime clientRuntime)&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;void&lt;/span&gt; ApplyDispatchBehavior(&lt;br /&gt;
ContractDescription contractDescription,&lt;br /&gt;
ServiceEndpoint endpoint,&lt;br /&gt;
System.ServiceModel.Dispatcher.DispatchRuntime dispatchRuntime)&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;void&lt;/span&gt; ExportContract(&lt;br /&gt;
WsdlExporter exporter,&lt;br /&gt;
WsdlContractConversionContext context)&lt;br /&gt;
{&lt;br /&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;if&lt;/span&gt; (_requiredOperationParameters
== &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;null&lt;/span&gt;)&lt;br /&gt;
_requiredOperationParameters &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;new&lt;/span&gt; List&lt;RequiredOperationParameter&gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;foreach&lt;/span&gt; (var
operation &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;in&lt;/span&gt; context.Contract.Operations)&lt;br /&gt;
{&lt;br /&gt;
var requestMessage &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; operation.Messages.Where(m
=&gt; m.Direction == MessageDirection.Input).FirstOrDefault();&lt;br /&gt;
var parameters &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; operation.SyncMethod.GetParameters();&lt;br /&gt;
Debug.Assert(parameters.Length == requestMessage.Body.Parts.Count);&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;for&lt;/span&gt; (var
iLoop &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; 0;
iLoop &lt; parameters.Length; iLoop++)&lt;br /&gt;
{&lt;br /&gt;
var attributes &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; parameters[iLoop].GetCustomAttributes(&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;typeof&lt;/span&gt;(OperationParameterIsOptionalAttribute), &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;false&lt;/span&gt;);&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;if&lt;/span&gt; (attributes.Length
== 0)&lt;br /&gt;
{&lt;br /&gt;
_requiredOperationParameters.Add(&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;new&lt;/span&gt; RequiredOperationParameter&lt;br /&gt;
{&lt;br /&gt;
Namespace &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; requestMessage.Body.Parts[iLoop].Namespace,&lt;br /&gt;
Name &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; requestMessage.Body.Parts[iLoop].Name,&lt;br /&gt;
Message &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; operation.Name&lt;br /&gt;
});&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;void&lt;/span&gt; ExportEndpoint(&lt;br /&gt;
WsdlExporter exporter,&lt;br /&gt;
WsdlEndpointConversionContext context)&lt;br /&gt;
{&lt;br /&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;foreach&lt;/span&gt; (var
requiredParamter &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;in&lt;/span&gt; _requiredOperationParameters)&lt;br /&gt;
{&lt;br /&gt;
var schemas &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; exporter.GeneratedXmlSchemas.Schemas(requiredParamter.Namespace);&lt;br /&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;foreach&lt;/span&gt; (XmlSchema
schema &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;in&lt;/span&gt; schemas)&lt;br /&gt;
{&lt;br /&gt;
var message &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; schema.Elements[requiredParamter.XmlName] &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;as&lt;/span&gt; XmlSchemaElement;&lt;br /&gt;
var complexType &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; message.ElementSchemaType &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;as&lt;/span&gt; XmlSchemaComplexType;&lt;br /&gt;
Debug.Assert(complexType !&lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;null&lt;/span&gt;, &lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"Expected
input message to be complex type"&lt;/span&gt;);&lt;br /&gt;
var sequence &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; complexType.Particle &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;as&lt;/span&gt; XmlSchemaSequence;&lt;br /&gt;
Debug.Assert(sequence !&lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;null&lt;/span&gt;, &lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"Expected
a sequence."&lt;/span&gt;);&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;foreach&lt;/span&gt; (XmlSchemaElement
schemaElement &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;in&lt;/span&gt; sequence.Items)&lt;br /&gt;
{&lt;br /&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;if&lt;/span&gt; (schemaElement.Name
== requiredParamter.Name)&lt;br /&gt;
{&lt;br /&gt;
schemaElement.MinOccurs &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; 1;&lt;br /&gt;
schemaElement.MinOccursString &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"1"&lt;/span&gt;;&lt;br /&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;break&lt;/span&gt;;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
_requiredOperationParameters.Clear();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;void&lt;/span&gt; Validate(&lt;br /&gt;
ContractDescription contractDescription,&lt;br /&gt;
ServiceEndpoint endpoint)&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;internal&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;class&lt;/span&gt; RequiredOperationParameter&lt;br /&gt;
{&lt;br /&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;string&lt;/span&gt; Message
{ get; set; }&lt;br /&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;string&lt;/span&gt; Name
{ get; set; }&lt;br /&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;string&lt;/span&gt; Namespace
{ get;set;}&lt;br /&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; XmlQualifiedName
XmlName&lt;br /&gt;
{&lt;br /&gt;
get { &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;return&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;new&lt;/span&gt; XmlQualifiedName(Message,
Namespace); }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
}&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=f734a585-6339-42f8-b310-b3ce19a73f19" /&gt;</description><thumbnail>http://www.dotnetnukeblogs.com/Portals/5/-1</thumbnail><dc:creator>.NET - Software &amp; DotNetNuke (DNN) Blog</dc:creator><pubDate>Wed, 02 Mar 2011 13:53:16 GMT</pubDate><guid isPermaLink="false">d5745147-06bc-41f9-ba90-baba3d34eba3</guid></item><item><title>DotNetNuke Stylesheets</title><link>http://www.dotnetnukeblogs.com/Home/Articles/itemId/33131/DotNetNuke-Stylesheets</link><description>&lt;p&gt;DotNetNuke Stylesheets&lt;/p&gt;&lt;a href=http://www.eagleworx.net/DotNetNuke/tabid/493/EntryId/137/DotNetNuke-Stylesheets.aspx&gt;More...&lt;/a&gt;</description><thumbnail /><dc:creator>Eagleworx DNN Tips and Tricks</dc:creator><pubDate>Mon, 24 Jan 2011 08:43:00 GMT</pubDate><guid isPermaLink="false">c0a42bc8-8767-4b28-9a46-d08d3ea0d67e</guid></item><item><title>WCF REST  Could not load file or assembly 'System.ServiceModel.Activation'</title><link>http://www.dotnetnukeblogs.com/Home/Articles/itemId/33081/WCF-REST--Could-not-load-file-or-assembly-System</link><description>Bei dem Versuch HTTP Basic Auth für einen REST Dienst zu implementieren (der wiederrum durch Konfiguration per &lt;b&gt;serviceActivations&lt;/b&gt; in
der .config und eigenere factory gestartet wird) bekam ich die Fehlermeldung bei der
Umstellung vom Attribute &lt;b&gt;aspNetCompatibilityEnabled&lt;/b&gt; von &lt;i&gt;"false"&lt;/i&gt; auf &lt;i&gt;"true"&lt;/i&gt; 
das die Assembly 'System.ServiceModel.Activation' nicht gefunden werden konnte. 
&lt;br /&gt;
&lt;br /&gt;
Hier die genaue Fehlermeldung:&lt;br /&gt;
&lt;br /&gt;
 System.IO.FileNotFoundException: &lt;b&gt;Could not load file or assembly 'System.ServiceModel.Activation'
or one of its dependencies.&lt;/b&gt; The system cannot find the file specified.&lt;br /&gt;
File name: 'System.ServiceModel.Activation'&lt;br /&gt;
   at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError,
Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, Boolean
loadTypeFromPartialName, ObjectHandleOnStack type)&lt;br /&gt;
   at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError,
Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark&amp; stackMark, Boolean
loadTypeFromPartialName)&lt;br /&gt;
   at System.Type.GetType(String typeName, Boolean throwOnError, Boolean
ignoreCase)&lt;br /&gt;
   at System.Web.Compilation.BuildManager.GetType(String typeName, Boolean
throwOnError, Boolean ignoreCase)&lt;br /&gt;
   at System.Web.Configuration.HandlerFactoryCache.GetTypeWithAssert(String
type)&lt;br /&gt;
   at System.Web.Configuration.HandlerFactoryCache.GetHandlerType(String
type)&lt;br /&gt;
   at System.Web.Configuration.HandlerFactoryCache..ctor(String type)&lt;br /&gt;
   at System.Web.HttpApplication.GetFactory(String type)&lt;br /&gt;
   at System.Web.HttpApplication.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()&lt;br /&gt;
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&amp;
completedSynchronously)&lt;br /&gt;
&lt;br /&gt;
=== Pre-bind state information ===&lt;br /&gt;
LOG: User = user&lt;br /&gt;
LOG: DisplayName = System.ServiceModel.Activation&lt;br /&gt;
 (Partial)&lt;br /&gt;
WRN: Partial binding information was supplied for an assembly:&lt;br /&gt;
WRN: Assembly Name: System.ServiceModel.Activation | Domain ID: 2&lt;br /&gt;
WRN: A partial bind occurs when only part of the assembly display name is provided.&lt;br /&gt;
WRN: This might result in the binder loading an incorrect assembly.&lt;br /&gt;
WRN: It is recommended to provide a fully specified textual identity for the assembly,&lt;br /&gt;
WRN: that consists of the simple name, version, culture, and public key token.&lt;br /&gt;
WRN: See whitepaper http://go.microsoft.com/fwlink/?LinkId=109270 for more information
and common solutions to this issue.&lt;br /&gt;
LOG: Appbase = file:///xxxxx/&lt;br /&gt;
LOG: Initial PrivatePath xxxx\bin&lt;br /&gt;
Calling assembly : (Unknown).&lt;br /&gt;
===&lt;br /&gt;
LOG: This bind starts in default load context.&lt;br /&gt;
LOG: Using application configuration file: xxxx\web.config&lt;br /&gt;
LOG: Using host configuration file: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet.config&lt;br /&gt;
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.&lt;br /&gt;
LOG: Policy not being applied to reference at this time (private, custom, partial,
or location-based assembly bind).&lt;br /&gt;
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary
ASP.NET Files/root/3d7bd35f/452e5631/System.ServiceModel.Activation.DLL.&lt;br /&gt;
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary
ASP.NET Files/root/3d7bd35f/452e5631/System.ServiceModel.Activation/System.ServiceModel.Activation.DLL.&lt;br /&gt;
LOG: Attempting download of new URL file:///xxxx/bin/System.ServiceModel.Activation.DLL.&lt;br /&gt;
LOG: Attempting download of new URL file:///Dxxxx/bin/System.ServiceModel.Activation/System.ServiceModel.Activation.DLL.&lt;br /&gt;
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary
ASP.NET Files/root/3d7bd35f/452e5631/System.ServiceModel.Activation.EXE.&lt;br /&gt;
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary
ASP.NET Files/root/3d7bd35f/452e5631/System.ServiceModel.Activation/System.ServiceModel.Activation.EXE.&lt;br /&gt;
LOG: Attempting download of new URL file:///xxxx/bin/System.ServiceModel.Activation.EXE.&lt;br /&gt;
LOG: Attempting download of new URL file:///xxxxx/bin/System.ServiceModel.Activation/System.ServiceModel.Activation.EXE.&lt;br /&gt;
 - Thread: 15&lt;br /&gt;
&lt;br /&gt;
Das Problem liegt an einem Eintrag in der &lt;b&gt;web.config&lt;/b&gt;, denn dort hatte ich unter &lt;b&gt;system.webserver&lt;/b&gt; -&gt; &lt;b&gt;handlers &lt;/b&gt;folgenden
Eintrag hinzugefügt:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;&lt;add
name=&lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"svc"&lt;/span&gt; path=&lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"*.svc"&lt;/span&gt; verb=&lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"*"&lt;/span&gt; type=&lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"System.ServiceModel.Activation.ServiceHttpHandlerFactory,&lt;br /&gt;
 System.ServiceModel.Activation"&lt;/span&gt;/&gt;&lt;/span&gt;&lt;/pre&gt;Nach dem Ändern bzw.
Ergänzen diesers Eintrages: 
&lt;br /&gt;
&lt;pre&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;&lt;add
name=&lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"svc"&lt;/span&gt; path=&lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"*.svc"&lt;/span&gt; verb=&lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"*"&lt;/span&gt; type=&lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"System.ServiceModel.Activation.ServiceHttpHandlerFactory,&lt;br /&gt;
 System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"&lt;/span&gt;
&lt;br /&gt;
 preCondition=&lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"integratedMode,runtimeVersionv4.0"&lt;/span&gt; /&gt;&lt;/span&gt;&lt;/pre&gt;Funktioniert
auch wieder die Aktivierung vom WCF basierten REST Service.&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=260f952d-8750-41fa-b925-d22dbaef7953" /&gt;</description><thumbnail>http://www.dotnetnukeblogs.com/Portals/5/-1</thumbnail><dc:creator>.NET - Software &amp; DotNetNuke (DNN) Blog</dc:creator><pubDate>Wed, 19 Jan 2011 10:44:55 GMT</pubDate><guid isPermaLink="false">df33bbc6-c58d-41f3-884a-071f22406732</guid></item><item><title>Aktuelle Jahreszahl in einem DotnetNuke Copyright Skin Objekt</title><link>http://www.dotnetnukeblogs.com/Home/Articles/itemId/33070/Aktuelle-Jahreszahl-in-einem-DotnetNuke-Copyright</link><description>&lt;p&gt;&lt;a class="twitter-share-button" data-count="vertical" data-via="eagleworx" data-lang="de" href="http://twitter.com/share"&gt;Tweet&lt;/a&gt;&lt;/p&gt;
&lt;script type="text/javascript" src="http://platform.twitter.com/widgets.js"&gt;&lt;/script&gt;
&lt;p&gt;Aktuelle Jahreszahl in einem DotnetNuke Copyright Skin Objekt&lt;/p&gt;&lt;a href=http://www.eagleworx.net/DotNetNuke/tabid/493/EntryId/134/Aktuelle-Jahreszahl-in-einem-DotnetNuke-Copyright-Skin-Objekt.aspx&gt;More...&lt;/a&gt;</description><thumbnail /><dc:creator>Eagleworx DNN Tips and Tricks</dc:creator><pubDate>Tue, 11 Jan 2011 10:32:00 GMT</pubDate><guid isPermaLink="false">3a549bd5-8acd-4263-8fa4-550b743de955</guid></item></channel></rss>

