Archiv für den Monat Januar 2012

SSL für den IIS 7.5 und eine Webseite konfigurieren


Wenn man auf seiner Webseite z.B. einen Sicheren Login anbieten möchte, muss man dafür im IIS für diese Webseite die Verschlüsselung aktivieren und dann kann der Nutzer mit Hilfe von “https” eine Sichere Verbindung aufbauen.

Als erstes benötigt man ein SSL Zertifikat, welches man selbst erstellen kann, direkt im IIS-Manager. Wenn man das Zertifikat selbst erstellt, dann wird der Nutzer eine Sicherheitswarnung im Browser erhalten, das es sich um ein unsicheres Zertifikat handelt. Was für unser Beispiel aber erst einmal egal ist.

Wenn man keine Warnung erhalten möchte weil es sich um die offizielle Firmenhomepage o.ä. handelt, dann muss man sich z.B. ein Zertifikat bei VerySign oder einem ähnlichen Dienstanbieter kaufen.

Als erstes starten wir den IIS-Manager und wenn wir unseren Rechner auswählen, finden wir dann rechts unter IIS die Option “Serverzertifikate”.

image

Wenn wir die “Serverzertifikate” öffnen, haben wir die Möglichkeit unser Zertifikat von z.B. VerySign zu importieren oder wir können ein “Selbstsigniertes Zertifikat erstellen….”

image

Wenn wir das Zertifikat erstellt haben, sehen wir es ebenfalls unter unseren Serverzertifikaten

image

Jetzt muss nur noch für unsere Webseite der SSL Port und Zertifikat eingestellt werden. Dafür werden die “Bindungen…” für unsere Webseite bearbeitet. Dafür einfach z.B. die “Default Web Site” auswählen und dann rechts auf “Bindungen….” klicken.

image

Wenn bisher nur die Standard Bindung enthalten ist, kann das ganze z.B. folgendermaßen aussehen. Hier einfach auf “Hinzufügen” gehen.

image

Im folgenden Fenster dann bei Typ “https” auswählen und unter “SSL-Zertifikat” unser Zertifikat auswählen. Der Standard Port bei SSL ist 443, dann muss dieser nicht zusätzlich mit in der URL angegeben werden, wenn auf die Seite mit Hilfe von “https” zugegriffen wird.

image

Unsere “Seitenbindungen” sehen dann folgendermaßen aus

image

wenn man die Webseite jetzt lokal aufruft, dann sieht das im Firefox bei mir z.B. folgendermaßen aus mit “https://localhost” bringt mir der Firefox eine Warnung, das der Verbindung nicht vertraut werden kann, da ich das Zertifikat selbst erstellt habe.

image

hier einfach das “Ich kenne das Risiko” anklicken und das Zertifikat zu meiner Liste der “vertrauenswürdigen” Zertifikate hinzufügen und unsere Seite wird über “https” angezeigt.

image

EF 4.1 mit Connectionstring Initialisieren


Ich habe bereits hier gezeigt wie man von EF 4.0 auf EF 4.1 aktualisiert. Dabei hatte ich jedoch das Problem das der neue Konstruktor von EF 4.1 der vom VS angelegt wird nicht mehr mit Hilfe eines Connectionstrings initialisiert werden kann. Dieser sucht automatisch in der App.Config oder Web.Config nach dem Connectionstring mit dem Namen des aktuellen Projekts.

Da es sich hierbei nicht immer um die optimale Lösung handelt und ich damals den Wald vor lauten Bäumen nicht gesehen habe, wie Einfach doch die Lösung ist. Will ich diese euch nicht vorenthalten.

Da es sich bei der Basisklasse des EF DbContext um eine Partielle Klasse handelt die automatisch vom VS angelegt wird und nicht bearbeitet werden sollte:

    public partial class EFModelContainer : DbContext
    {
        public EFModelContainer() : base("name=EFModelContainer")
        {
        }
     }

Muss man einfach eine eigene Partielle Klasse mit dem gleichen Namen anlegen und diese mit dem folgenden Konstruktor versehen:

    /// <summary>
    /// Zusätzliche Partielle Klasse, damit weitere Konstruktoren angelegt werden können
    /// um unser EF 4.1 Objekt nicht nur mit Hilfe App.Config initialisieren zu können.
    /// Sondern damit man auch wieder einen Connectionstring übergeben kann.
    /// </summary>
    public partial class EFModelContainer
    {
        public EFModelContainer(string connectionString) : base(connectionString)
        {

        }

    }

Mit diesem neuen Konstruktor kann man jetzt das EF Model auch wieder mit einem Connectionstring initialisieren der z.B. folgendermaßen zusammengebaut werden kann:

    /// <summary>
    /// Gibt den Connectionstring zur DB zurück für das EntityFramework
    /// </summary>
    public static string GetConnectionString()
    {
        SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder();
        //Die Zugangsdaten aus der Web.Config laden, nicht den Connectionstring verwenden.
        sqlBuilder.DataSource = ConfigurationManager.AppSettings["DBDataSource"]; ;
        sqlBuilder.InitialCatalog = ConfigurationManager.AppSettings["DBCatalog"]; ;
        sqlBuilder.UserID = ConfigurationManager.AppSettings["DBUser"];
        sqlBuilder.Password = ConfigurationManager.AppSettings["DBPassword"];
        //Wichtige Option damit mehrere Abfragen geöffnet werden können
        //um Subabfragen ausführen zu können von Untergordneten Projekten
        sqlBuilder.MultipleActiveResultSets = true;
        sqlBuilder.IntegratedSecurity = false;

        //Initialize the EntityConnectionStringBuilder.
        EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();

        //Providernamen setzten
        entityBuilder.Provider = "System.Data.SqlClient";
        //Connectionstring setzten
        entityBuilder.ProviderConnectionString = sqlBuilder.ToString();
        //Metadaten setzten.
        entityBuilder.Metadata = @"res://*/EFModel.csdl|res://*/EFModel.ssdl|res://*/EFModel.msl";
        return entityBuilder.ConnectionString;
    }

Das war es auch schon wieder, ich hoffe ich konnte “Licht ins Dunkel” bringen :-)

Jetzt mit Code Plugin für die neuen Beiträge


Da ich bisher immer zu faul war mich darum zu kümmern, das man den Code direkt aus der Seite kopieren kann. Habe ich jetzt ein geeignetes Plugin für den Windows Live Writer gefunden in dem ich den Code Formatiert einfügen kann.

Das ganze sieht dann zum Beispiel folgendermaßen aus:

    /// <summary>
    /// Interaktionslogik fuer MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            CallApplication callApplication = new CallApplication();
            this.DataContext = callApplication;
        }
    }

Ich benutzte jetzt das Plugin von: http://richhewlett.com/wlwsourcecodeplugin/

Welches man einfach im Pluginordner vom Live Writer ablegt und dann unter Einfügen im Live Writer findet.

image

Hier öffnet sich ein Fenster in dem man einfach seinen Code einfügt der auf der Seite angezeigt werden soll und man stellt noch die Sprache ein um die es sich handelt. Schon wird der Code wie oben angezeigt auf dem WordPress Blog dargestellt.

image

Update:

Bei Problemen mit der Formatierung, das z.B. HTML Tags mit &uml; dargestellt werden, dann unter Start->Optionen->Plugin->SourceCode Highlighter auswählen und auf Optionen klicken und hier den Hacken bei „Disable HTML Encoding“ setzen.

Ein sehr nützliches Plugin für den Live Writer findet Ihr hier:

http://codeclimber.net.nz/archive/2010/07/10/How-to-edit-very-old-posts-with-Windows-Live-Writer.aspx

damit lassen sich auch ältere Beiträge mit dem Live Writer bearbeiten, in dem man einfach in der URL z.B.: „wlw://squadwuschel.wordpress.com/?postid=DeinePostId“ angibt und natürlich noch deine URL ersetzt und schon öffnet sich der Live Writer und Ihr könnt auch den ältesten Beitrag bearbeiten.