BlogEngine Update 2.5.0.X auf 2.5.011 – Datenbank Update notwendig

Heute Morgen wollte ich „schnell“ meinen BlogEngine betriebenen Blog auf http://blog.schelian.com mit der neuen Version 2.5.0.11 aktualisieren.

Diese Version ist die erste, welche eine komplette Gallery Integration (Installation, Update und löschen) von Paketen enthält.

Da ich einige persönliche Änderungen der BlogEngine vorgenommen habe, musste ich zuerst eine Verschmelzung (Merge) der Original Version 2.5.0.11 mit meiner lokale geänderten Version, die aber schon auf dem Code Version 2.5.0.10 basiert, vornehmen.

Der Merge konnte ohne manuelle Nacharbeiten einfach so durchgeführt werden.

Nach der Aktualisierung meins lokalen Quellcodes habe ich in Visual Studio 2010 einen kurzen Testlauf durchgeführt (mit XML Provider) und konnte keinen Fehler feststellen.

Nun habe ich mein NANT Skript aufgerufen, was mir aus der lokalen Version ein Package zur Aktualisierung meines Servers erstellt.

Das dabei erstellt ZIP File mit der Version 2.5.0.11 (in meiner angepassten Version) dann auf den Server hochgeladen und im Root Verzeichnis der BlogEngine entpackt (natürlich nicht ohne vorher eine Datensicherung durchgeführt zu haben).

Nun den Blog aufgerufen und…..

…. auf den ersten Blick war alles in Ordnung, nur auf den zweiten Blick leider nicht.

Beim Aufruf der Seite Plugins gab es eine Fehlermeldung die sich in weitestem Sinne um folgenden Aufruf gedreht hat.

BlogEngine.Core.Packaging.PackageRepository.GetPackage

Eine kurze Recherche hat das gezeigt, dass das Problem dadurch entsteht, dass diese Methode versucht auf eine Tabelle im SQL Server zuzugreifen, die es „noch“ gar nicht gibt.

Da auf der Codeplex Seite keine Hinweis auf ein erweitertes Datenbankschema zu finden war, hatte ich auch nicht nach einem Skript zur Aktualisierung der Datenbank gesucht.

Es gibt aber tatsächlich ein Script, allerdings mit dem merkwürdigen Zukunftsweisenden Namen „MSSQLUpgradeFrom2.5to2.6„, also einer Aktualisierung die erst beim Update der BE von 2.5 auf 2.6 notwendig sein soll.

Aber gut, es ist nun mal so, dass folgendes Script schon bei einem Update einer Version 2.5.0.X auf 2.5.0.11 notwendig ist:

SET CONCAT_NULL_YIELDS_NULL, ANSI_NULLS, ANSI_PADDING, QUOTED_IDENTIFIER, ANSI_WARNINGS, ARITHABORT ON
SET NUMERIC_ROUNDABORT, IMPLICIT_TRANSACTIONS, XACT_ABORT OFF
GO

--
-- Create table "dbo.be_Packages"
--
CREATE TABLE dbo.be_Packages (
  [PackageId] nvarchar(128) NOT NULL,
  [Version] nvarchar(128) NOT NULL
)
GO

--
-- Create table "dbo.be_PackageFiles"
--
CREATE TABLE dbo.be_PackageFiles (
  [PackageId] nvarchar(128) NOT NULL,
  [FileOrder] int NOT NULL,
  [FilePath] nvarchar(255) NOT NULL,
  [IsDirectory] bit NOT NULL
)
GO

Nachdem ich diese Skript auf der Datenbank ausgeführt habe, war der Fehler behoben und das Update auf Version 2.5.0.11 erfolgreich abegschlossen.

BlogEngine.NET 2.5 RC – Ein klein wenig Enttäuschung kann ich nicht verbergen

Ich glaube nach der Überschrift sollte ich zuerst noch einmal klar stellen, dass ich Pro BlogEngine.NET eingestellt bin, auch wenn man das anhand der Überschrift nicht denken könnte.

Wer meinen Blog schon länger verfolgt weiß aber, dass eher das genaue Gegenteil der Fall ist. Sonst hätte ich sicherlich nicht zusammen mit zwei Kollegen die „Deutschsprachige Community Plattform für BlogEngine.NET“ ins leben gerufen.

Nachdem ich mir mit der Community Plattform auch ein Ziel gesetzt habe, das wie folgt lautet:

Die BlogEngine.NET zu einer echten alternative zu WordPress im Deutschsprachigen Raum anzusiedeln.

Bin ich aber über die heutige Entwicklung,  die aus dem aktuellen RC und der aktualisierten Roadmap hervorgeht, eben etwas enttäuscht.

Hier zuerst einmal die Feature der neuen Version 2,5 die seit Gestern als  RC verfügbar ist

  • Upgraded to .NET 4.0
  • Multiple Blogs in Single Installation
  • Razor Theme support (Razor theme included, „Garland-Revisited“)
  • Converted Admin pages to Razor (Dashboard, Extensions, Themes)
  • Install Themes from the BlogEngine.NET Gallery while in the BlogEngine.NET control panel.
  • NuGet support.
  • New language resource files for Estonian and Polish, and other translations updated.
  • Upgraded to jQuery 1.5.2.
  • Upgraded to latest version of tinyMCE WYSIWYG editor, v3.4.3.1.
  • Numerous fixes and improvements.

Und hier noch was für die Zukunft (Stand Gestern) geplant war:

  • Extend functionality of multiple blogs feature
  • Complete gallery integration (handle all packages from admin UI)
  • Build services/APIs to glue BE sites into ecosystem
  • Improve scalability
  • Improve theming engine – more granular with better HTML output
  • Improvements to code base (more Razor, testing etc.)

Das sind doch ganz ordentliche neue Feature und auch die Aussichten für die Zukunft sehen doch ganz nett aus.

Warum also bin ich denn Enttäuscht?

Weil man meiner Meinung nach etwas Technik verliebt auf einen Razor Zug aufspringt, der im jetzigen Stadium keinen wirklichen Mehrwert bringt und dadurch wichtige Ressourcen für etwas verwendet die man besser mit der Implementierung überlebensnotwendiger Funktionalitäten wie der vollständigen Gallery Implementierung für Widgets und Extensions hätte verwenden können.

Was mir auch noch fehlt, ist die Strategie zur Implementierung eines Aktualisierungsframeworks für Widgets, Extension und im besten Fall auch die BE selbst.

Andere Produkte haben so etwas und bevor nicht die Installation und Aktualisierung von Erweiterungen , Themes und Widgets für den „Jungen von Nebenan“ so einfach wie das Speichern eine Dokuments ist, wird die BE ein Produkt für Entwickler bleiben.

Und bis dahin wird es auf der Community Seite auch ruhig bleiben, denn die Entwickler die BE als Blog Engine betreiben haben solche Hilfe meistens nicht notwendig, das sind dann eher die, welche andere später mal helfen bestimmte Anforderungen umzusetzen und Fragen zu beantworten.

Aber ich bin guter Hoffnung, dass es eine solche Zukunft für die BlogEngine.NET und dann auch für die Community Plattform geben wird.

Und wenn es meine Zeit erlaubt werde ich selbst einige Ideen zur Implementierung solcher „Jedermann Funktionalitäten“ beitragen und umzusetzen.

BlogEngine.NET – Blog Software aktualisiert (Update 2.0.0.36 –> 2.0.0.69)

Wenn man sich den kleinen Versionssprung in der Überschrift ansieht „Version 2.0.0.36 auf 2.0.0.69“ dann würde man eigentlich denken, dass es sich dabei im ein marginales Update handelt.

Weit gefehlt, wenn man sieht,was dieses Update für Änderungen mit sich bringt:

  • Änderung des verwendeten NET Framework von 2.0 (NET Framework 3.5) auf 4.0
  • Einführung von Razor
  • Einführung einer Gallery Funktion für Themes (voll implementiert)
  • Einführung einer Gallery Funktion für Externsions und Widgets (zur Zeit nur Download soll aber später auch direkte Installation ermöglichen)
  • … Wer mehr Einzelheiten lesen möchte, kann dies in dem Detaillierten Beitrag von Klaus_b@.NET

Das Update selbst verlief ohne größere Probleme (siehe mein nachfolgendes Problem).

Ich hatte auf einem Server installiert, der noch keine MVC DLL Datein im Global Assembly Cache installiert hatte, und das hatte zur Folge, dass nach dem Update ein Fehler wegen der nicht vorhandenen DLL Dateien für die Verwendung von Razor aufgetreten ist.

Man kann diese Problem auf zwei verschiedene Arten lösen.

Man installiert MVC3 auf dem Server, insofern man vollen Zugriff auf den Server hat.

Man kopiert die notwendige DLL Dateien:

  • Microsoft.Web.Infrastructure.dll
  • System.Web.Helpers.dll
  • System.Web.Razor.dll
  • System.Web.WebPages.Deployment.dll
  • System.Web.WebPages.dll
  • System.Web.WebPages.Razor.dll

in das BIN Verzeichnis des BlogEngine Web Verzeichnisses.

Bevor ich es vergesse, das Update habe ich auf meine neuen Englischsprachigen Blog http://blog.schelian.com durchgeführt.

BlogEngine.NET – VS2010 – Master Page error beim öffnen der default.aspx

Beim Versuch die Datei default.aspx im Design Mode aus Visual Studio 2010 heraus zu öffnen wurde die folgendende Fehlermeldung ausgegeben:

Dieses ist nicht unbedingt ein BlogEngine spezifisches Problem und kann auch mit anderen Projekten auftreten.

Das Problem tritt auf, da in der verwendeten Basisklasse „BlogBasePage“ die Methode  OnPreInit vom PreInit Event aufgerufen wird. In dieser Methode wird eine Masterpage benötigt, da diese dort an die Basisklasse.MasterPageFile zugewiesen wird.

Siehe nachfolgenden Code Auszug:

this.MasterPageFile = string.Format("{0}themes/{1}/site.master", Utils.RelativeWebRoot, this.theme);

Nun gibt es die Möglichkeit direkt in der web.config eine default masterpage anzugeben, und genau dies ist auch die Lösung unseres Problems:

Der Eintrag muss wird in der Region „pages“ der web.config vorgenommen.
Dieser Bereich der web.config sieht vor der Änderung wie folgt aus:

<pages
	enableSessionState="false"
	enableViewStateMac="true"
	enableEventValidation="true"
>

Nun gibt es die Möglichkeit über den Parameter masterPageFile in der web.config eine default Master Page anzugeben, und genau dies machen wir, indem wir den Eintrag in der web.config, wie folgt ändern:

<pages
	enableSessionState="false"
	enableViewStateMac="true"
	enableEventValidation="true"
	masterPageFile="~/themes/Standard/site.master"
>

Man beachte den neuen Parameter

masterPageFile=“~/themes/Standard/site.master“

Dieser setzt die Master Page aus dem Standard Theme als Default Master Page, welche dann in der Basisklasse BlogBasePage verwendet werden kann, so dass der hier beschriebene Fehler nicht mehr auftritt.

Man kann natürlich auch jede andere Master Page aus jedem beliebigen Theme verwenden. Am besten verwendet man die Master Page aus dem verwendeten Theme.

Und nachdem diese Einstellung in der web.config vorgenommen wurde, kann man die default.aspx ohne den hier beschriebenen Fehler öffnen.

BlogEngine.NET – Die Deutschsprachige Community Plattform ist ONLINE

Seit Gestern ist die erste Deutschsprachige Community Plattform für Themen rund um die BlogEngine.NET Open Source Software ONLINE. Eigentlich ist es die erste Community Plattform überhaupt, aber die eben in Deutsch 🙂

Zusammen mit zwei Kollegen (Klaus Bock alias klaus_b und Roland Schumacher alias GENiALi), die selbst schon lange Erfahrungen mit der BlogEngine.NET vorweisen können, habe ich in den letzten Wochen das Gerüst für die Community Plattform geschaffen und Gestern dann für die Öffentlichkeit ONLINE gestellt.

Wir stehen ab sofort auch als Moderatoren im ebenfalls enthaltenen Deutschsprachigen Forum zur Verfügung.

Ich betreibe zur Zeit nur meinen englischsprachigen Blog unter der BlogEngine.NET.

Mein Deutscher Blog, also dieser hier, auf dem Ihr gerade den Beitrag lest, läuft noch unter WordPress. Wobei das tut er auch erst seit Anfang des Jahres, bis dahin wurde der Blog unter dasBlog betrieben. Aber dasBlog wird ja leider nicht mehr wirklich weiter entwickelt. Aber mit BlogEngine.NET gibt es ja einen würdigen Nachfolger als .NET Blog Software.

Eine der spannendsten Aufgaben sehe ich darin auf der neuen Community Plattform über neue Migrationspfade von WP zu BE zu berichten.

Hierbei ist mein Ziel möglichst viel der Funktionalitäten, die ich hier nicht näher beschreiben möchte ebenfalls von WP zu BE zu migrieren. Aber dazu später mehr auf www.dotnetblogengine.de

Wir sehen uns, hoffe ich doch.

Hier geht es übrigens direkt zur Registrierung

BlogEngine.NET – Zugriffsstatistiken (Site Stats) einrichten (Google Analytics)

Die BlogEngine.NET 2.0 bietet von Hause aus keine eigene Protokollierung der Webseiten Zugriffe. Das finde ich persönlich auch nicht unbedingt als Nachteil, auch wenn viele andere Blog Engines eine einfache Statistik im Standard bereits beinhalten.

Für die meisten Blog Betreiber wird Google Analytics die erste Wahl wenn es darum geht sich eine Zugriffsstatistik für den Blog einzurichten.

Nachfolgen erkläre ich Schritt für Schritt wie man Google Analytics für einen Blog mit der BlogEngine.NET einrichten kann.

Als erstes müssen wir dazu ein Google Analytics Konto einrichten (Dazu muss natürlich ein Google Konto eingerichtet oder vorhanden sein.).

Hier geht es zu Google Analytics

Entweder man meldet sich mit einem bereits bestehenden Google Konto an, oder man richtet ein neues Google Konto ein.

Nachdem man sich mit seinem Google Account angemeldet hat kann man sich für Google Analytics anmelden.

Nach der Anmeldung geht es an die Eintragung der für die Webseite notwendigen Daten.

Hier werden die Daten der Webseite eingegeben.

Das sollte dann in etwas so aussehen.

Jetzt auf Weiter klicken.

Als nächstes müssen die Kontaktinformationen eingeben werden.

Und wieder auf Weiter klicken.

Nun muss man noch den AGB’S zustimmen und dann auf „Neues Konto erstellen“ klicken.

Fast fertig.

Das Script unter Punkt 2 müssen wir nun noch kopieren und in der BlogEngine einfügen.

Also Script markieren, kopieren und Button Speichern und Fertig klicken.

Nun rufen wir die URL unseres Blogs auf, melden uns an der BlogEngine als Administrator an, rufen dort Settings und dort den Link (Menüpunkt) Custom Code auf.

In das Feld Tracking Script fügen wir nun das Script aus der Zwischenablage ein und speichern die Eingabe.

Ab sofort werden die Zugriffe über Google Analytics erfasst und gespeichert.

Die Informationen stehen nun später zur Ansicht und Auswertung über Google Analytics zur Verfügung

Aber nicht so schnell, das dauer einige Stunden bis sichtbare Daten vorhanden sind, also etwas Geduld und mal einen Tag warten.

BlogEngine.NET – Twitter Widget einrichten (BlogEngine von 0 auf 100)

Die BlogEngine 2.0 enthält bereits ein Twitter Widget.



Nachfolgend sehen wir die notwendigen Einstellungen des Twitter Widget.

Hier muss man nun die  „Twitter Account URL“, die wie nachfolgend aufgebaut ist eingeben.

  • http://twitter.com/[TwitterUserName]

Als Beispiel nachfolgend meine „Twitter Account URL“

  • http://twitter.com/SchelianHP

Seine „Twitter Account URL“ dürfte den meisten bekannt sein, anders sieht es jedoch mit der sogenannten „Twitter RSS feed URL“ aus, die Daten für diese URL sind nicht ganz so einfach zu ermitteln.

Das generelle Format dieser URL lautet wie folgt.

  • http://twitter.com/statuses/user_timeline/[TwitterID].rss

Seine  TwitterID kennt vermutlich nicht jeder und kann leider auch nicht einfach auf der Twitter seite abgeufen werden. Neben vielen verschiedenen Möglichkeiten in Drittanbieter Modulen zu Twitter zu seiner TwitterID zu kommen, bevorzuge ich die einfachste Varianten.

Hierzu ruft man einfach die URL http://www.idfromuser.com/ auf.

Nun gibt man seinen Twitter Username in das Eingabefeld ein und betätigt den Button Get ID…

Und Schwups hier haben wir die benötigte ID.

Diese fügen wird dann an der richtigen Stelle in der URL ein, und dann sieht diese wie folgt aus (also mit meiner ID).

  • http://twitter.com/statuses/user_timeline/117727411.rss

Jetzt noch die Anzahl anzuzeigender Tweets und den Aktualisierungsintervall eingeben, fertig.

Das Widget ist sicherlich nicht der letzte Schrei wenn es um Darstellung geht, aber funktional …. einfach und perfekt.


Reihe: „BlogEngine von 0 auf 100“

BlogEngine.NET 2.0 – Grundinstallation auf einem W2K8 Server (BlogEngine von 0 auf 100)

Heute war es nun soweit, nach langer Zeit habe ich mich dazu entschieden für meinen Blog (Zunächst mal für meinem Englischsprachigen Blog) die BlogEngine.NET als Blog Software zu verwenden.

Ich werde in einer kleinen Reihe mit dem Namen „BlogEngine von 0 auf 100“ über die Installation, die offenen Wünsche, verfügbare Externsions und eventuelle Anpassungen berichten.

Heute beginne ich mit einer ToDo Liste für die Grundinstallation der BlogEngine.NET auf einer Windows 2008 Server Maschine.

Dies soll, wie aus dem Begriff ToDo Liste schon hervorgeht,  keine detaillierte Beschreibung für jeden einzelnen Schritt werden, sondern lediglich ein grobe Aufstellung, welche Schritte man durchführen muss um die BlogEngine zu installieren. Für die detailliertere Informationen zu den einzelnen Schritten gibt es Unmengen an Hinweise im Internet „Google/Bing“ sei dank.

Herunterladen und auspacken

BlogEngine.NET 2.0 (web)

Das ZIP File habe ich auf meinen Server geladen und dort entpackt.

IIS einrichten

Erstellen eines Anwendungspool und sofort die Identität auf Netzwerkdienst geändert. Das wird benötigt um die erforderlichen Rechte auf das Basisverzeichnis legen zu können und um die integrierte Sicherheit mit dem SQL Server zu konfigurieren.

Als nächstes mit dem IIS Manager eine neue Webseite angelegen, mit dem Root auf das Verzeichnis BlogEngine.Web zeigen lassen.

Rechte vergeben und Konfiguration kopieren

Dem Netzwerkdienst alle Rechte (ja es geht auch etwas kleiner) auf das Root Verzeichnis der Anwendung gegeben.

Da ich die Daten in einer SQL Datebank und nicht in XML Files speichern möchte, sind noch noch folgende schritte notwendig:

Aus dem Unterverzeichnis \setup\SQLServer die Datei SQLServerWeb.config nach web.config umbenennen und die web.config um Rootverzeichnis damit ersetzen.

Siehe auch

Datenbank anlegen und Zugriff einrichten

SQL Datenbank angelegen und auf der neuen DB das MSSQLSetup2.0.0.0.sql script ausführen. Das Script befindet sich im Unterverzeichnis \setup\SQLServer.
Wenn man mit Integrierter Sicherheit arbeiten möchte, nicht vergessen, dem Benutzer Netzwerkdienst Zugriff auf die Datenbank zu geben.

Connection string in der web.config anpassen.

Jetzt kann es eigentlich los gehen, Aufruf der Webseite, vorausgesetzt man hat dazu auch schon die notwendigen DNS Einträge vorgenommen und den richtigen HostHeader im IIS eingetragen.


Reihe: BlogEngine von 0 auf 100

WebMatrix ist Heute Web Matrix war Gestern

Mitte letzten Jahres wurden die ersten Meldungen über das neue Tool „WebMatrix“ von Microsoft zur einfachen Entwicklung von Web Anwendungen veröffentlicht. Nun ist es endlich soweit und das neue WebMatrix steht seit einigen Tagen (13.01.2011) in seiner Version 1.0 zum kostenlosen Download zur Verfügung.

Ich habe hier extra vom „neuen WebMatrix“ gesprochen, denn 2003 gab es bereits einmal ein Produkt mit einem ähnlichen Namen „Web Matrix“. Damals noch in zwei Worten geschrieben, aber auch mit dem Anspruch „das neue Tool“ zur einfachen Entwicklung von ASP.NET Anwendungen zu sein. Wen es interessiert kann hier Informationen über das „alte Web Matrix“ nachlesen.

Doch wollen wir uns nicht lange an dem alten Produkt aufhalten, denn es hat nicht wirklich viel mit dem neuen WebMatrix gemein.

WebMatrix ist ein recht mächtiges Tool mit vielen Optionen und innovativen Funktionalitäten.

Hier die WebMatrix Highlights:

  • Kostenloses Entwicklungstool
  • Entwicklung in ASP.NET, Razor und PHP
  • Unterstützt HTML 5
  • Integrierter Web Server IIS Express
  • Integrierte Datenbank SQL Server Compact
  • Beinhaltet Installation und Konfiguration von PHP und MySQL für Windows
  • Beinhaltet Veröffentlichungsmethoden über FTP und Web
  • Erlaubt die Veröffentlichung sowohl an LAMP basierte als auch an Windows basierte Server
  • Beinhaltet SEO Optimierung Tools

Zusätzlich enthält WebMatrix auch noch eine Web Galerie über die ein Reihe von freien Webanwendungen wie DotNetNuke, BlogEngine.NET, Joomla, Drupal, WordPress und viele andere integriert werden können.

WebMatrix richtet sich zwar nicht ausschließlich, aber doch vornehmlich mehr an Anfänger in der Web Entwicklung als an die Hardcore Entwickler. WebMatrix könnte aber auch für Profis interessant sein, da man mit WebMatrix sehr schnell ein Grundgerüst einer Web Anwendung erstellen kann und bei Bedarf die Web Matrix Projekte in Visual Studio importieren kann.

Und wer sich WebMatrix gerne mal näher anschauen und erste Erfahrungen sammeln möchte sollte sich, solange noch Plätze frei sind, zu einem der kostenfreien Workshops in Bad Homburg oder München anmelden.

23.03.2011 in Bad Homburg

31.03.2011 in München

Vielleicht sieht man sich ja in Bad Homburg !