Montag, 30. April 2007

Webseiten mit Root-Pfad testen

Manchmal ist nötig seine Web-Anwendung direkt im Root zu testen und/oder ohne Portinformation, zum Beispiel um eine Produktivumgebung zu simulieren. In Visualstudio kann man das ohne großen Aufwand bewerkstelligen.
Man kann sich über die externen Tools unter Extras einfach eine Webserver-Konfiguration, passend zum gerade aktuellen (Web-)Projekt, anlegen:



Befehl: (Beispiel)
c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\WebDev.WebServer.EXE
Argumente:
/port /path:$(ProjectDir)

Die CheckBox "Ausgabefendster verwenden" nicht vergessen zu markieren!

Um auf einfache Art diesen Webserver mit seinem aktuellen (Web-)Projekt zu verwenden, muss noch eine Einstellung bei dem (Web-)Projekt selbst vorgenommen werden.
Dazu einfach bei den ProjektEigenschaften (rechte Maustaste - Eigenschaftsseiten) unter dem Punkt Startoptionen die Option Start-Url aktivieren und als URL http://localhost sowie bei "Benutzerdefinierten Server verwenden - Basis Url:" ebenfalls http://localhost angeben.




Achtung:
Damit diese Lösung funktioniert, muss ein ev. vorhandener lokaler Webserver, der ebenfalls auf Port 80 und localhost hört deaktiviert werden, oder eben dem Argument (wie oben) /port noch den zu verwendenden Port mitteilen (Beispiel: /port:888)

Donnerstag, 26. April 2007

Strato Windows-Server

Seit einiger Zeit betreibe ich einen eigenen Windows-Server bei Strato. Ich möchte hier kurz meine Erfahrungen mit dem Windows Server bei Strato zum Besten geben - auch weil ich sebst keine vernünftigen Meinungen oder einen entesprechenden Strato Test zu diesem Thema gefunden habe. Deshalb nun hier mein persönlicher "Strato Test":

Die Bestellung:
Die Bestellung des Strato-Servers war unkompliziert und einfach. Nach dem Ausfüllen des Online-Formulars habe ich eine SMS bekommen, in der ein Code zur Bestätigung des Auftrags enthalten war. Nach Eingabe des Codes in einem weiteren Online-Formular war die Bestellung des Strato Windows Servers abgeschlossen.
Kurze Zeit später hatte ich die Bestätigung sowie die Zugangsdaten zum Starto-Kundenbereich per E-mail zugesendet bekommen.

Der Server selbst war, wenn ich mich recht entsinne, nach nur wenigen Stunden fertig eingerichtet und per RDP erreichbar.

Der Service:
Fragen zur Konfiguration etc. wurden vom Strato-Support binnen kurzer Zeit höflich und kompetent beantwortet. Weiteren Support habe ich bis dato noch nicht benötigt.

Der Server:
Die Serverdaten können bei Strato eingeshen werden. Das Betriebssystem (Windows Server2003 SE) war mit allen Windowseiegnene Securitytools (Firewall etc.) installiert, und das Handling per RDP fühlt sich gut an.
Ebenfalls fetig installiert waren natürlich .NET und der SqlEpress-Server 2005.
Die neuesten Patches etc. habe ich mir per Windows-Update selbst installiert. Überhaupt muss man für weitere Sicherheitsfeatures, die über die der Standardinstallation hinausgehen, selbst Hand anlegen (Anti-Virensoftware, Hardening etc.)

Fazit:
Ich muss sagen, bisher bin ich überaus zufrieden mit dem Paket. Innerhalb eines Tages hatte ich einen kompletten Server mit allem drum und dran, für meiner Meinung nach, echt günstige 69.- Euro / Monat (Mindest-Laufzeit allerdings 1 Jahr)
Das dazugehörende Softwarepaket sollte allerdings nicht als Entscheidungshilfe dienen - auch wenn eine Vollversion meines geliebten Texteditors Ultraedit dabei ist.

Kleine Helferlein - HTML-Code eines Webcontrols erzeugen

Manchmal kommt man in die Lage, den reinen HTML-Output eines Controls zu benötigen (z.B. für eine AJAX-Methode)
Für diese Aufgabe habe ichmir mal eine kleine Methode geschrieben die genau soetwas tut:

public string GetHtml(Control c)
{
StringBuilder sb = new StringBuilder();
HtmlTextWriter tw = new HtmlTextWriter(new StringWriter(sb));
c.RenderControl(tw);
return sb.ToString();
}


Ein kleines Beispiel für die Anwendnung (der Sinn sei mal dahingestellt):
Auf einer aspx-Seite wird beispielsweise ein Repeater-Control (ID=rep) verwendet, das irgendwelche Daten ausgibt.
Im der PageLoad der Seite könnte beispielsweise der Repeater befüllt werden und das Ergebnis (und nur das Ergebnis) als String zurückliefern. Den Output der aspx-Seite könnte man dann z.B. über eine AJAX-Funktion an anderen Stellen anzeigen lassen


protected void Page_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("ID", System.Type.GetType("System.Int32"));
dt.Columns.Add("Text", System.Type.GetType("System.String"));
for (int i = 0; i < 50; i++)
{
DataRow dr = dt.NewRow();
dr["ID"] = 1;
dr["Text"] = String.Format("Text Nummer {0}", i.ToString());
dt.Rows.Add(dr);
}
rep.DataSource = dt;
rep.DataBind();
Response.Write(GetHtml(rep));
Response.End();
}

Das schöne daran ist, dass man wirklich alle Funktionen etc. der aspx-Seite verwenden kann um seine Ausgabe so zu erstellen wie man es braucht.

Dienstag, 24. April 2007

Einfache EMail-Maskierung

Es gibt inzwischen viele Lösungen um E-Mailadresse auf einer Homepage vor den unerwünschten E-Mail-Sammel-Robots zu schützen.

Eine ganz einfache aber flexible Lösung will ich hier kurz zeigen.
Sie beruht darauf, dass die E-Mail-Robots nach bekannten Zeichen wie zum Beispiel das @ im Quellcode suchen aber nicht auffinden können.

string eMail = "your@email-address.de";
char[] charArray = eMail.ToLower().ToCharArray();
string encodedEmail = String.Empty;
foreach(char aChar in charArray)
{
object tObject = encodedEmail;
encodedEmail = string.Concat(new object[] { tObject,"&#",Convert.ToInt32(aChar),";"});
}

Das Script liefert aus dem übergebenen (EMail)String folgenden Code:

&#121;&#111;&#117;&#114;&#64;&#101;&#109;&#97;&#105;&#108;&#45;&#97;&#100;&#100;&#114;&#101;&#115;&#115;&#46;&#100;&#101;

Dieser Code wird vom Browser korrekt interpretiert und stellt die E-Mailadresse völlig korrekt (inkl. @) dar. Ein weiterer Vorteil, der sich aus dieser Vorgehensweise ergibt ist, dass auch mailto-Links weiterhin wie gewohnt funktionieren, ohne das der Benutzer die Email-Adresse in seinen Mailclient eingeben oder berichtigen muss, wie es z.B. bei maskierten EMails (z.B. info [AT] domain.de) der Fall sein würde.

Dienstag, 10. April 2007

Windows Workflow Foundation Web Workflow Approvals Starter Kit

Das "Windows Workflow Foundation Web Workflow Approvals Starter Kit" ist ein Visual Studio 2005-Projekt, das die Verwendung der Windows Workflow Foundation für einen einfachen task-basierten Workflow in einer ASP.NET-Webanwendung demonstriert.

Zum Download / weitere Informationen

Mittwoch, 4. April 2007

"Transportable" Anwendungen

Wer kennt das Problem nicht?
Man arbeitet auf verschiedenen PC, Notebooks etc., hat aber z.B. einen Rechner (ev. zu Hause) auf dem die meisten Arbeiten verrichtet werden. Auf diesem hat man dann auch z.B. seinen E-Mail-Client (Outlook Express, Thunderbird etc.) installiert und verrichtet dort auch den größten Teil der E-Mail-Kommunikation inkl. Archivierung etc. Arbeitet man gerade nicht mit diesem PC, ruft man die E-Mails oftmals per Webinterface o.ä. ab. Schlussendlich arbeitet man mit 2 verschiedenen Systemen.
Besonders wenn mal wieder eine Systemneuinstallation ansteht darf man meist zunächst alle Einstellungen etc. speichern um diese anschließend wieder herstellen zu können.
"PortableApps" können diese Problemchen lösen.

Zugegeben:
Was ich hier verzapfe ist nicht neu und für den ein oder andren nicht relevant, weil er sich eine andere Lösung geschaffen hat - für den ein oder anderen ist aber vielleicht doch neu oder ein interessanter Lösungsansatz ;-)

Mit sog. "PortableApps" bist du in der Lage z.B. einen E-Mail-Client wie Thundebird auf einem USB-Stick (oder sonstige externe Speichermedien) zu installieren und die Anwendung von hier aus zu benutzen als wäre Sie normal auf deinem System installiert. Das Coole daran ist aber, dass ich mit dem USB-Stick meinen Client und damit auch alle Einstellungen und Daten überall hin mitnehmen kann und immer mit der einen, gewohnten Anwendung arbeiten kann.

Natürlich ist das Ganze nicht auf einen E-Mail-Client beschränkt. Es gibt inzwischen ein ganze Reihe von Anwendungen aus den verschiedensten Bereichen, die auf diese Weise genutzt werden können (z.B. Filezilla,Firefox,GIMP,OpenOffice uvm.)

Weitere Informationen und Downloads zu dem Thema findets du unter: http://portableapps.com