Webio + .NET Core + dostęp do katalogu z innego projektu

Ostatnio hostuję prostą aplikację .NET Core na współdzielonym hostingu Webio. Pojawił się problem ponieważ aplikacja dostępna dla klientów musi mieć dostęp do katalogu, do którego wrzucane są pliki w panelu admina (osobna aplikacja).

Dostęp do katalogu spoza projektu realizuje u mnie middleware, który tworzy wirtualny katalog dający dostęp do fizycznej ścieżki:

app.UseFileServer(new FileServerOptions
{
    FileProvider = new PhysicalFileProvider(Path.Join(env.ContentRootPath, config.Value.UploadPath)),
    RequestPath = new PathString("/uploads"),
    EnableDirectoryBrowsing = false
});

Więcej o serwowaniu statycznych plików za pomocą middleware w dokumentacji (dla uściślenia – nie chciałem używać katalogu wirtualnego, ponieważ lokalnie nie hostuję aplikacji na IIS, jak to robi Webio i chciałem mieć jednolity sposób udostępniania katalogu).

Oczywiście bezpośrednio po wdrożeniu aplikacja nie działała, ponieważ nie mogła „znaleźć” ścieżki, do której ma mapować katalog „uploads”. Początkowo myślałem, że wystarczy zaznaczyć opcję „Włącz ścieżki nadrzędne”, która powinna dać dostęp do plików spoza projektu, ale nie, włączenie opcji nie pomogło.

Ratunkiem okazało się nadanie uprawnień dostępu do katalogu w aplikacji admina dla aplikacji klienta. Oto lista kroków:

  • Wchodzimy do Menedżera plików (panel po lewej)
  • Nawigujemy do katalogu nadrzędnego dla naszego udostępnianego „uploads”
  • Klikamy na ikonkę edycji uprawnień i dla aplikacji klienta zaznaczamy „Czytaj” oraz „Zastąp uprawnienia na wszystkich podrzędnych obiektach”
  • Następnie przechodzimy do wszystkich katalogów nadrzędnych i nadajemy aplikacji klienta uprawnienia odczytu, ale bez zaznaczania „Zastąp uprawnienia na wszystkich podrzędnych obiektach”
Webio - edycja uprawnień dla współdzielonego katalogu

Webio – edycja uprawnień dla współdzielonego katalogu

Ważna uwaga: struktura projektu wdrożonego w webio.pl jest inna niż lokalnie, katalog wwwroot znajduje się… w katalogu wwwroot. Warto pamiętać o ustawieniu odpowiedniej ścieżki dla produkcyjnego projektu.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*
*
Website