Pytanie Jak sprawdzić, czy kod działa na witrynach Azure


Wiedziałem, że możemy użyć RoleEnvironment.IsAvailable aby sprawdzić, czy kod działa w roli Web / Worker. Co powiesz na Witryny Azure?

Próbowałem powyższego kodu RoleEnvironment, ale zawsze zwraca false. Muszę uruchomić kod konfiguracji Application_Start więc nie mogę polegać na rzeczy na życzenie.

Każda pomoc jest doceniana.


15
2017-09-05 04:00


pochodzenie




Odpowiedzi:


To jest bardzo proste, wystarczy sprawdzić, czy istnieje ta zmienna środowiskowa: WEBSITE_SITE_NAME.

!String.IsNullOrEmpty(Environment.GetEnvironmentVariable("WEBSITE_SITE_NAME"))

Treścią tego będzie nazwa Twojej strony.

Aby zobaczyć więcej zmiennych środowiskowych, które masz w swojej witrynie, przejdź na poniższy link: https: // {sitename} .scm.azurewebsites.net / Env


33
2017-09-05 23:06



Pracował jak urok. Dziękuję Ci! Czy jest to jednak jakiś chwyt lub dokumentacja oficjalnie stworzona przez Azure? Czy to może być zmienione w przyszłości? - Gildor
To nie jest sztuczka, musi być udokumentowana, ale nie sądzę, że tak jest. Jednak nie zostanie to zmienione, ponieważ jest uważane za API. - Amit Apple
github.com/projectkudu/kudu/wiki/Azure-runtime-environment - Amit Apple


Nie możesz (łatwo).

W przypadku witryn sieci Web w kolorze błękitnym Twoja witryna działa w IIS. RoleEnvironment zawsze będzie fałszywe, ponieważ nie zostało tam zainicjowane. Spójrz na witryny internetowe Azure bardziej jak zwykły hosting. Czy wiesz, czy twoja strona działa w XYZ Hosting, czy w twoim własnym IIS?

Jedną rzeczą, którą można rozważyć, są ustawienia aplikacji w pliku web.config (tak, sekcja ustawień aplikacji) i pewne ustawienia wskazujące, czy uruchamia się na stronach internetowych, czy nie. Przeczytać Pełny artykuł o ustawieniach aplikacji w witrynach Azure zrozumieć, co mam na myśli. W skrócie: jeśli ustawisz wartość ustawienia za pośrednictwem portalu, będzie to miało pierwszeństwo przed tym, co jest w web.config. Możesz nawet ustawić go w Portalu, nie mając go w swoim pliku web.config.


2
2017-09-05 08:52



Twoje rozwiązanie działa również, ale Amit lepiej pasuje do tego pytania - nie trzeba konfigurować każdej witryny osobno. Ale dam ci głos, aby ta odpowiedź pomogła w pewnych sytuacjach. Dzięki! - Gildor
Jest inne podejście także. - Ognyan Dimitrov
Ogi, odwołujesz się całkowicie do usługi Cloud Service (a.k.a. Web Role), a nie strony internetowej. Jak już wspomniałem w mojej odpowiedzi - brakuje całego RoleEnvironment w Witrynach, jesteś po prostu uruchomiony w pełni funkcjonalnym IIS. Twoja klasa RoleEntryPoint nigdy nie zostanie utworzona w witrynie Azure. - astaykov