.NET-Software-Entwicklung - DotNetNuke - Business-Develoment
# Sunday, July 03, 2005

Host / Admin Passwort

In der letzten Zeit gab es immer wieder Probleme mit den Passwörtern von Host / Admin Accounts in DotNetNuke.

Mit der Version DNN 3.0.13 hat das Core-Team von DotNetNuke, die Schlüssel für die Passwort Verschlüsselung in die Web.config ausgelagert.
Durch ein Update werden die Schlüssel jedes Mal überschrieben bzw. neu erzeugt.

Sollte man nun keine Datensicherung haben (was eigentlich eine Totsünde ist!), gibt es zumindest einen Trick, wie man Host und Admin Passwörter manuell zurücksetzen kann.

  1. Einfach als neuen User registrieren und das dort vergeben Passwort sich merken.
  2. Dann in die Datenbank gehen und das Passwort / PasswordSalt (bzw. den Wert der Felder) mit den Werten beim Host und/oder Admin austauschen. Diese Informationen liegen in der Tabelle "aspnet_Membership"....

Somit hat man zumindest den Zugang zu diesen Accounts wieder hergestellt.

Natürlich hilft das einem auch nicht, wenn man keine öffentlichen Registrierungen zulässt und man muss Zugriff auf die Datenbank der DotNetNuke - Installation haben.


Sunday, July 03, 2005 6:23:25 PM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
DotNetNuke
# Monday, June 27, 2005

Benutzerverwaltung / Anmeldedaten speichern

Vor einiger Zeit habe ich bei DotNetNuke einen Fehler in der automatischen Anmeldung festgestellt.

Die User können über den Schalter "Anmeldedaten merken" ein automatisches Login durchführen lassen. Sollte ein Benutzerkonto nun gespert sein (z.B. durch falsche Eingabe von Benutzername / Passwort), dann wird beim LogIn dieses ignoriert und der User kann sich weiterhin automatisch anmelden.

Um das zu umgehen habe ich den Core-Code ein wenig modifiziert (ja ja .. nicht schön und gefällt mir auch selber nicht, war jetzt aber erst mal eine quick-and-dirty Lösung).

In der Klasse "compontens\Users\UserController.vb" die Funktion "GetCurrentUserInfo" modifizieren:

Dim objUser As UserInfo = CType(HttpContext.Current.Items("UserInfo"), UserInfo)
If Not ObjUser Is Nothing Then
Return objUser
Else
Return New UserInfo
End If

Ersetzen durch:

Dim objUser As UserInfo = CType(HttpContext.Current.Items("UserInfo"), UserInfo)
If Not ObjUser Is Nothing Then
If objUser.Membership.LockedOut Then
Dim _portalSettings As PortalSettings = PortalController.GetCurrentPortalSettings

FormsAuthentication.SignOut()

HttpContext.Current.Response.Cookies("portalaliasid").Value = Nothing
HttpContext.Current.Response.Cookies("portalaliasid").Path = "/"
HttpContext.Current.Response.Cookies("portalaliasid").Expires = DateTime.Now.AddYears(-30)

HttpContext.Current.Response.Cookies("portalroles").Value = Nothing
HttpContext.Current.Response.Cookies("portalroles").Path = "/"
HttpContext.Current.Response.Cookies("portalroles").Expires = DateTime.Now.AddYears(-30)

' Redirect browser back to portal
Dim strURL As String = ""
If _portalSettings.HomeTabId <> -1 Then
strURL = NavigateURL(_portalSettings.HomeTabId)
Else
strURL = GetPortalDomainName(_portalSettings.PortalAlias.HTTPAlias, HttpContext.Current.Request)
End If
HttpContext.Current.Response.Redirect(strURL, True)
Else
Return objUser
End If

Else
Return New UserInfo
End If

Dieser Weg ist noch keine wirklich sauber Lösung aber zumindest erst mal ein brauchbarer Bugfix. Wenn ich etwas mehr Luft haben, versuche ich eine andere Lösung zu finden.


Monday, June 27, 2005 3:05:17 PM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
DotNetNuke
# Saturday, June 25, 2005

http compression für DotNetNuke

Für große Seiten kann es hilfreich sein die zu übertragenden Bytes zu komprimieren. Dadurch können die Ladezeit optimiert werden.

Eine HTTPModule für .NET (DotNetNuke) gibt es unter http://www.blowery.org/code/HttpCompressionModule.html.

Die Installation ist sehr einfach und ist innerhalb von wenigen Minuten erledigt.

Zuerst die Dateien in das "\bin" Verzeichnis der Webanwendung kopieren.

  • blowery.Web.HttpCompress.dll
  • blowery.Web.HttpCompress.dll.xml
  • ICSharpCode.SharpZipLib.dll
  • ICSharpCode.SharpZipLib.dll.xml
  • Dann muss die Web.config angepasst werden:

    Im Abschnitt configSection folgendes hinzufügen:

    <sectionGroup name="blowery.web">
     <section name="httpCompress" type="blowery.Web.HttpCompress.SectionHandler,
        blowery.Web.HttpCompress"/>
    </sectionGroup>

    Das httpModul hinzufügen

    <system.web>
    <httpModules>
       <add name="CompressionModule" type="blowery.Web.HttpCompress.HttpModule,
           blowery.web.HttpCompress"/>

    </ httpModules>
    </system.web>

    In die Web.config aber nicht innerhalb der system.web folgende Zeilen einfügen

    <blowery.web>
    <httpCompress preferredAlgorithm="deflate" compressionLevel="high">
        <excludedMimeTypes>
        <add type="image/jpeg"/>
        <add type="image/gif"/>
        </excludedMimeTypes>
        <excludedPaths></excludedPaths>
    </httpCompress>
    </blowery.web>

    Schon ist die Konfiguration abgeschlossen!

    Aber VORSICHT! Bevor ein Update von DotNetNuke eingespielt wird, muss dass httpModul deaktiviert werden.


    Saturday, June 25, 2005 2:50:39 PM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
    DotNetNuke
    # Tuesday, June 21, 2005

    Erstes DNN'ler Treffen

    Eine Microsoft Veranstalltung hat gestern acht Personen zusammengeführt, die sich alle mit dem Thema DotNetNuke beschäftigen.

    Viele kannte man nur aus dem Forum und es war eine sehr gute Gelegenheit mal endlich die Gesichter hinter den Namen zu sehen.

    Kurzentschlossen ist dann nach ein paar Bierchen dieses Bild hier entstanden:

    Die deutsche DotNetNuke-Szene nach dem vierten Bier

    Es war ein sehr netter Abend und schnell waren wir uns einig, dieses in der Zukunft fortzusetzen. Immerhin gibt es eine ganze Menge Stuff rund um DotNetNuke.

    Weiter Kommentare gibt es im unter http://blog.gandke.de und im Forum http://www.dnnportal.de


    Tuesday, June 21, 2005 8:52:30 PM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
    DotNetNuke
    # Wednesday, June 15, 2005

    Alternative zur (FTB) FreeTextBox bei DNN (Dotnetnuke)

    Jeder der mit dem eingebauten WYSIWYG Editor (FreeTextBox) bei DotNetNuke unglücklich ist .. für den gibt es gute Nachrichten. Mittlerweile hat sich einer aus der Community hingesetzt und einen Provider für den OpenSource Editor FCKEditor entwickelt.

    Diesen findet man unter http://dnn.tiendaboliviana.com/web als Download.

    Eine Anleitung für den Einbau des Editors in DotNetNuke findet man unter http://www.dotnetnuke.de/Default.aspx?tabid=163

     


    Wednesday, June 15, 2005 10:23:06 PM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
    DotNetNuke
    # Sunday, June 12, 2005

    DotNetNuke 3.1.0 fehlerbereingte Distribution / mit deuscher Lokalisierung

    Da die DotNetNuke Version 3.1.0 einige Schwierigkeiten und negative Überraschung mit sich bringt, hat sich Hans-Peter von deutschen dnn-portal hingesetzt und eine fehlerbereinigte Version inkl. der deutschen Lokalisierung erstellt.

    Den Download gibt es unter:

    http://www.dnnportal.de/Downloads/tabid/176/Default.aspx


    Sunday, June 12, 2005 10:37:44 AM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
    DotNetNuke
    # Friday, June 10, 2005

    DNN 3.1 Source-Code der Desktopmodule

    Das Core-Team von DotNetNuke hat die Strategie bei den mitgelieferten Modulen geändert. Diese werden jetzt nicht automatish mit DotNetNuke installiert sonden müssen / können  einzeln installiert werden. Dabei müssen diese Module nicht mit der Hand installiert werden sonden einfach in den Ordner Install/Module abgelegt werden.

    Bei der Originalauslieferung liegen die bisherigen Module schon (als ZIP - Datei mit einem dnn-File) in diesem Ordner vor. Auf den ersten Blick sieht man den Source Code nicht mehr. Keine Panik, das Core-Team hat den Source nur in die Datei Projekt.resources versteckt. Einfach in ZIP umbennen, auspacken und glücklich sein!

     


    Friday, June 10, 2005 9:58:48 AM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
    DotNetNuke
    # Thursday, June 09, 2005

    DotNetNuke 3.1

    Nachdem jetzt schon seit ein paar Tagen die DotNetNuke Seite auf der Version 3.1 läuft, gibt es diese Version nun auch endlich als Download.

    Unter www.dotnetnuke.com gibt es die Version DNN 3.1 vom 09.06.2005.

    Da bin ich jetzt aber mal gespannt!


    Thursday, June 09, 2005 8:57:47 PM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
    DotNetNuke
    # Wednesday, June 08, 2005

    DotNetNuke JavaScript alert "Die Internetseite ... kann nicht geöffnet werden"

    In der aktuellen Version von DotNetNuke (DNN 3.0.13) hatte ich vermehrt mit der Fehlermeldung

    "Die Internetseite ... kann nicht angezeigt werde. Vorgange abgebrochen" zu kämpfen!

    Dies Meldung kamm immer in einer JavaScript alert MessageBox und sah so aus:

    Fehler.jpg

    Leider kann man diesen Fehler nicht provozieren und erst recht nicht reproduzieren.

    Mittlerweile habe ich eine Lösung für das Problem:

    Die SolPart-Komponente scheint hier diesen Fehler zu erzeugen und das auch nur im Internet Explorer. In der JavaScript-Datei "spmenu.js" muss einfach eine Zeile verändert werden:

    this.delaySubmenuLoad=(spm_getAttr(o, 'delaySubmenuLoad', '0') != '0' && spm_needsSubMenuDelay());

    ändern in:

    this.delaySubmenuLoad=spm_needsSubMenuDelay();

    Danach war der Fehler bei mir behoben.

    Hoffentlich übernimmt das CoreTeam von DotNetNuke auch diese Änderung in der nächsten Version.


    Wednesday, June 08, 2005 12:28:37 PM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
    DotNetNuke
    # Monday, June 06, 2005

    Breaking Changes bei .NET 2.0

    Microsoft hat eine Liste mit "Breaking Changes" zwischen dem .NET Framework 1.1 und 2.0 Beta 2 sowie den Änderungen von .NET 2.0 Beta 1 zu Beta 2 veröffentlicht.

    Diese Liste steht im Compiled-Help-Format zu Verfügung und enthält außerdem alle Änderungen bei ASP.NET, ADO.NET und Windows Forms.

    Microsoft .NET Framework 1.1 and 2.0 (Beta) Compatibility @ msdn.microsoft.com


    Monday, June 06, 2005 10:56:36 AM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
    .NET
    # Friday, June 03, 2005

    DotNetNuke Controls

    Es lohnt sich doch immer erst mal zu forschen, ob jemand eine Problemstellung schon mal gelöst hat, bevor man etwas selber programmiert. :)

    Heute musste ich zum ersten Mal (in einem DotNetNuke Modul) eine Auswahl von Dateien aus dem Portal vornehmen. Hatte bisher aber mir noch nie angeschaut, wie das so geht. Das Core-Team von DotNetNuke rocks .. die haben natürlich ein sehr coole Komponten geschrieben, um das Problem zu lösen.

    <%@ Register TagPrefix="Portal" TagName="URL" Src="~/controls/URLControl.ascx" %>

    <portal:url id="ctlURL" runat="server" width="300" showtabs="false" showfiles="true" showUrls="false" urltype="F" showlog="false" shownewwindow="false" showtrack="false"/>

    Mit diesen beiden Zeilen kann man folgende Funktionalität in DotNetNuke abbilden:

    • "showfiles" -> Auswahl einer Datei aus dem Portal
    • "showtabs" -> Auswahl einer Seite (Tab) aus dem Portal
    • "showUrls" -> Eingabe einer URL
    • "showlog", "shownewwindow", "shownewwindow" ;-> Die bekanten Einstellungen

    So macht das Entwickln echt Spaß :)


    Friday, June 03, 2005 4:44:03 PM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
    DotNetNuke
    # Monday, May 30, 2005

    Jede Menge Stuff: DotNetNuke / Web Services / NT - Service / Scheduler

    Heute Abend habe ich mal mit ein interessantes Thema beschäftigt - Scheduler-Jobs unter DotNetNuke.

    DotNetNuke im Core einen eigene Implementierung für Scheduler, allerdings laufen diese Jobs im Prozess er Webanwendung. Dieses bedeutet, dass die einzelnen Jobs nur dann ausgeführt werden können, wenn der Hauptprozess der Webanwendung auch läuft. Darauf kann man sich allerdings nicht wirklich verlassen ...

    Aus diesem Grund habe ich eine eigene Architektur entwickelt, bei der man vom Hauptprozess unabhängig ist.

    Folgendes Szenario: Ich möchte jeden Abend um Punkt 21 Uhr eine E-Mail an ganz bestimmt User verschicken.

    In einem Windows NT-Service habe ich einen Scheduler integriert, der je nach Konfiguration zu einem beliebige Zeitpunkt verschiedene Assemblies ausführen kann. Natürlich hätte man auch den Windows internen Scheduler nehmen können aber so habe bin ich etwas flexibler, was die Konfiguration betrifft.

    Wie kommt jetzt dieser Service an Daten von DotNetNuke ran? Nun der Scheduler ruft zu einem ganz bestimmten Zeitpunkt ein Programm auf, dass für den Versand der E-Mail zuständig ist - oder viel mehr das die E-Mails aufbereitet und dann in eine MSMQ schiebt. Die benötigten E-Mailadressen bekommt dieses Programm über einen Web Service der innerhalb der DotNetNuke Webanwendung läuft.
    Bei diesem Web Service handelt es sich lediglich um Schnittstelle, die dann wiederum auf eine typische DotNetNuke Assembly zugreift. Damit ist die Grundarchitektur von DotNetNuke nicht verändert wurden.

    Der Source Code für den Web Service ist wirklich sehr simple:

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Diagnostics;
    using System.Web;
    using System.Web.Services;
    using System.Xml ;
    using System.Xml.Serialization ;
    using Lowfett.Goldmember.WeightProcess.MailNotification.Business ;


    namespace Lowfett.Goldmember.WeightProcess.Webservive.MailNotification
    {
        /// <summary>
        /// Zusammenfassung für Service1.
        /// </summary>
        public class WSMailNotification : System.Web.Services.WebService
        {
            public WSMailNotification()
            {
                //CODEGEN: Dieser Aufruf ist für den ASP.NET-Webdienst-Designer erforderlich.
                InitializeComponent();
            }

            #region Vom Komponenten-Designer generierter Code

            //....
            #endregion

        
            [WebMethod]
            [System.Xml.Serialization.XmlInclude(typeof(MailNotificationInfo))]        
            public ArrayList GetUserToNotify()
            {
                return new MailNotificationController().GetUserToNotify() ; 
            }

        }
    }

    Wichtig ist das die Assembly des Web Service im "bin" Verzeichnis von DotNetNuke liegt - die asmx Datei kann in einem beliebigen Unterverzeichnis liegen.

    Den Source Code für den NT-Service und den Client des Web Services erspare ich mir an dieser Stelle!


    Monday, May 30, 2005 10:59:43 PM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
    DotNetNuke
    # Sunday, May 29, 2005

    dotnetnuke.com wurde auf die Version 3.1 aktuallisiert

    Die Seite www.dotnetnuke.com läuft jetzt mit der noch nicht verfügbaren Version 3.1 von DotNetNuke.

    Das läßt vermuten, dass diese Version von DotNetNuke wohl auch bald zum Download bereit gestellt wird.

    Hauptsächlich wurden in diesem Release Bugfixes eingepflegt. Eine genau Übersicht gibt es unter http://support.dotnetnuke.com....


    Sunday, May 29, 2005 3:21:27 PM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
    DotNetNuke
    # Saturday, May 28, 2005

    Was bedeutet EDV?

    Endlich mal eine Abkürzung die den Kern der Sache trifft:

    EDV = Eh Du Vollidiot

    Jetzt ist nur die Frage ob das auf die Entwickler oder die Anwender bezogen ist ;-)


    Saturday, May 28, 2005 12:46:32 PM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
    Allgemein
    # Friday, May 27, 2005

    Visual Studio .NET IDE for Linux!

    Ohne viele Worte ... http://dev.mainsoft.com/Default.aspx?tabid=45


    Friday, May 27, 2005 6:57:20 PM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
    .NET
    # Thursday, May 26, 2005

    Ermitteln des Speicherplatz von Tabellen im MS SQL-Server

    Leider bietet der Enterprise Manager von MS SQL-Server nicht die Möglichkeit den benötigtem Speicherplatz eine Datenbank anzuzigen.

    Der SQL-Server bietet dafür aber eine Stored Procedure exec sp_MsForEachTable 'sp_spaceused ''?'''

    Möchte man die Größe einer ganz bestimmten Tabelle einer Datenbank im SQL-Server ermitteln dann schaut das so aus:

    user mydb
    exec sp_spaceused 'sitelog'


    Thursday, May 26, 2005 5:41:00 PM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
    Datenbank

    Die Datenbank von DNN ist sehr groß und wächst permanent an!

    Hans-Peter von deutschen DNN-Portal hat dort einen recht interessanten Hinweis gepostest:

    http://www.dnnportal.de/Weblog/tabid/177/EntryID/112/Default.aspx

    Ein Tip an alle DotNetNukler: Überpürft mal ob man wirklich alle Einträge braucht die DotNetNuke dort reinschreibt und vor allem ob und wie lange die Einträge dort gespeichert werden.

    Immerhin hat DotNetNuke die Tabelle SiteLog bei mir auf 10.000.000 (da ist keine Null zu viel) anwachsen lassen. Wie man sich vorstellen kann, kommen da einige MB zusammen.

    Da ist wohl morgen erst mal "Putztag" angesagt und das nicht nur in meiner Wohnung :)


    Thursday, May 26, 2005 3:21:58 AM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
    DotNetNuke
    # Monday, May 23, 2005

    Erzeugen eines kommaseparierte String

    Wie bekommt man aus einem String - Array einen kommaseoarierten String? Wer es braucht bitte:

    Dim commaSeparatedValues As String = _
    String.Join(",", myArrayList.ToArray(String.Empty.GetType()))

    Dazu gibt es es dann auch noch eine Link aus der MSDN.


    Monday, May 23, 2005 8:42:04 AM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
    .NET
    # Sunday, May 22, 2005

    DotNetNuke on DotNetRocks

    DotNetRocks ist eine Radiosendung die sich mit allem rund um das Thema .NET befasst. In einer der letzten Sendungen war ein paar der Köpfe von DotNetNuke als Gäste eingeladen. Dabei handelte es sich um "Jim Duffy" und "Shaun Walker"!

    Wer sich diese Sendung anhören möchte ... hier ist der direkte Link:

    http://www.dotnetrocks.com/default.aspx?showID=113 

    Echt cool ;-)

    Die Inhalte sind:

    • Wichtige Änderungen zwischen der Version 2 und der aktuellen Version 3
    • Der Gedanke von Open Source   
    • Die Zukunft von DotNetNuke

    Sunday, May 22, 2005 12:54:02 AM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
    .NET | DotNetNuke
    # Tuesday, May 17, 2005

    Ermitteln der aktuellen Kalenderwoche

    Wer schon immer mal wissen wollte, wie man .NET (hier am Beispiel von C#), die aktuelle Kalenderwoche ermitellt .. bitteschön hier ein Beispiel:

    using System;
    using System.Globalization ;

    namespace ConsoleApplication1
    {
        class Class1
        {
            [STAThread]
            static void Main(string[] args)
            {
                DateTime dt = DateTime.Now;
                System.Globalization.Calendar objCal = CultureInfo.CurrentCulture.Calendar;    
                int weekofyear = objCal.GetWeekOfYear(dt, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
                
                Console.WriteLine(weekofyear.ToString() ) ;
            }
        }
    }

    Mit dem Objekt objCal ist man z.B. auch in der Lage Schaltjahre zu ermitteln...

    Das war jetzt mal wieder keine wirklicher Quantensprung aber auf Anhieb habe ich es nicht im Netz gefunden. Gehört auf jeden Fall zu Kategorie "Nützlicher Code".


    Tuesday, May 17, 2005 3:00:33 PM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
    .NET