Korak 1: vezivanje u konfiguraciji
U konfiguracionom fajlu IIS Express-a, u odeljku <bindings> sajta, pored postojećeg vezivanja za localhost dodaje se i vezivanje za lokalnu IP adresu:
<bindings> <binding protocol="http" bindingInformation="*:10080:localhost" /> <binding protocol="http" bindingInformation="*:10080:192.168.1.2" /> </bindings>
Gde se fajl nalazi zavisi od načina pokretanja:
- kada se IIS Express pokreće samostalno ili iz Visual Studio-a starijeg od verzije 2015:
C:\Users\{korisničko ime}\Documents\IISExpress\config\applicationhost.config; - Visual Studio 2015 i 2017:
.vs\config\applicationhost.configu folderu rešenja (solution); - Visual Studio 2019 i noviji:
.vs\{naziv rešenja}\config\applicationhost.configu folderu rešenja.
Port (ovde 10080) treba da bude isti kao u postojećem vezivanju projekta.
Korak 2: rezervacija URL adrese
Windows dozvoljava programu bez administratorskih privilegija da sluša na adresi koja nije localhost samo ako je ta adresa rezervisana. Komanda se pokreće u komandnoj liniji otvorenoj kao administrator:
netsh http add urlacl url=http://localhost:10080/ user=everyone netsh http add urlacl url=http://192.168.1.2:10080/ user=everyone
Naziv grupe everyone radi samo na engleskoj verziji Windows-a; na lokalizovanoj verziji grupa ima drugo ime i komanda javlja grešku. Sigurnije je navesti grupu preko SID-a, što radi na svakom jeziku sistema:
netsh http add urlacl url=http://192.168.1.2:10080/ sddl=D:(A;;GX;;;WD)
Korak 3: pravilo na fajervolu
Na računaru na kom radi aplikacija treba dozvoliti dolazne veze na taj port. To se može uraditi kroz podešavanja Windows Defender Firewall-a ili jednom komandom, takođe kao administrator:
netsh advfirewall firewall add rule name="IIS Express 10080" dir=in action=allow protocol=TCP localport=10080
Provera i uklanjanje
Posle izmena treba zaustaviti IIS Express (ikonica u sistemskoj traci) i ponovo pokrenuti projekat. Sajt je tada dostupan i na http://localhost:10080/ i na http://192.168.1.2:10080/, i sa drugih uređaja u istoj mreži. Ako se pojavi greška Bad Request - Invalid Hostname, IIS Express nije pročitao vezivanje iz prvog koraka, najčešće zato što je izmenjen pogrešan applicationhost.config.
Kada pristup preko IP adrese više nije potreban, rezervacija i pravilo na fajervolu se uklanjaju:
netsh http delete urlacl url=http://192.168.1.2:10080/ netsh advfirewall firewall delete rule name="IIS Express 10080"
Kada je ovo korisno?
Pristup preko lokalne IP adrese koristan je kada aplikaciju treba isprobati na mobilnom telefonu ili tabletu, kada više članova tima testira istu aplikaciju sa svojih računara ili kada drugi uređaj u mreži treba da pozove API koji je još u razvoju. Više o samom serveru ima u Microsoft-ovom pregledu IIS Express-a.
Novije ASP.NET Core aplikacije umesto IIS Express-a mogu da koriste ugrađeni Kestrel server. Kod njih je dovoljno da se u fajlu launchSettings.json adresa u applicationUrl postavi na http://0.0.0.0:10080; prvi i drugi korak tada nisu potrebni, a pravilo na fajervolu jeste.
Ostavite odgovor