Dostęp do IHostingEnvironment w metodzie ConfigureServices
102
Muszę sprawdzić ConfigureServicesmetodę, czy nazwa bieżącego środowiska hostingu to „Programowanie”.
Więc użycie IHostingEnvironment.IsDevelopment()metody może być dla mnie ok, ale w przeciwieństwie do metody Configure, nie mam IHostingEnvironment env.
wystarczy utworzyć właściwość w klasie Startup, aby zachować IHostingEnvironment. Ustaw właściwość w konstruktorze Startup, do którego masz już dostęp, a następnie możesz uzyskać dostęp do właściwości z ConfigureServices
Mimo że nowe szablony projektów dla Asp.Net Core 2.0 nie zawierają parametru „IHostingEnvironment env” w konstruktorze startowym, można go określić i zostanie prawidłowo wstrzyknięty.
@Alexsandro_xpt, aby udokumentować odpowiedź na twoje pytanie ConfigureServices, jest to niemożliwe, ponieważ framework nie obsługuje wstrzykiwania zależności dla tej konkretnej metody tak, jak robi to w innych obszarach (prawdopodobnie dlatego, że używasz tej metody do konfigurowania wstrzykiwania zależności). Ustawienie na poziomie konstruktora, jak opisał Joe, powinno obejść ten problem.
Jeśli chcesz uzyskać dostęp IHostingEnvironmentdo ConfigureServices, będziesz musiał wstrzyknąć go za pomocą konstruktora i zapisać do późniejszego dostępu w ConfigureServices:
@BenSmith Myślę, że masz literówkę. Powtórzyłeś IHostingEnvironment w swoim oświadczeniu „IHostingEnvironment jest teraz przestarzały i zamiast tego należy użyć IHostingEnvironment. Jaki jest prawidłowy zamiennik IHostingEnvironment?
No! Dobre miejsce @Blake. Usunę mój poprzedni komentarz. Mój komentarz powinien był brzmieć: „IHostingEnvironment jest teraz przestarzały, zamiast tego należy użyć IWebHostEnvironment”.
A żeby było jeszcze bardziej jasne, czy nie należy powiedzieć, że IHostingEnvironmentjest on przestarzały dopiero od dnia .Net Core 3.0? (Pracuję nad „testem do domu”, który wywołuje services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);wewnątrz ConfigureServices()metody, a IHostingEnvironment działa dobrze.
@ScottFraley poprawne. Ponieważ to pytanie i odpowiedź pochodzą z przedziału czasowego .NET Core 2.x (z którego wiele projektów będzie nadal korzystać przez dłuższy czas), ma ono nadal zastosowanie.
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.