Корак 1: везивање у конфигурацији
У конфигурационом фајлу IIS Express-а, у одељку <bindings> сајта, поред постојећег везивања за localhost додаје се и везивање за локалну IP адресу:
<bindings> <binding protocol="http" bindingInformation="*:10080:localhost" /> <binding protocol="http" bindingInformation="*:10080:192.168.1.2" /> </bindings>
Где се фајл налази зависи од начина покретања:
- када се IIS Express покреће самостално или из Visual Studio-а старијег од верзије 2015:
C:\Users\{корисничко име}\Documents\IISExpress\config\applicationhost.config; - Visual Studio 2015 и 2017:
.vs\config\applicationhost.configу фолдеру решења (solution); - Visual Studio 2019 и новији:
.vs\{назив решења}\config\applicationhost.configу фолдеру решења.
Порт (овде 10080) треба да буде исти као у постојећем везивању пројекта.
Корак 2: резервација URL адресе
Windows дозвољава програму без администраторских привилегија да слуша на адреси која није localhost само ако је та адреса резервисана. Команда се покреће у командној линији отвореној као администратор:
netsh http add urlacl url=http://localhost:10080/ user=everyone netsh http add urlacl url=http://192.168.1.2:10080/ user=everyone
Назив групе everyone ради само на енглеској верзији Windows-а; на локализованој верзији група има друго име и команда јавља грешку. Сигурније је навести групу преко SID-а, што ради на сваком језику система:
netsh http add urlacl url=http://192.168.1.2:10080/ sddl=D:(A;;GX;;;WD)
Корак 3: правило на фајерволу
На рачунару на ком ради апликација треба дозволити долазне везе на тај порт. То се може урадити кроз подешавања Windows Defender Firewall-а или једном командом, такође као администратор:
netsh advfirewall firewall add rule name="IIS Express 10080" dir=in action=allow protocol=TCP localport=10080
Провера и уклањање
После измена треба зауставити IIS Express (иконица у системској траци) и поново покренути пројекат. Сајт је тада доступан и на http://localhost:10080/ и на http://192.168.1.2:10080/, и са других уређаја у истој мрежи. Ако се појави грешка Bad Request - Invalid Hostname, IIS Express није прочитао везивање из првог корака, најчешће зато што је измењен погрешан applicationhost.config.
Када приступ преко IP адресе више није потребан, резервација и правило на фајерволу се уклањају:
netsh http delete urlacl url=http://192.168.1.2:10080/ netsh advfirewall firewall delete rule name="IIS Express 10080"
Када је ово корисно?
Приступ преко локалне IP адресе користан је када апликацију треба испробати на мобилном телефону или таблету, када више чланова тима тестира исту апликацију са својих рачунара или када други уређај у мрежи треба да позове API који је још у развоју. Више о самом серверу има у Microsoft-овом прегледу IIS Express-а.
Новије ASP.NET Core апликације уместо IIS Express-а могу да користе уграђени Kestrel сервер. Код њих је довољно да се у фајлу launchSettings.json адреса у applicationUrl постави на http://0.0.0.0:10080; први и други корак тада нису потребни, а правило на фајерволу јесте.
Оставите одговор