Skip navigation

Die Client Library wurde auf die folgenden API Versionen aktualisiert:

  • zanox Publisher API Version 2011-03-01 (stable)
  • zanox Connect API Version 2010-02-01 (stable)
  • zanox Data API Version 2011-05-01 (stable)

Folgendes wurde geändert:

  • Migration auf neueste API Versionen
  • zanox.com als Connect Domain
  • Überladung des Constructors ohne httpProxy Parameter
  • Implementierung von GetTrackingCategories in der Publisher API

Die zanox Client Library ist im Wesentlichen ein SOAP Wrapper und unterstützt die Drei Authentifizierungsmechanismen:

  • Authentifizierung für den Zugriff auf den eigenen Account mittels eigener API Credentials
  • Authentifizierung im Namen eines Dritten mit einer aktiven UI Session (zanox Connect OAuth Flow)
  • Authentifizierung im Namen eines Dritten mit OfflineToken

Wie funktioniert der Zugriff auf den eigenen Account mittels eigener API Credentials?
Voraussetzung: Erzeuge dir deine API Credentials (API Keys) für deinen Publisher Account, indem du dir unter apps.zanox.com eine Application anlegst. Für den Zugriff au den eigenen Account ist es nicht notwendig, die Application im Application Store zu veröffentlichen.

var publisherAPI = new PublisherAPI();

var permanentDeveloperCredentials = new sessionType()
{
connectId = Properties.Settings.Default.ConnectId,
sessionKey = Properties.Settings.Default.PublicKey,
secretKey = Properties.Settings.Default.SecretKey
};

var profile = publisherAPI.GetProfile(zanoxConnectSession);
var sales = publisherAPI.GetSales(zanoxConnectSession, ...some more filters);
var incentives = publisherAPI.GetIncentives(zanoxConnectSession, ...filters);

Wie funktioniert der Connect Flow?
Voraussetzung: Erzeuge wiederum eine Application unter apps.zanox.com eine Application anlegst. Achte diesmal darauf, dass du sie in der Kategorie “For Sale” anlegst und einen Callback Handler einträgst. Z.B. www.example.com/callback.ashx. Nun kannst du Kontakt mit zanox aufnehmen um das Rechtemanagement, Freischaltung von Testnutzern, Offlinezugriff und eventuelles Pricing deiner Application festzulegen. Nach der Fertigstellung deiner Anwendung kannst du deine App dann deine Application im Application Store veröffentlichen.

Der Connect Flow Startet mit einem Connect Link für deine App. Dieser setzt sich wie folgt zusammen:
https://auth.zanox.com/login?appid=FA5D6DA48D2BCA473C39
Der Link für zum Loginformular von zanox. Nach erfolgreichem Login findet ein Redirect zu deiner Callback Url statt. Es wird dynamisch ein sog. AuthToken als URL Parameter angefügt. Das AuthToken wird bei jedem Connect Flow neu erzeugt und kann nur einmalig für den Aufruf von GetSession verwendet werden. Der Rückgabewert von GetSession enthält API Credentials für den delegierten API Zugriff auf die freigegebenen API Resourcen (z.B. Profile & Reports) im Namen des Publishers. Das folgende Codebeispiel setzt den eben beschriebenen Connect Flow voraus; anbei ein Beispiel für einen CallbackHandler:

// retrieve authToken from callback request
string authToken = context.Request[PublisherAPI.AUTHTOKEN_NAME];
string publicKey = System.Configuration.ConfigurationManager.AppSettings["ZANOX.PublicKey"];
string secretKey = System.Configuration.ConfigurationManager.AppSettings["ZANOX.SecretKey"];

var publisherAPI = new PublisherAPI();
var zanoxConnectSession = publisherAPI.GetSession(publicKey, secretKey, authToken);</code>

var profile = publisherAPI.GetProfile(zanoxConnectSession);
var sales = publisherAPI.GetSales(zanoxConnectSession, ...some more filters);
var incentives = publisherAPI.GetIncentives(zanoxConnectSession, ...filters);

zanox connect dialog

 

Codebeispiele des Client Toolkits
Das Client Toolkit enthält Beispiele für alle Drei Authentifizierungsfälle aber auch für verschiedene Projekttypen:

  • Example Websites (Forms & MVC) implementing zanox Connect Authentification Flow
  • Example Console Application mit OfflineToken
  • Example Widget using the RESTful JSONP API

Falls weitere Tutorials zum Thema zanox Web Services interessant sind, schreib mir einfach eure Anregungen ins Kommentarfeld oder per Email.
Weitere Codebeispiele und Anwendungsfälle folgen.

Wer kennt nicht folgendes Problem mit der Druckerwarteschlange von Windows: Der Drucker klemmt, ein Druckauftrag bricht ab, der Drucker “spinnt”. Man öffnet die Druckerwarteschlange und versucht verzweifelt “Auftrag neustarten”, “Druckauftrag abbrechen”, “Druckauftrag löschen”, etc……  und nichts passiert. Allen Versuchen zum Trotz bleicht die Druckerwarteschlange verstopft mit verlohrenen Druckaufträgen.

 

Batchdatei zum Löschen der Druckerwarteschlange erstellen

Folgendes BATCH Script lößt das Problem:

net stop spooler
FOR %%T IN (%systemroot%\system32\spool\printers\*.*) DO DEL %%T
net start spooler

Einfach mit Notepad eine neue Textdatei erstellen, die Drei Zeilen einfügenund unter “Drucker_Neustart.bat” speichern. Dabei sicherstellen, dass Notepad nicht “Drucker_Neustart.bat.txt” daraus macht.

Was passiert?

Zuerst wird der Spooler Dienst von Windows beendet. Anschliessend lassen sich die Druckaufträge im temp-Verzeichnis der Druckerwarteschlange löschen. Die letzte Zeile startet den Spooler Dienst wieder. Die Druckerwarteschlange sollte nun leer sein und bereit für neue Druckaufträge.

Wie startet man das Script?

  1. Rechtsklick auf die Datei “Drucker_Neustart.bat”
  2. Ausführen als Admin

Drucker_Neutstart.zip

Wer sich für quelloffene Blogs für .NET interessiert, kennt sicherlich das Projekt BlogEngine auf Codeplex.

Doch wie installiert man BlogEngine 2.0 auf Windows Server 2008 R2 mit IIS7.5?

Im Prinzip mit wenigen Klicks, allerdings gibt es einen Fallstrick, den ich hier aufführe:

1) Download von BlogEngine.NET 2.0 (web) unter http://blogengine.codeplex.com

2) Entpacken nach z.b. c:\websites\blog. Darauf achten, dass für die Dateien der Schreibschutz nicht gesetzt ist.

3) Im Internetinformationsdienste (IIS)-Manager eine neue Site für das obige Verzeichnis anlegen. Als Bindung (Binding) für die Site eine entsprechende Hostname (z.B. “developerheroes.com”) eurer Domain auswählen und speichern.

Dabei darauf achten, dass ein Anwendungspool mit den folgenden Einstellungen ausgewählt ist:

  • Pipelinemodus: Klassisch
  • .NET Framework-Version 2.0

4) Sorgt bei eurem Domain Registrar  (z.B. united-domains) dafür, dass der die entsprechende Domain auf die IP des Windows Servers zeigt, auf dem ihr den Blog einrichtet. Setzt dazu in der Host Konfiguration eures Registrars den sog. A-Eintrag (A-Record) auf die IP Adresse eures Windows Servers. Änderungen hierbei können üblicherweise bis zu 24h dauern, bis sie tatsächlich wirksam werden.

5) Gebt nun dem Anwendungspool schreibrechte auf das Verzeichnis ~/App_Data. Im Beispiel: c:\websites\blog\App_Data. Geht dazu mit dem Explorer über “Eigenschaften – Sicherheit” in die Sicherheitseinstellungen des Ordners.

5) Nach starten der Site und des Anwendungs Pools ist nun die Startseite des Blogs zu sehen.

6) Zugriff auf dem Verwaltungsbereich des Blogs per Standardpassword:

  • Login: “admin”
  • Passwort: “admin”

7) Wenn die voreingestellte Kontakt-Seite “Contactx.aspx” mti einer Fehlermeldung antwortet, hilft folgender Kniff:

In der Web.config findet sich der Teil customErrors mode=”RemoteOnly”. Dabei ist die Groß-Kleinschreibung einzuhalten.

Der Parameter mode muss zunächst auf den Wert “On” gestellt werden.

Nach dem Speichern und Neustarten der Anwendung funktioniert nun die Kontaktseite. Aus Sicherheitsgründen stellen wir die “customErrors” wieder auf “RemoteOnly”.

Zusammenfassung:

In wenigen Schritten kann eine neue Bloginstanz mit BlogEngine 2.0 aufgesetzt werden. Nach dem Entpacken des Downloads von codeplex und gesetzten Schreibrechten für das Verzeichnis ~/App_Data läuft BlogEngine in einem Classic .NET 2.0 Anwendungs Pool.

 

 

Wenn Papier und Bleistift Copy & Paste beherrschten, bräuchte es wohl keine Wireframe und Mockup Tools. Dieser Artikel listet die nach unser Einschätzung brauchbarsten Wireframe Werkzeuge für Webentwickler auf. Bewertet werden der erste Eindruck, Funktionsumfang, Einfachheit, Nützlichkeit und Gestaltung vorhandener Web-Bausteine, Pricing, Exportfunktionen und Support für verteiltes Arbeiten.

 

1) Lumzy

Mit Lumzy lässt sich schnell und einfach eine Idee visualisieren. Alle wichtigen Elemente für eine Webseite sind vorhanden. Jederzeit kann das Projekt von der Scribble Optik in eine semi-reale IE- oder Safari-Optik umgeschalten werden. Lumzy unterstützt Navigationselemente. Damit können die wichtigsten Flows des Webprojektes umgesetzt und als interaktive Slideshow ausgeben werden. Dank Realtime Collaboration können zeitgleich mehrere Personen an einem Mockup arbeiteten.

 

Lumzy Wireframe Tool