Feed
Contact
XING
LinkedIn
Twitter
ICQ
meebo.com

BlogEngine.NET - Fehler beim ein- und ausschalten von Erweiterungen

by Roland Schumacher alias GENiALi 16. August 2010 -- 212 Wörter  -- 501 mal gelesen
Dieser Beitrag ist mir was wert:  

Wenn bei BlogEngine.NET eine Erweiterung aus- oder eingeschaltet wird kommt eine Meldung die einem mitteilt, dass auf die Web.config nicht geändert werden kann. Das kommt daher, dass der ExtensionManager versucht, bei einer Änderung des Status einer Erweiterung, das Blog neu zu starten. Versucht wird das in dem die Web.config geringfügig verändert wird. Bei einer Änderung der Web.config wird das Web automatisch neu gestartet.

Um den Fehler zu verhindern müsste man dem Account, unter dem das Web läuft, schreibrechte auf die Web.config geben. Wenn man einen eigenen IIS hat ist das kein Problem. Bei einem Shared Hosting geht das aber nicht immer. Ich kann z.B. auf den Dateien im root-Verzeichnis keine Rechte ändern. Die Web.config ist also immer schreibgeschützt für die Webanwendung. Dann kommt immer der Fehler.

Man kann das Web aber noch anders neu starten. Mit HttpRuntime.UnloadAppDomain(); erreicht man das selbe ohne die Fehlermeldung und gefühlt schneller. Angepasst werden muss folgendes.

In der ExtensionManager.cs:

public static void ChangeStatus(string extension, bool enabled)
{
    foreach (ManagedExtension x in _extensions)
    {
        if (x.Name == extension)
        {
            x.Enabled = enabled;
            BlogEngine.Core.DataStore.ExtensionSettings xs = new BlogEngine.Core.DataStore.ExtensionSettings(x.Name);
            xs.SaveSettings(x);
            SaveToCache();

            //string ConfigPath = System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath + "Web.Config";
            //File.SetLastWriteTimeUtc(ConfigPath, DateTime.UtcNow);

            HttpRuntime.UnloadAppDomain();
            break;
        }
    }
}
Die Zeilen 12 und 13 werden auskommentiert. Die Zeile 15 ist neu und bewirkt ein neustarten der Webanwendung.

Artikel empfehlen auf .NET-Kicks Deutschland

Tags: ,

Blog | Entwicklung

GEBEE - Flattr Extension 1.0

by Roland Schumacher alias GENiALi 6. August 2010 -- 496 Wörter  -- 492 mal gelesen
Dieser Beitrag ist mir was wert:  

Vor kurzem habe ich beschrieben wie man relativ einfach den Flattr Button in BlogEngine.NET einbinden kann. Diese Lösung hatte noch so seine Mängel und Tücken. Ich habe auch erwähnt das es über kurz oder lang noch eine richtige Extension geben wird. Die habe ich jetzt erstellt.

Der Einbau in das Blog sollte eigentlich keine Probleme verursachen.

  1. Herunterladen des ZIP Archives. --> GEBEE_Flattr_Extension.V.1.0.zip
  2. Einpacken ins Root Verzeichnis von BlogEngine.NET. Die Verzeichnisstruktur sollte eigentlich passen.
  3. Ein stück Code in der Datei PostView.ascx einbauen. Wichtig ist nur der Teil <%= GEBEEFlattr.GetFlattr(Post) %>.
    <div class="Flattr">
    Dieser Beitrag ist mir was wert: &nbsp;<%= GEBEEFlattr.GetFlattr(Post) %>
    </div>
  4. In den Settings noch die User ID erfassen und den Rest einstellen.

Das war es eigentlich schon.

Der Administrationsbereich sieht so aus:

GEBEEFlattr Settings

Und das eingebaute Button kann so aussehen:

So sieht der Flattr Button aus

Das generierte Java Script Snippet sieht z.B. so aus.

<script type="text/javascript">
    var flattr_btn = 'compact';
    var flattr_uid = '25101';
    var flattr_tle = 'GEBEE - Flattr Extension 1.0';
    var flattr_dsc = 'Vor kurzem habe ich beschrieben wie man relativ einfach den Flattr Button in BlogEngine.NET einbinden kann. Diese L&#246;sung hatte noch so seine M&#228;ngel und ...';
    var flattr_cat = 'rest';
    var flattr_lng = 'de_DE';
    var flattr_tag = 'GEBEE, GEBEEFlattr, Extensions, BlogEngine.NET, Flattr';
    var flattr_url = 'http://blog.geniali.ch/post/2010/08/06/GEBEE-Flattr-Extension-10.aspx';
    var flattr_hide = 'False';
</script>
<script src="http://api.flattr.com/button/load.js" type="text/javascript"></script>

Also viel Spass beim flattrn.

English

English text by http://gordon-breuer.de

In a previous article I described how to integrate the Flattr button within the BlogEngine.NET. This solution had a few shortcomings and I mentioned that there will be a real extension sooner or later. This future is now:

The integration into your own installation of the BlogEngine.NET is a straight forward process in four easy steps:

  1. Download the ZIP archive, here: GEBEE_Flattr_Extension.V.1.0.zip
  2. Extract the downloaded archive into the root directory of your BlogEngine.NET installation. All files will automatically be unpacked into the correct directory.
  3. Now you have to insert a small piece of code into your PostView.ascx where the Flattr button should be displayed. I created the extension as a user control so that you can decide where to insert it on your blog wherever you want: <%= GEBEEFlattr.GetFlattr(Post) %>
    <div class="Flattr">
    Dieser Beitrag ist mir was wert: &nbsp;<%= GEBEEFlattr.GetFlattr(Post) %>
    </div>
  4. Log into your administration panel and go to the extension settings. Here you have to enter your Flattr User-ID and you can change some visual options of how to display the button like in the following example:

    GEBEEFlattr Settings

This is an example of how your button could look:

So sieht der Flattr Button aus

The user control is generating some Javascript to generate the Flattr Button. Here is an example of this generated code:

<script type="text/javascript">
    var flattr_btn = 'compact';
    var flattr_uid = '25101';
    var flattr_tle = 'GEBEE - Flattr Extension 1.0';
    var flattr_dsc = 'Vor kurzem habe ich beschrieben wie man relativ einfach den Flattr Button in BlogEngine.NET einbinden kann. Diese L&#246;sung hatte noch so seine M&#228;ngel und ...';
    var flattr_cat = 'rest';
    var flattr_lng = 'de_DE';
    var flattr_tag = 'GEBEE, GEBEEFlattr, Extensions, BlogEngine.NET, Flattr';
    var flattr_url = 'http://blog.geniali.ch/post/2010/08/06/GEBEE-Flattr-Extension-10.aspx';
    var flattr_hide = 'False';
</script>
<script src="http://api.flattr.com/button/load.js" type="text/javascript"></script>

Happy flattering!

Artikel empfehlen auf .NET-Kicks Deutschland

Tags: , , , ,

Blog | GEBEE

GEBEE - MostRead Extension 1.0

by Roland Schumacher alias GENiALi 24. July 2010 -- 373 Wörter  -- 774 mal gelesen
Dieser Beitrag ist mir was wert:  

Vor ein paar Tagen hatte ich wieder mal Lust eine Extension für BlogEngine.NET zu machen. Ideen habe ich ja. Was ich bei vielen andern Blogs immer wieder sehe ist ein Hinweis wie oft ein Posting gelesen wurde. Irgend etwas in dem Stiel wollte ich auch.

Es soll aber einfach sein. Ich will kein Java-Script oder sonstige Sachen. Etwas ganz einfaches. Dabei interessiert mich auch nicht ob der Aufruf von einer Suchmaschine stammte oder nicht. Es interessiert mich nur wie oft das Posting gelesen / geöffnet wurde.

Im nachhinein habe ich noch eine IP Sperre eingebaut. Ab und zu hatte ich unmögliche Zahlen drin. Jetzt kann eine IP ein Posting nur alle 20 Minuten hochzählen.

Einbau sollte / ist hoffentlich auch nicht zu kompliziert.

  1. Herunterladen des ZIP Archives. –>  GEBEE_MostRead_Extension.V.1.0.zip
  2. Einpacken ins Root Verzeichnis von BlogEngine.NET. Die Verzeichnisstruktur sollte eigentlich passen.
  3. Ein stück Code in der Datei PostView.ascx einbauen. Wichtig ist nur der Teil <%= GEBEEMostRead.Get … %>. Der Rest ist nur Beigemüse.
    <a href="/MostRead.aspx" target="_blank" title="MostReaded"><%= GEBEEMostRead.GetById(Post, Location).ToString()%>&nbsp;mal&nbsp;gelesen</a>
  4. Da ich LINQ verwende muss der Webserver sicher .NET 3.0 unterstützen. Meiner könnte sogar 4.0. Aber ich nutze nur 3.5. Da die aktuelle Version von BlogEngine.NET aber nur die Version 2.0 von .NET unterstützt muss noch die web.config angepasst werden damit die ganze Geschichte mit dem 3.5’er Compiler übersetzt wird.
    <assemblies>
            <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Management …
    Und ganz am ende der web.config:
    </system.webServer>
    <!-- Damit LINQ tut muss der 3.5'er Compiler genutzt werden. –>    
       <system.codedom>
          <compilers>
            <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4">
               <providerOption name="CompilerVersion" value="v3.5"/>
               <providerOption name="WarnAsError" value="false"/>
            </compiler>
         </compilers>
      </system.codedom>
    </configuration>

Das ganze könnte dann in etwa so aussehen.

So könnte es aussehen

Hinter dem “9 mal gelesen" steckt noch ein Link auf eine Übersichtsseite mit ein paar Informationen. Titel, wann wurde das Posting das erste mal geöffnet, wann das letzte mal, Tage zwischen den zwei Daten und wie oft Durchschnittlich pro Tag das Posting gelesen/geöffnet wird.

Ein bischen Statistik

Ob die Zahlen sinn machen weiss ich nicht. Wer Ideen hat soll sich einfach bei mir melden.

Was ich noch machen könnte/werde ist, die Daten noch auf der GEBEE – Statistics Extension einbauen. Natürlich so, dass die Extension auch ohne diese hier tut. Aber das ist meine Pendenzen Nr. 3566. Smile

Zuerst mal viel Spass damit.

kick it on dotnet-kicks.de

Tags: , , ,

GEBEE

Flattr - Der Versuch

by Roland Schumacher alias GENiALi 20. July 2010 -- 662 Wörter  -- 623 mal gelesen
Dieser Beitrag ist mir was wert:  

Man sieht ihn immer öfters. Auf immer mehr Blogs / Webseiten. Ein Button mehr auf den man klicken kann. Nur dieser ist anders. Ganz anders.

Die meisten anderen Buttons, wie zum Beispiel “kick it-de” sind Themen bezogen. Den setzte ich nur in Postings ein wo es irgend wie um Entwicklung oder Informatik geht. Der zählt nur hoch wie oft jemand seine Bewunderung kund getan hat. Man sieht nur eine Zahl. Mehr nicht. Trotzdem wird der rege genutzt.

Jetzt kommt Flattr.com. Was ist hier anders?

  1. Man muss registriert sein. OK, bei den Anderen auch. Smile
  2. Wenn bei dem Flattr-Button eine Zahl steht heisst dass auch, dass ich für das Posting etwas in Monetärer Form bekommen habe.
  3. Man muss eine gewisse Geldsumme dem Dienst zur Verfügung stellen die dann verteilt wird.

Mindestens 2 Euro im Monat. 10% gehen an Flattr. Der Rest wird auf die geleisteten Klicks verteilt.

Was heisst das nun für mich. Ich habe mir mal ein Budget von 8 Euro gegeben. 10% behält Flattr für sich, den Rest kann ich “verklicken”.

Jedes Mal wenn ich den Button sehe, und das Posting gut finde, kann ich dem Autor damit was bezahlen. Die Klicks, die ich tätige, werden gezählt und am ende des Monates werden die 8 Euro weniger 10% durch die anzahl Klicks geteilt und jeder klick erhält diese Summe gutgeschrieben.

Testes halber habe ich mir ein Posting gesucht das den Button drin hat. Habe ihn angeklickt und sehe in der Statistik folgendes Bild.

Flattr Übersicht

Ich habe diesen Restmonat noch 3.14 Euro zu verteilen. Ich habe einmal geklickt. Dieser Autor bekäme, wenn ich nichts anderes mehr anklicke, von mir 3.14 Euro für sein Posting. Wenn ich jetzt noch ein anderes Posting sehe was mir gefällt, und das auch noch anklicke, dann bekommt er nur noch die Hälfte und so weiter.

Das heisst, um so mehr ich klicke um so weniger wird ende Monat verteilt pro Klick.

Ich werde es also einfach mal ein, zwei vielleicht auch drei Monate probieren. Ich befürchte aber, dass es mehr Verlierer geben wird wie Gewinner. Ein Gewinner ist sicher Flattr. Aber Geld vermehrt sich nicht einfach so. Wenn alle bemüht sind mehr zu bekommen als sie investieren wird sich das System tot laufen. Jeder der über längere Zeit Verlust macht wird aussteigen.

Der Einbau in BlogEngine.NET ist relativ einfach.

Einfache Lösung

In der Datei PostView.aspx wird folgendes stück Code eingefügt (Java Script). Man sollte natürlich die PostView.aspx aus dem Theme nehmen das man aktiviert hat. Aber wer das hier einbaut wird schon Bescheid wissen.

<div class="Flattr">
Dieser Beitrag ist mir was wert: &nbsp; 
    <script type="text/javascript">
        var flattr_btn = 'compact';
        var flattr_uid = '25101';
        var flattr_tle = '<%= Server.HtmlEncode(Post.Title) %>';
        var flattr_dsc = '<%= Regex.Replace(Post.Content, @"</?\w+((\s+\w+(\s*=\s*(?:"".*?""|'.*?'|[^'"">\s]+))?)+\s*|\s*)/?>", "").Replace(Environment.NewLine, " ").Substring(0, 250) + " [...]" %>';
        var flattr_cat = 'text';
        var flattr_lng = 'de_DE';
        var flattr_url = '<%= Server.HtmlEncode(Post.AbsoluteLink.AbsoluteUri) %>';
        var flattr_hide = 'false';
     </script>
    <script src="http://api.flattr.com/button/load.js" type="text/javascript"></script>

</div>

Die genaue Definition der Parameter ist hier zu finden. Das ist die schnelle Lösung für BlogEngine.NET.

Noch einfachere Lösung

Warten. Smile

Mir wurde geflüstert das jemand eine Extension für Flattr macht. Dann könnte es noch einfacher werden. Vor allem die Sache mit dem Parameter flattr_dsc. Dort sollten keine HTML Tags drin vorkommen. Vor allem keine <img… oder <a href… Flattr hat damit wahrscheinlich keine Probleme. Aber der W3C HTML Check. Deshalb das komische Konstrukt mit dem Regex.Replace. Allerdings werden ausgerechnet die <img… und <a href… nicht entfernt. Das sollte dann die Extension besser machen.

Ach ja. Wenn jemand einen RegEx hat der mir alle HTML Tags entfernt … Ihr wisst ja wo die Kommentarfunktion ist. Die sollte jetzt auch mit dem IE7/8 tun.

Noch etwas. Flattr ist BETA. Läuft aber angeblich sehr stabil so das es nur noch eine Frage der Zeit ist bis es nicht mehr BETA ist. Vielleicht bleibt es ja auch BETA. Ist im Web 2.0 Umfeld ja cool. Aber es geht mir um was anderes. Wenn sich jemand anmelden will muss er zur Zeit einen “invite” Code haben. Ich kann davon drei anbieten. Die ersten drei Kommentare die einen wollen bekommen einen. Einfach melden. Im Kommentar. Mit gültiger EMail.

kick it on dotnet-kicks.de

Tags: ,

Blog

BlogEngine.NET Version 1.6.1.0 mit Captcha

by Roland Schumacher alias GENiALi 26. April 2010 -- 120 Wörter  -- 746 mal gelesen
Dieser Beitrag ist mir was wert:  

Vor kurzem habe ich festgestellt das bei BlogEngine.NET ein Captcha eingebaut wurde. Da ich wahnwitzig viel SPAM bekomme musste ich das natürlich so schnell wie möglich online stellen.

SPAM aufkommen bei GENiALi

Das habe ich heute Abend gemacht. Jetzt können nur noch Kommentare hinterlassen werden wenn das Captcha ausgefüllt wird.

Captcha auf GENiALi

Damit hoffe ich die dämlichen SPAM’er einwenig los zu werden. Vielleicht ist ihnen jetzt der Aufwand zu gross. Die SPAM Bots werde ich so vielleicht auch los. Vielleicht.

klaus_b@.net sagte mir noch, dass BlogEngine.NET noch ein unsichtbares Captcha für Bots nutzt. Ich soll mal in meinem Theme die CommentView und PostView UserControl anschauen. Das habe ich jetzt auch gemacht. Unterschiede habe ich keine festgestellt.

Somit sollte ich jetzt die Bots auch los sein. Vielleicht.

kick it on dotnet-kicks.de

Tags: , ,

Blog

Übersetzen

Diverses

Seitwert

Locations of visitors to this page

Rating
Excellent - 97%overlay Icon

Statistik