WCF-”hosts” på Windows Vista med UAC

Om du har provat Windows Vista så har du säkert märkt av UAC – "User Account Control" som är en av de absolut bästa teknikerna (enligt min bedömning) i Vista. Men den gör också att vissa saker blir det lite mer utmaning att hantera, som exempelvis att "hosta" och exponera Endpoints för en WCF-tjänst i någon annan applikation än IIS. Det är nämligen så att Visual Studio 2005 inte hanterar att starta i en eleverad process med de rättigheter som krävs om Visual Studio 2005 startas som en standard användare och då kommer du få ett felmeddelande som säger:

HTTP could not register URL https://+:1234/. Your process does not have access rights to this namespace (see https://go.microsoft.com/fwlink/?LinkId=70353 for details).

Det finns dock några sätt att lösa detta på.

  1. Starta Visual Studio 2005 med administrativa rättigheter genom att högerklicka på genvägen till Visual Studio 2005 och välj "Run As Administrator".
    Fördelar: Enkelt att utveckla och debugga tjänsten och "hosten".
    Nackdelar: Det kan leda till lite dryga uppträdanden om du i senare fall försöker att kompilera applikationen utan administrativa rättigheter då vissa filer som skapats av kompilatorerna inte går att uppdatera och radera. Viktigaste nackdelen är dock att du då inte kommer att utveckla i samma "säkerhets-miljö" som dina användare kommer att exekvera i.

  2. Använd en "eleverad" "command prompt". Jag har exempelvis skapat en genväg till "CMD Shell" och placerat i "Quick-launch" vilket gör att jag snabbt kan använda Windows-tangenten och siffran som indexerar denna genväg. Jag har också editerat genvägen till att alltid starta som administratör.
    Fördelar: Enkelt att använda, bra att inte behöva köra hela utvecklingsmiljön som administratör.
    Nackdelar: Jag får en fråga varje gång den startar, men det kan jag leva med. Du kan inte debugga hosten på enkelt sätt.

  3. Lägg till ett xml-manifest till applikationen som ska "hosta" tjänsten. Det här XML-manifestet kan då berätta för Vista vilket nivå på rättigheter som behövs.
    Fördelar: Du lär dig skapa XML-manifest vilket är en nyckel-teknik för UAC på Vista.
    Nackdelar: Du kan fortfarande inte "debugga" applikationen utan måste starta utan debuggning. Det verkar också som om Visual Studio 2005 drar igång ett extra konsol-fönster, varför vet jag inte riktigt.

    Läs mer om manifest-filer för UAC på www.devreadiness.org.

  4. Konfigurera http.sys att släppa igenom ditt kontos begäran att öppna portar genom att använda kommandot netsh i en administrativ konsol. Exempelvis:

    netsh http add urlacl url=https://+:1234/MyService user=DOMAIN\username

    Fördelar: Du kan debugga inifrån Visual Studio precis som vanligt.
    Nackdelar: Hmm, nja, jag kommer inte på några, lite struligt att sätta upp kanske :)

    Kenny har bloggat om detta och du kan läsa mer här: https://kennyw.com/indigo/145

Vilken är din favorit???