2014-10-27 14 views
19

Wie machen Sie eine Web-API-Selbsthost binden auf allen Netzwerkschnittstellen?Web-API-Selbsthost - binden Sie an alle Netzwerkschnittstellen

Ich habe den folgenden Code derzeit. Leider bindet es nur auf localhost. Der Zugriff auf diesen Server von einem anderen als localhost schlägt fehl.

var baseAddress = string.Format("http://localhost:9000/"); 
      using (WebApp.Start<Startup> (baseAddress)) 
      { 
       Console.WriteLine("Server started"); 
       Thread.Sleep(1000000); 
      } 

Antwort

29

einfach die Adresse Basis ändern wie diese

 var baseAddress = string.Format("http://*:9000/"); 
     using (WebApp.Start<Startup> (baseAddress)) 
     { 
      Console.WriteLine("Server started"); 
      Thread.Sleep(1000000); 
     } 

Und es sollte correctlly an alle Schnittstellen binden.

+5

Ich habe Leute scheinen mit http: // +: 9000 /. Was ist der Unterschied zwischen + und *? @ mauriciod73 – regisbsb

+7

Führen Sie Visual Studio als Administrator, wenn Sie Target Invocation Exception erhalten und "Zugriff verweigert" – Fidel

+13

"Was ist der Unterschied zwischen + und \ *?" siehe [UrlPrefix-Zeichenfolgen] (https://msdn.microsoft.com/en-us/library/aa364698 (v = V.85) .aspx). '+' ist der starke Platzhalter, '*' der schwache Platzhalter. Stark bedeutet hier nur, dass der Hostname einer eingehenden Anfrage zuerst auf diese Bindung getestet wird, während die schwache Bindung ('\ *') nach anderen Bindungen angewendet wird, z. B. denen, die einen expliziten Hostnamen angeben. So können Sie die Bindungen so einrichten, dass sie abhängig von der eingehenden URL unterschiedliche Ressourcen bereitstellen, und die Bindung "\ *" nimmt alles auf, was nicht explizit gebunden war. – redcalx

5

binden sie mit: -

var baseAddress = string.Format("http://localhost:+:9000/"); 

Wenn Sie Zugang Ausnahmen erhalten, bitte nicht Visual Studio als Admin-Benutzer starten. Fügen Sie stattdessen eine URL-Reservierung hinzu. Starten Sie ein Eingabekonsolenfenster als Administrator und ausführen:

netsh 
netsh> http add urlacl url="http://+:9000/" sddl=D:(A;;GX;;;S-1-1-0) 

Die SDDL „alle Benutzer“ von den aktuellen Domain/Maschine übersetzt.

Verwandte Themen