2017-05-10 16 views
6

jedyne miejsce na całym internecie mogę znaleźć wyjaśnienie jest MSDN:Co naprawdę robi Zastępowanie głównego adresu URL aplikacji?

Określa alternatywną ścieżkę do głównego adresu URL aplikacji. Użyj tej opcji , jeśli katalog główny aplikacji sieci Web nie jest katalogiem głównym projektu.

Od here Zrozumiałem, że "root aplikacji" jest ścieżką, która pobiera podczas korzystania z tyldy w ASP.NET. Tak więc oczekiwałbym, że jeśli przejdę do właściwości projektu - Web - "Zastąp główny katalog aplikacji" i podaj inny adres URL, to tylda będzie mapować do tego adresu URL.

Ale tak nie jest. Na przykład moja witryna znajduje się na katalogu wirtualnym - http://localhost/WebApplication1 i na "Override application root" Próbuję określić http://localhost/WebApplication2 lub http://localhost lub http://WebApplication2 (które wszystkie istnieją w moim lokalnym IIS). Teraz, gdy piszę:

Response.Redirect("~/test2/login"); 

Oczekuję, że przekieruje mnie do http://localhost/WebApplication2/test2/login. Ale zamiast tego przekierowuje mnie do http://localhost/WebApplication1/test2/login, tak jakbym nie zastąpił "root aplikacji".

Więc co naprawdę ma ta funkcja? A może to nie działa, bo czegoś brakuje i nie zdefiniowałem go właściwie?

Odpowiedz

5

Zastąpienie głównego adresu URL aplikacji nie zmienia się, gdy katalog główny aplikacji znajduje się w aplikacji. Zmienia adres URL używany do osiągnięcia katalogu głównego aplikacji. Ponieważ usługa IIS dokonuje weryfikacji niektórych nazw hostów, jest używana do określenia, czy chcesz uzyskać dostęp do aplikacji za pomocą innych środków niż localhost:[PORT].

Na przykład, jeśli zastąpi go www.myapp.com można wtedy osiągnąć swój wniosek, dodając to do pliku hosts:

127.0.0.1  www.myapp.com 

Może to być szczególnie przydatne, jeśli robisz aplikacja dostępna do zdalnego urządzenie (maszyna wirtualna na komputerze lub urządzenie mobilne w sieci), ponieważ nie będą w stanie przejść do adresu localhost jako adresu aplikacji.

+0

Dobra odpowiedź, szukałem wyjaśnienia i nigdzie nie mogłem go znaleźć! Nadal nie rozumiem, dlaczego tak jest potrzebne, ponieważ mogłem po prostu dodać wiązanie IIS do tej strony i zdefiniować w "Host Name" 'www.myapp.com' - wydaje się, że osiągnęłoby dokładnie ten sam efekt ? – BornToCode

+3

Jeśli używasz IISExpress do rozwoju lokalnego, nie ma wiele GUI, które widzę do konfigurowania takich rzeczy. O ile mogę powiedzieć, możesz użyć tej opcji w konfiguracji kompilacji lub ręcznie edytować pliki konfiguracyjne IISExpress. – IronSean