Mittwoch, 25. April 2012

InstanceEndpoint Port im Azure Emulator

Der ein oder andere von euch hat bestimmt des öfteren schon mit dem Port-Problem des Azure-Emulators gekämpft. Der normale Aufruf - wie man es erwarten würde - funktioniert leider nicht im Emulator:

Dieser API-Call führt dazu, dass in Azure keine Probleme auftreten, im Emulator allerdings der falsche Port zurückgegeben wird.

Workaround

Der hierbei oft angewendete Workaround liegt darin, einfach "-1" zu rechnen.

Allerdings kann es vorkommen - so auch in meinem aktuellen Projekt - dass dies nicht ausreicht und evtl. "-2" nötig wird.
Ich denke wir sind uns einig, dass dies nun nicht länger ein brauchbarer Workaround ist.

Workaround - die Zweite

Ein sicherer Weg liegt darin, direkt per API auf den Azure Emulator zuzugreifen und die dort derzeitig gehosteten Applikationen abzufragen. Zunächst braucht man hierzu DLLs von dem Azure Emulator, der sich unter "C:\Program Files\Windows Azure Emulator\emulator" finden lässt.

Die notwendigen DLLs befinden sich in diesem Root-Verzeichniss und in dem Unterordner "devfabric":

DevFabric.Contracts.dll
Microsoft.ServiceHosting.Tools.DevelopmentFabric.dll
Microsoft.ServiceHosting.Tools.DevelopmentFabric.Service.dll

Der nun notwendige Code lässt sich charmant in eine Extension verpacken und fortan allgemein nutzen.

Nun einfach alle InstanceEndpoint Aufrufe für Ports auf die Extension umleiten. Z.B.:

Habt ihr eine andere Lösung gefunden oder Anmerkungen? Lasst es mich wissen :)

Keine Kommentare:

Kommentar veröffentlichen