﻿<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Archive</title>
    <description>Weblog auf DNNPortal der Deutschen DotNetNuke Community</description>
    <link>http://www.dnnportal.de/Weblog/tabid/177/Default.aspx?BlogDate=2005-05-31</link>
    <language>de-DE</language>
    <managingEditor>hp@schelian.de</managingEditor>
    <webMaster>hp@schelian.de</webMaster>
    <pubDate>Tue, 07 Feb 2012 10:39:21 GMT</pubDate>
    <lastBuildDate>Tue, 07 Feb 2012 10:39:21 GMT</lastBuildDate>
    <docs>http://backend.userland.com/rss</docs>
    <generator>Blog RSS Generator Version 3.2.0.29758</generator>
    <item>
      <title>DNNSubscriber Version 3.0.2 (Update)</title>
      <description>
		&lt;p&gt;Vor einigen Tagen hat mir Daniel Müller per Email ein Problem (und auch gleich die Lösung) mit dem Modul DNNSubscriber gesendet.&lt;/p&gt;
		&lt;p&gt;Das Problem (ein Performance Problem) hat zwar keine echten Auswirkungen auf die Funktionstüchtigkeit des Moduls, allerdings könnte man das Problem als echte Performance Bremse ansehen.&lt;/p&gt;
		&lt;p&gt;Folgendes habe ich da (warum auch immer) in der Methode IsUserInRole eingebaut:&lt;/p&gt;
		&lt;p&gt;
				&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;protected&lt;/span&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;bool&lt;/span&gt; IsUserInRole(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; RoleName)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;RoleController objRoles &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; RoleController();&lt;br /&gt;&lt;br /&gt;ArrayList strUserRole;&lt;br /&gt;&lt;br /&gt;strUserRole &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; objRoles.GetUsersInRole(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;this&lt;/span&gt;.PortalId,RoleName);&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;foreach&lt;/span&gt;(UserRoleInfo uri &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;in&lt;/span&gt; strUserRole)&lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;if&lt;/span&gt; (uri.UserID == &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;this&lt;/span&gt;.UserId)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;return&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;return&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;Warum auch immer ich diesen Code eingebaut habe (eventuell war es wieder mal zu spät) der Code ist natürlich eine Peformance Bremse wenn einige hundert oder tausend Benutzer registriert sind.&lt;/p&gt;
		&lt;p&gt;Der Code wird also wie folgt abgeändert:&lt;/p&gt;
		&lt;p&gt;
				&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;protected&lt;/span&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;bool&lt;/span&gt; IsUserInRole(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; RoleName)&lt;br /&gt;{&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;return&lt;/span&gt; DotNetNuke.Security.PortalSecurity.IsInRole(RoleName) ;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;Wie man sieht, &lt;strong&gt;kürzer&lt;/strong&gt;, &lt;strong&gt;besser&lt;/strong&gt;, &lt;strong&gt;effektiver&lt;/strong&gt;.&lt;/p&gt;
		&lt;p&gt;Danke Daniel.&lt;/p&gt;
		&lt;p&gt;Die neue Version 3.0.2 ist ab sofort im &lt;a class="" title="" href="http://www.dnnportal.de/Downloads/tabid/176/Default.aspx" target=""&gt;Download Bereich verfügbar&lt;/a&gt;.&lt;/p&gt;
</description>
      <link>http://www.dnnportal.de/Weblog/tabid/177/EntryID/130/Default.aspx</link>
      <author>hp@dnnportal.de</author>
      <comments>http://www.dnnportal.de/Weblog/tabid/177/EntryID/130/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.dnnportal.de/Default.aspx?tabid=177&amp;EntryID=130</guid>
      <pubDate>Fri, 27 May 2005 03:22:00 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.dnnportal.de/DesktopModules/Blog/Trackback.aspx?id=130</trackback:ping>
    </item>
    <item>
      <title>DotNetNuke.Com läuft unter Version 3.1.0</title>
      <description>
		&lt;p&gt;Nach dem Motto "Eat your own Dogfood" läuft das Portal DotNetNuke.Com seit Gestern Abend mit der Version 3.1.0.&lt;/p&gt;
		&lt;p&gt;Somit kann erwartet werden, dass die Version 3.1.0 wohl bald als Download verfügbar sein wird.&lt;/p&gt;
		&lt;p&gt;Wirkliche Änderungen gab es in der Version 3.1.0 nicht als einzige echte Erweiterung wurde die Unterstützung für Web Farms hinzugefügt.&lt;/p&gt;
		&lt;p&gt;Und sonst gab es wohl ganz viel Bug Fixing. Wer mehr darüber erfahren möchte was denn alles so getan wurde an der Version 3.1.0 kann sich die Roadmap auf Gemini anschauen.&lt;/p&gt;
		&lt;p&gt;
				&lt;a class="" title="" href="http://support.dotnetnuke.com/project/RoadMap.aspx?PROJID=2" target=""&gt;Hier der Link&lt;/a&gt;
		&lt;/p&gt;
</description>
      <link>http://www.dnnportal.de/Weblog/tabid/177/EntryID/103/Default.aspx</link>
      <author>hp@dnnportal.de</author>
      <comments>http://www.dnnportal.de/Weblog/tabid/177/EntryID/103/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.dnnportal.de/Default.aspx?tabid=177&amp;EntryID=103</guid>
      <pubDate>Fri, 27 May 2005 01:13:00 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.dnnportal.de/DesktopModules/Blog/Trackback.aspx?id=103</trackback:ping>
    </item>
    <item>
      <title>YAF und DotNetNuke 3.X Critial Error</title>
      <description>
		&lt;p&gt;Nachdem ich vor einigen Wochen das DNNPortal auf DotNetNuke 3.X umgestellt habe und in diesem Zuge auch das YAF Forum auf eine neue Version aktualisieren musste, bekam ich in den letzte Wochen immer wieder mal eine Meldung von einem Besucher, dass wenn er das Forum aufruft einen Kritischen Fehler (Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.&lt;/p&gt;
		&lt;p&gt;Trotzt aller Versuche ist es mir nicht gelungen diesen Fehler zu reproduzieren.&lt;/p&gt;
		&lt;p&gt;Gestern nun habe ich von Ueli (Ulrich Jenzer) den Entscheidenden Hinweis bekommen.&lt;/p&gt;
		&lt;p&gt;Wie mir Ueli in einem Mail mitgeteilt hat, tritt der Fehler dann auf, wenn in den Regions und Sprachoptionen von Windows z.B. Deutsch (Schweiz) eingestellt ist. &lt;/p&gt;
		&lt;p&gt;Mit diesem Wissen konnte ich nun das Problem auch auf meinem Testsystem reproduzieren.&lt;/p&gt;
		&lt;p&gt;Also schnell mal (von wegen schnell) eine Entwicklungsumgebung für das YAF Forum aufgebaut und ran an den Debugger.&lt;/p&gt;
		&lt;p&gt;Es war sehr schnell klar das der Fehler in der Lokalisierungs Funktion von DotNetNuke erzeugt wird, nur da konnte der Fehler ja eigentlich nicht liegen. Da für das YAF Forum unter DotNetNuke die Lokalisierung von DotNetNuke eigentlich gar nicht greift war ich ziemlich überrascht.&lt;/p&gt;
		&lt;p&gt;Nach einigen vergeblichen Versuchen den Fehler einzukreisen ist es mir dann doch gelungen.&lt;/p&gt;
		&lt;p&gt;Schauen wir uns doch mal das Problem und die Load Methode der Klasse ForumPage an:&lt;/p&gt;
		&lt;p&gt;Zur besseren Übersicht habe ich hier nur der ersten Teil (der ist auch entscheidend) dargestellt.&lt;/p&gt;
		&lt;p&gt;
				&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;private&lt;/span&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; ForumPage_Load(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;object&lt;/span&gt; sender, System.EventArgs e) &lt;br /&gt;{&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;if&lt;/span&gt;(m_bNoDataBase)&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;return&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;#if&lt;/span&gt; DEBUG&lt;br /&gt;QueryCounter.Reset();&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;#endif&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;// Set the culture and UI culture to the browser's accept language&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;try&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; sCulture &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;""&lt;/span&gt;;&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; [] sTmp &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; HttpContext.Current.Request.UserLanguages;&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;if&lt;/span&gt; (sTmp !&lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;null&lt;/span&gt;)&lt;br /&gt;{&lt;br /&gt;sCulture &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; sTmp[0];&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;if&lt;/span&gt;(sCulture.IndexOf(';')&gt;=0)&lt;br /&gt;{&lt;br /&gt;sCulture &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; sCulture.Substring(0, sCulture.IndexOf(';'));&lt;br /&gt;}&lt;br /&gt;} &lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;else&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;sCulture &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"en-US"&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Thread.CurrentThread.CurrentCulture &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; CultureInfo.CreateSpecificCulture(sCulture);&lt;br /&gt;Thread.CurrentThread.CurrentUICulture &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; CultureInfo(sCulture);&lt;br /&gt;}&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;#if&lt;/span&gt; DEBUG&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;catch&lt;/span&gt;(Exception ex)&lt;br /&gt;{&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;throw&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; ApplicationException(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"Error getting User Language."&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;+&lt;/span&gt; Environment.NewLine &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;+&lt;/span&gt; ex.ToString());&lt;br /&gt;}&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;#else&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;catch&lt;/span&gt;(Exception)&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;#endif&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;Also was geschieht denn hier in dieser Methode:&lt;/p&gt;
		&lt;p&gt;Die Culture des aktuellen Thread wird auf die Culture des Benutzers gesetzt. Das sind die lokalen Einstellungen des Besuchers also zum Beispiel de-CH oder en-CA.&lt;/p&gt;
		&lt;p&gt;Das ist sicherlich auch schön und gut für eine YAF Installation die nicht unter DNN läuft, aber für eine in DNN integrierte Version ist das tödlich. &lt;/p&gt;
		&lt;p&gt;Warum tödlich: Eigentlich ganz einfach, in DNN wird die Culture bereits durch die Standardeinstellung für das Portal oder falls es ein registrierte Benutzer ist aus den Profileinstellungen des Benutzer ermittelt. Mit dieser Information wird die Culture des aktuellen Thread gesetzt. Nun verwenden alle Loaklisierungsfunktionen genau diese Information um eine in DNN installierte Resource Datei zu verwenden und die Sprachspezifischen Texte auszugeben. Genau das schlägt aber fehl, wenn YAF hier an dieser Stelle die Culture des aktuellen Thread auf eine nicht in DNN installierte Sprache einstellt.&lt;/p&gt;
		&lt;p&gt;Also wie sieht die Lösung aus, ganz einfach:&lt;/p&gt;
		&lt;p&gt;Wir kömmentieren einfach den gesamten Teil für das setzen der Culture für den aktiven Thread aus.&lt;/p&gt;
		&lt;p&gt;Das sieht dann so aus:&lt;/p&gt;
		&lt;p&gt;
				&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;// try &lt;/span&gt;
						&lt;br /&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;// {&lt;/span&gt;
						&lt;br /&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;// string sCulture = "";&lt;/span&gt;
						&lt;br /&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;// string [] sTmp = HttpContext.Current.Request.UserLanguages;&lt;/span&gt;
						&lt;br /&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;// if (sTmp != null)&lt;/span&gt;
						&lt;br /&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;// {&lt;/span&gt;
						&lt;br /&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;// sCulture = sTmp[0];&lt;/span&gt;
						&lt;br /&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;// if(sCulture.IndexOf(';')&gt;=0)&lt;/span&gt;
						&lt;br /&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;// {&lt;/span&gt;
						&lt;br /&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;// sCulture = sCulture.Substring(0, sCulture.IndexOf(';'));&lt;/span&gt;
						&lt;br /&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;// }&lt;/span&gt;
						&lt;br /&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;// } &lt;/span&gt;
						&lt;br /&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;// else &lt;/span&gt;
						&lt;br /&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;// {&lt;/span&gt;
						&lt;br /&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;// sCulture = "en-US";&lt;/span&gt;
						&lt;br /&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;// }&lt;/span&gt;
						&lt;br /&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//&lt;/span&gt;
						&lt;br /&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;// Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(sCulture);&lt;/span&gt;
						&lt;br /&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;// Thread.CurrentThread.CurrentUICulture = new CultureInfo(sCulture);&lt;/span&gt;
						&lt;br /&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;// }&lt;/span&gt;
						&lt;br /&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//#if DEBUG&lt;/span&gt;
						&lt;br /&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;// catch(Exception ex)&lt;/span&gt;
						&lt;br /&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;// {&lt;/span&gt;
						&lt;br /&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;// throw new ApplicationException("Error getting User Language." + Environment.NewLine + ex.ToString());&lt;/span&gt;
						&lt;br /&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;// }&lt;/span&gt;
						&lt;br /&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//#else&lt;/span&gt;
						&lt;br /&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;// catch(Exception)&lt;/span&gt;
						&lt;br /&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;// {&lt;/span&gt;
						&lt;br /&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;// }&lt;/span&gt;
						&lt;br /&gt;
						&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//#endif&lt;/span&gt;
						&lt;br /&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;Jetzt noch schnell die YAF.DLL neu kompiliert und das Problem ist ein für allemal beseitigt.&lt;/p&gt;
</description>
      <link>http://www.dnnportal.de/Weblog/tabid/177/EntryID/20/Default.aspx</link>
      <author>hp@schelian.de</author>
      <comments>http://www.dnnportal.de/Weblog/tabid/177/EntryID/20/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.dnnportal.de/Default.aspx?tabid=177&amp;EntryID=20</guid>
      <pubDate>Wed, 25 May 2005 08:00:37 GMT</pubDate>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.dnnportal.de/DesktopModules/Blog/Trackback.aspx?id=20</trackback:ping>
    </item>
    <item>
      <title>Und die Datenbank wird größer und größer !</title>
      <description>
		&lt;p&gt;Nach dem Update von DotNetNuke 2.12 auf DotNetNuke 3.0.13 beobachtete ich in den folgenden Wochen ein überdurchschnittliches wachstum der Datenbank.&lt;/p&gt;
		&lt;p&gt;Mit Überdurchschnittlichem wachstum meine ich in nackten Zahlen ausgedrückt:&lt;/p&gt;
		&lt;p&gt;Datenbankgröße beim Upgrade 212 MB. (Das war auch in etwa so vor derm Upgrade)&lt;/p&gt;
		&lt;p&gt;Datenbankgröße 6 Wochen nach dem Update 380 MB&lt;/p&gt;
		&lt;p&gt;Kann es sein, dass ich so fleißig war und fast 170 MB an Content in die Datenbank geschafft habe ? &lt;/p&gt;
		&lt;p&gt;
				&lt;u&gt;Wohl eher nein !&lt;/u&gt;
		&lt;/p&gt;
		&lt;p&gt;Also musste ich mir doch mal die Datenbank genauer ansehen. &lt;/p&gt;
		&lt;p&gt;Bei meiner Untersuchung der Datenbank stellte ich fest dass die Tabelle &lt;em&gt;ScheduleHistory&lt;/em&gt; doch fast 70 MB groß war, und die &lt;em&gt;SiteLog&lt;/em&gt; Tabelle ist auch auf beträchtliche 90 MB angewachsen, leider weiß ich nicht mehr was die während des Updates für eine größe hatte (bin jetzt auch zu faul das Backup auszupacken und irgendwo einzuspielen).&lt;/p&gt;
		&lt;p&gt;Also gut die größe SiteLog kann ich mir auch noch erklären, ich habe auf den drei Hauptportalen die auf dieser Datenbank laufen keine Beschränkung für die Aufbewahrung der Log Informatinen angegeben, also muss diese Tabelle immer weiter wachsen, aber was ist mit dieser ominösen Tabelle ScheduleHistory.&lt;/p&gt;
		&lt;p&gt;Diese Tabelle speichert für jeden Schedule Job der ausgeführt wird einen Protokolleintrag und dass sind wenn man es richtig betrachtet doch eine ganze Menge.&lt;/p&gt;
		&lt;p&gt;Schauen wir uns doch mal die Schedule Einstellungen des Hosts an:&lt;/p&gt;
		&lt;ol&gt;
				&lt;li&gt;DotNetNuke.Entities.Users.PurgeUsersOnline, DotNetNuke aktiv und Jede minute 1 mal. 
&lt;/li&gt;
				&lt;li&gt;DotNetNuke.Services.Log.SiteLog.PurgeSiteLog, DOTNETNUKE aktiv und 1 mal am Tag. 
&lt;/li&gt;
				&lt;li&gt;DotNetNuke.Services.Scheduling.PurgeScheduleHistory, DOTNETNUKE aktiv und alle 12 Stunden. 
&lt;/li&gt;
				&lt;li&gt;DotNetNuke.Services.Log.EventLog.PurgeLogBuffer, DOTNETNUKE aktiv und jede Stunde. 
&lt;/li&gt;
				&lt;li&gt;DotNetNuke.Services.Log.EventLog.SendLogNotifications, DOTNETNUKE aktiv und alle 5 minuten. 
&lt;/li&gt;
				&lt;li&gt;DotNetNuke.Services.Search.SearchEngineScheduler, DOTNETNUKE aktiv und jede Stunde 1 mal. &lt;/li&gt;
		&lt;/ol&gt;
		&lt;p&gt;Wenn wir das mal ein wenig berechnen dann sieht das so aus:&lt;/p&gt;
		&lt;p&gt;Dann haben wir ca. 1500 Eintrgäge je Tag im Protokoll, das macht immerhin 45000 Einträge im Monat 90000 Einträge in 2 Monaten usw.&lt;/p&gt;
		&lt;p&gt;Nach einger Suche ist mir dann aber die Einstellung &lt;img alt="Geben Sie Zeitdauer in Tagen ein, die das Portalprotokoll vorgehalten werden soll." src="http://www.dnnportal.dehttp://www.ihrportal.net/images/help.gif" border="0" /&gt; (Protokollzeitraum in Tagen) in den Erweiterten Einstellungen in den Systemeinstellungen aufgefallen. Hier kann man einstellen für welchen Zeitraum in Tagen die Protokolleinträge in dieser Tabelle gespeichert werden.&lt;/p&gt;
		&lt;p&gt;Also Eintrag von -1 auf 14 eingestellt und einfach gewartet bis der Scheduler die Funktion SiteLog.PurgeSiteLog das nächste mal aufruft und die älteren Einträge (älter als 14 Tage) wurden aus der Tabelle gelöscht.&lt;/p&gt;
		&lt;p&gt;In MB hat das bei mir ca. 40 MB freien Speicherplatz in der Datenbank gebracht.&lt;/p&gt;
		&lt;p&gt; &lt;/p&gt;
</description>
      <link>http://www.dnnportal.de/Weblog/tabid/177/EntryID/21/Default.aspx</link>
      <author>hp@schelian.de</author>
      <comments>http://www.dnnportal.de/Weblog/tabid/177/EntryID/21/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.dnnportal.de/Default.aspx?tabid=177&amp;EntryID=21</guid>
      <pubDate>Mon, 23 May 2005 11:35:36 GMT</pubDate>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.dnnportal.de/DesktopModules/Blog/Trackback.aspx?id=21</trackback:ping>
    </item>
    <item>
      <title>DotNetNuke Gallerie Neue Version verfügbar</title>
      <description>
		&lt;p&gt;Seit Heute ist eine neue Version des Gallery Moduls auf DotNetNuke.com verfügbar. Das Modul ist weiterhin Beta und ist als installierbares PA und als Source Code verfügbar.&lt;/p&gt;
		&lt;p&gt;
				&lt;a class="" title="DotNetNuke.Com" href="http://www.dotnetnuke.com" target="_blank"&gt;http://www.dotnetnuke.com&lt;/a&gt;
		&lt;/p&gt;
</description>
      <link>http://www.dnnportal.de/Weblog/tabid/177/EntryID/104/Default.aspx</link>
      <author>hp@dnnportal.de</author>
      <comments>http://www.dnnportal.de/Weblog/tabid/177/EntryID/104/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.dnnportal.de/Default.aspx?tabid=177&amp;EntryID=104</guid>
      <pubDate>Thu, 05 May 2005 03:25:00 GMT</pubDate>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.dnnportal.de/DesktopModules/Blog/Trackback.aspx?id=104</trackback:ping>
    </item>
    <item>
      <title>Neue Versionen Forum/Blog und Gallerie verfügbar</title>
      <description>
		&lt;p&gt;Seit Heute stehen auf &lt;a class="" title="" href="http://www.dotnetnuke.com" target=""&gt;http://www.dotnetnuke.com&lt;/a&gt; neue Versionen der Module Forum/Blog und Gallery zum Download bereit.&lt;/p&gt;
</description>
      <link>http://www.dnnportal.de/Weblog/tabid/177/EntryID/105/Default.aspx</link>
      <author>hp@dnnportal.de</author>
      <comments>http://www.dnnportal.de/Weblog/tabid/177/EntryID/105/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.dnnportal.de/Default.aspx?tabid=177&amp;EntryID=105</guid>
      <pubDate>Tue, 03 May 2005 16:38:00 GMT</pubDate>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://www.dnnportal.de/DesktopModules/Blog/Trackback.aspx?id=105</trackback:ping>
    </item>
    <item>
      <title>Skin Problem auf DNNPortal.DE</title>
      <description>
		&lt;p&gt;Wegen eines aktuellen Problems mit dem Skin von DNNPortal, musste ich das Skin kurzfristig auf ein Standard Skin ändern.&lt;/p&gt;
		&lt;p&gt;Es wird Heute wegen der Skinänderung zwischendurch immer wieder zu Skin Änderungen kommen.&lt;/p&gt;
		&lt;p&gt;Ich bitte für diese Maßnahme um Verständniß&lt;/p&gt;
</description>
      <link>http://www.dnnportal.de/Weblog/tabid/177/EntryID/22/Default.aspx</link>
      <author>hp@schelian.de</author>
      <comments>http://www.dnnportal.de/Weblog/tabid/177/EntryID/22/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.dnnportal.de/Default.aspx?tabid=177&amp;EntryID=22</guid>
      <pubDate>Tue, 03 May 2005 04:53:00 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.dnnportal.de/DesktopModules/Blog/Trackback.aspx?id=22</trackback:ping>
    </item>
    <item>
      <title>Registrieren eines PA (DotNetNuke Modul) in DotNetNuke 3.X</title>
      <description>
		&lt;p&gt;Als Fortsetzung des Lernvideos  "&lt;em&gt;PA Erstellung mit DNNJungle Templates"&lt;/em&gt;&lt;font color="#333333" size="2"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/font&gt;habe ich ein weiteres Lernvideo erstellt.&lt;/p&gt;
		&lt;p&gt;In diesem fortführenden Lernvideo &lt;em&gt;"Registrieren eines Private Assembly"&lt;/em&gt; wird demonstriert wie man ein DotNetNuke Modul (Private Assembly) unter DotNetNuke 3.X manuell registriert.&lt;/p&gt;
		&lt;p&gt;Die manuelle Registrierung eines Moduls ist notwendig wenn Sie eigene Module für DotNetNuke entwickeln wollen.&lt;/p&gt;
		&lt;p&gt;Das Lernvideo ist unter dem Titel:&lt;/p&gt;
		&lt;p&gt;
				&lt;span class="Head"&gt;
						&lt;strong&gt;Lernvideo Registrieren eines Private Assembly  &lt;/strong&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;im &lt;a class="" title="" href="http://www.dnnportal.de/Downloads/tabid/176/Default.aspx" target=""&gt;Download Bereich&lt;/a&gt; bereitgestellt.&lt;/p&gt;
		&lt;p&gt;Das Lernvideo ist als Flash Film erstellt und liegt kompiliert in direkt ausführbarer Version vor.&lt;/p&gt;
		&lt;p&gt;Laden Sie einfach das ZIP File aus dem Downloadbereich herunter und starten die darin enthaltene EXE Datei.&lt;/p&gt;
</description>
      <link>http://www.dnnportal.de/Weblog/tabid/177/EntryID/125/Default.aspx</link>
      <author>hp@dnnportal.de</author>
      <comments>http://www.dnnportal.de/Weblog/tabid/177/EntryID/125/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.dnnportal.de/Default.aspx?tabid=177&amp;EntryID=125</guid>
      <pubDate>Mon, 02 May 2005 04:58:00 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.dnnportal.de/DesktopModules/Blog/Trackback.aspx?id=125</trackback:ping>
    </item>
    <item>
      <title>PA Erstellung mit DNNJungle Templates</title>
      <description>
		&lt;p&gt;Nachdem ich immer wieder gefragt werde wie man den am besten beginnt um ein DotNetnuke 3.X Modul (Private Assembly) zu erstellen, habe ich nun auf Basis der DNNJungle Templates für DotNetNuke 3.X ein Lernvideo erstellt, in dem die Grundsätzliche Erstellung mit den Templates in Visual Studio erläutert wird.&lt;/p&gt;
		&lt;p&gt;Das Lernvideo ist unter dem Titel:&lt;/p&gt;
		&lt;p&gt;
				&lt;span class="Head"&gt;
						&lt;strong&gt;Lernvideo PA Erstellung mit DNNJungle Templates&lt;/strong&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;im &lt;a class="" title="" href="http://www.dnnportal.de/Downloads/tabid/176/Default.aspx" target=""&gt;Download Bereich&lt;/a&gt; bereitgestellt.&lt;/p&gt;
		&lt;p&gt;Das Lernvideo ist als Flash Film erstellt und liegt kompiliert in direkt ausführbarer Version vor.&lt;/p&gt;
		&lt;p&gt;Laden Sie einfach das ZIP File aus dem Downloadbereich herunter und starten die darin enthaltene EXE Datei.&lt;/p&gt;
</description>
      <link>http://www.dnnportal.de/Weblog/tabid/177/EntryID/126/Default.aspx</link>
      <author>hp@dnnportal.de</author>
      <comments>http://www.dnnportal.de/Weblog/tabid/177/EntryID/126/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.dnnportal.de/Default.aspx?tabid=177&amp;EntryID=126</guid>
      <pubDate>Mon, 02 May 2005 02:10:00 GMT</pubDate>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.dnnportal.de/DesktopModules/Blog/Trackback.aspx?id=126</trackback:ping>
    </item>
    <item>
      <title>NewBlog Version 3.1.5 (Erstes Update)</title>
      <description>
		&lt;p&gt;
				&lt;span class="ItemTitle"&gt;Ca. 6 Wochen nach dem erste offiziellen Release geht Heute das erste Update Version 3.1.5) von NewBlog an den Start. &lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;
				&lt;span class="ItemTitle"&gt;
						&lt;strong&gt;NEUE FEATURE: &lt;/strong&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;ul&gt;
				&lt;li&gt;
						&lt;span class="ItemTitle"&gt;Eintrags bezogene Bilder und Attachment (mit Upload)&lt;/span&gt;
				&lt;/li&gt;
		&lt;/ul&gt;
		&lt;p&gt;
				&lt;span class="ItemTitle"&gt;
						&lt;strong&gt;NEUE SPRACHEN: &lt;/strong&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;ul&gt;
				&lt;li&gt;
						&lt;span class="ItemTitle"&gt;Sprachfiles Rusisch&lt;/span&gt;
				&lt;/li&gt;
				&lt;li&gt;
						&lt;span class="ItemTitle"&gt;Sprachfiles Spanisch&lt;/span&gt;
				&lt;/li&gt;
		&lt;/ul&gt;
		&lt;p&gt;
				&lt;span class="ItemTitle"&gt;
						&lt;strong&gt;FEHLERBEREINIGUNG: &lt;/strong&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;ul&gt;
				&lt;span class="ItemTitle"&gt;
						&lt;span class="ItemTitle"&gt;
								&lt;ul&gt;
										&lt;li&gt;
												&lt;span class="ItemTitle"&gt;Datumswerte nun alle Universal Time&lt;/span&gt; &lt;span class="ItemTitle"&gt;&lt;li&gt;Permalink jetzt auch Spider freundliche URL 
&lt;/li&gt;&lt;li&gt;Blog Beschreibung nun validiert (Pflichtfeld)  
&lt;/li&gt;&lt;li&gt;Multi/Single Blog Einstellungen entfernt, Einstellungen erfolgen über Berchtigungen 
&lt;/li&gt;&lt;li&gt;Zusätzlich Beschreibung zu den Upload Optionen hinzugefügt  
&lt;/li&gt;&lt;li&gt;URL im Notification Email berichtigt  
&lt;/li&gt;&lt;li&gt;Kommentar Link hat mit SFU nicht funktioniert 
&lt;/li&gt;&lt;li&gt;Exception Handling in URI Funktionen hinzugefügt 
&lt;/li&gt;&lt;li&gt;Installationsroutine geändert, nun mit Resource.ZIP 
&lt;/li&gt;&lt;li&gt;Eintrag bearbeiten Link im View Vontrol hinzugefügt 
&lt;/li&gt;&lt;li&gt;Fehlende Lokalisierung bei Kommentar Benutzernamen hinzugefügt 
&lt;/li&gt;&lt;li&gt;Löschen von Anonymen Kommentaren berichtigt 
&lt;/li&gt;&lt;li&gt;Fehler Objekt ist nicht gesetzt bei Blog Ländereinstellungen beseitigt &lt;/li&gt;&lt;/span&gt;&lt;/li&gt;
								&lt;/ul&gt;
						&lt;/span&gt;
				&lt;/span&gt;
		&lt;/ul&gt;
</description>
      <link>http://www.dnnportal.de/Weblog/tabid/177/EntryID/131/Default.aspx</link>
      <author>hp@dnnportal.de</author>
      <comments>http://www.dnnportal.de/Weblog/tabid/177/EntryID/131/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.dnnportal.de/Default.aspx?tabid=177&amp;EntryID=131</guid>
      <pubDate>Fri, 29 Apr 2005 15:16:00 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.dnnportal.de/DesktopModules/Blog/Trackback.aspx?id=131</trackback:ping>
    </item>
  </channel>
</rss>
