Własna domena w IISExpress
Wstęp (możesz pominąć)
Gdy tworzysz i uruchamiasz webową aplikację (czy to WebApp, czy WebApi) w .NetCore, to domyślnie startuje ona pod adresem: http://localhost:port. Zazwyczaj to wystarcza do tworzenia, debugowania i późniejszej publikacji aplikacji. I super.
Jednak czasem potrzebujesz uruchomić aplikację pod konkretną domeną – np. gdy w grę wchodzą dodatkowe API – przykładem może być api facebooka lub różnego rodzaju captche (reCaptcha, hCaptcha itd.). Te API potrzebują być wywołane spod konkretnego adresu lub wywołać coś na konkretnym adresie. I wtedy localhost może być problemem.
Niektóre API w ogóle nie chcą współpracować z localhost. I co wtedy? No, zawsze można opublikować aplikację na serwerze i próbować ją debugować. Więcej z tym problemów, niż co warte – nie tędy droga. Na szczęście istnieje sposób, żeby twój localhost stał się prawilną domeną. I o tym będzie w tym poście.
UWAGA!
Pamiętaj, że jeśli to robisz, nie twórz domen istniejących w sieci. Jeśli masz zarejestrowaną domenę, np. xmoney-app.pl, to wtedy Twoim lokalnym odpowiednikiem powinna być subdomena istniejąca jedynie lokalnie, np: local.xmoney-app.pl, czy też dev.xmoney-app.pl albo moja-super-subdomena-lokalna.xmoney-app.pl
Rozwiązanie
Posługując się taką subdomeną, zazwyczaj pozwalasz zewnętrznym API na uznanie jej jako subdomeny Twojej prawdziwej domeny i nie ma tu problemów.
Jak to osiągnąć (mowa o Windowsie):
- Znajdź swój plik hosts. Domyślnie znajduje się w lokalizacji: C:\Windows\System32\drivers\etc. Plik hosts to takie coś w rodzaju „lokalnego DNSa”.
- Wyedytuj go (w trybie administratora) i wskaż swojej pętli zwrotnej swoją subdomenę. Na ludzki, dodaj do 127.0.0.1 – swoją subdomenę, np:
127.0.0.1 local.xmoney-app.pl
tutaj oczywiście zamiast xmoney, umieszczasz swoją subdomenę 🙂
Pamiętaj, żeby pozbyć się hasha '#’ jeśli znajduje się na początku (hash oznacza komentarz). A między adresem, a domeną koniecznie daj tabulator.
- Teraz musisz swoją subdomenę powiązać ze swoją aplikacją. Wejdź do katalogu swojej solucji. Jeśli nie widzisz tam katalogu .vs, to pokaż ukryte pliki i foldery. Generalnie poszukaj pliku
applicationhost.config
, w VisualStudio powyżej 15 wersji powinien znajdować się w katalogu:[TwojaSolucja].vs[Nazwa]\config\
- Skopiuj ten plik gdzieś obok i wyedytuj oryginał. Ten plik to są ustawienia IISExpress.
- Odszukaj w nim sekcję
"sites"
, a następnie konkretny projekt, którego domenę chcesz zmienić. Jeśli masz tylko jeden webowy projekt w solucji, to w sekcji sites powinieneś mieć tylko jeden wpis. - Odnajdź informację o bindowaniu. Generalnie szukasz tego:
<binding protocol="http" bindingInformation="*:5001:localhost" />
nr portu u Ciebie może być inny.
- Dodaj tam drugi wpis:
<binding protocol="http" bindingInformation="*:5001:local.xmoney-app.pl" />
oczywiście wpisując tutaj swoją subdomenę, którą umieściłeś w pliku hosts.
UWAGA! Wpis powinieneś dodać, a nie podmienić ten oryginalny
- Zaktualizuj projekt w Visual Studio – kliknij na swój projekt webowy prawym klawiszem myszy i wybierz „Properties”.
- Na karcie „Debug” w polu
App URL
wpisz adres swojej domeny, np:http://local.xmoney-app.pl:44313
– czyli zasadniczo to, co przed chwilą zrobiłeś w plikuapplicationhost.config
. Tylko teraz – dla projektu.
I to już.
UWAGA! Jest jeden haczyk. Żeby to zadziałało i strona się normalnie uruchomiła, musisz otworzyć VisualStudio w trybie Administratora. Niestety w tym momencie (początek roku 2021) uruchomienie IISExpress w innej domenie niż localhost, wymaga uprawnień administratora.
Możliwe problemy:
W rzeczywistości nie zawsze jest miło i przyjemnie. Czasem nawet wódka szkodzi. Tak i tutaj może dojść do kilku problemów.
- Uruchamiasz aplikację, a tam komunikat
"Website cannot be found"
,"Nie można odnaleźć strony"
lub tego typu cuda. To może mieć związek z serwerem proxy. Musisz zatem pominąć ten adres (całą swoją subdomenę) w ustawieniach serwera proxy. W różnych przeglądarkach robi się to inaczej. Ja, używając Windowsa 10, robię to dla całego systemu, czyli:
- otwórz „pasek start”
- wpisz: „Zmień ustawienia serwera proxy”
- na dole powinieneś zobaczyć okienko, w którym możesz dołożyć wyjątki do proxy – czyli adresy zaczynające się od tych wpisów, będą pomijane przez proxy. Tylko UWAGA! Musisz dodać całą swoją subdomenę, czyli w moim przypadku:
local.xmoney-app.pl
- Problem z SSL.
Teoretycznie wystarczy, że w ustawieniach projektu na karcie Debug zaznaczysz opcję „Enable SSL”. Automatycznie powinien się zrobić wpis w pliku applicationhost.config. Uruchamiając teraz aplikacje, dostaniesz komunikat, że jest niebezpieczna i opcję jej uruchomienia. I tyle. Jeśli debugujesz na Chromie, to będzie on Ci pokazywał brzydkie rzeczy na pasku. Ale nie przejmuj się tym, póki debugujesz.
Jeśli debugujesz na Firefoxie, nie zobaczysz takich strasznych rzeczy, bo FF pokazuje tylko małą uwagę, że certyfikat jest developerski na localhost.
Jeśli znalazłeś w tekście jakiś błąd lub masz inny problem, podziel się w komentarzu