2014-10-27 13 views
19

W jaki sposób uczynić bindowanie hosta Web API we wszystkich interfejsach sieciowych?Web Host własny - bind na wszystkich interfejsach sieciowych

Mam poniższy kod obecnie. Niestety, wiąże się tylko na localhost. Tak więc nie można uzyskać dostępu do tego serwera z hosta innego niż lokalny.

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

Odpowiedz

29

Wystarczy zmienić adres bazowy jak ten

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

A powinno wiązać correctlly do wszystkich interfejsów.

+5

Wydaje mi się, że ludzie używają http: // +: 9000 /. Jaka jest różnica między + i *? @ mauriciod73 – regisbsb

+7

Uruchom wizualne studio jako administrator, jeśli uzyskasz wyjątek Wywołanie celu i "Odmowa dostępu" – Fidel

+13

"Jaka jest różnica między + i \ *?" patrz [Ciągi UrlPrefix] (https://msdn.microsoft.com/en-us/library/aa364698 (v = vs.85) .aspx). "+" jest silnym symbolem wieloznacznym, "*" słabym symbolem wieloznacznym. Silne tutaj oznacza po prostu, że nazwa hosta na przychodzącym żądaniu jest najpierw sprawdzana pod kątem tego powiązania, podczas gdy słabe wiązanie ("\ *") jest stosowane po innych powiązaniach, takich jak te określające jawną nazwę hosta. Możesz więc skonfigurować powiązania w celu obsługi różnych zasobów w zależności od przychodzącego adresu URL, a powiązanie "\ *" odbiera wszystko, co nie było jawnie związane. – redcalx

5

wiążą go za pomocą: -

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

Jeśli wystąpią wyjątki dostępu, proszę nie uruchomić Visual Studio jako administrator. Zamiast tego dodaj rezerwację adresu URL. Uruchom okno konsoli poleceń jako administrator i wykonanie:

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

SDDL przekłada się do „wszystkich użytkowników” z bieżącej domenie/maszyny.

Powiązane problemy