Wdrażanie aplikacji internetowej ASP.NET z SQL Server Compact przy użyciu programu Visual Studio lub Visual Web Developer: ustawianie uprawnień folderu — 6 z 12

Autor : Tom Dykstra

Pobierz projekt startowy

W tej serii samouczków pokazano, jak wdrożyć (opublikować) projekt aplikacji internetowej ASP.NET zawierający bazę danych SQL Server Compact przy użyciu programu Visual Studio 2012 RC lub Visual Studio Express 2012 RC for Web. Możesz również użyć programu Visual Studio 2010, jeśli zainstalujesz aktualizację publikowania w sieci Web. Aby zapoznać się z wprowadzeniem do serii, zobacz pierwszy samouczek z serii.

W przypadku samouczka przedstawiającego funkcje wdrażania wprowadzone po wydaniu programu Visual Studio 2012 w wersji RC przedstawiono sposób wdrażania wersji SQL Server innych niż SQL Server Compact oraz pokazano, jak wdrożyć w Azure App Service Web Apps, zobacz ASP.NET Web Deployment using Visual Studio (Wdrażanie w Internecie przy użyciu programu Visual Studio).

Omówienie

W tym samouczku ustawisz uprawnienia do folderu Elmah we wdrożonej witrynie sieci Web, aby aplikacja mogła tworzyć pliki dziennika w tym folderze.

Podczas testowania aplikacji internetowej w programie Visual Studio przy użyciu programu Visual Studio Development Server (Cassini) aplikacja jest uruchamiana pod Twoją tożsamością. Najprawdopodobniej jesteś administratorem na komputerze dewelopera i masz pełny uprawnienia do wykonywania dowolnych czynności w dowolnym pliku w dowolnym folderze. Jednak gdy aplikacja działa w ramach usług IIS, działa w ramach tożsamości zdefiniowanej dla puli aplikacji, do której jest przypisana lokacja. Zazwyczaj jest to konto zdefiniowane przez system, które ma ograniczone uprawnienia. Domyślnie ma uprawnienia do odczytu i wykonywania plików i folderów aplikacji internetowej, ale nie ma dostępu do zapisu.

Staje się to problemem, jeśli aplikacja tworzy lub aktualizuje pliki, co jest powszechną potrzebą w aplikacjach internetowych. W aplikacji Contoso University Elmah tworzy pliki XML w folderze Elmah , aby zapisać szczegółowe informacje o błędach. Nawet jeśli nie używasz czegoś takiego jak Elmah, witryna może pozwolić użytkownikom na przekazywanie plików lub wykonywanie innych zadań, które zapisują dane w folderze w witrynie.

Przypomnienie: Jeśli zostanie wyświetlony komunikat o błędzie lub coś nie działa podczas pracy z samouczkiem, pamiętaj, aby sprawdzić stronę rozwiązywania problemów.

Testowanie rejestrowania i raportowania błędów

Aby zobaczyć, jak aplikacja nie działa poprawnie w usługach IIS (mimo że została przetestowana w programie Visual Studio), możesz spowodować błąd, który normalnie zostanie zarejestrowany przez Elmah, a następnie otworzyć dziennik błędów Elmah, aby wyświetlić szczegóły. Jeśli Elmah nie może utworzyć pliku XML i zapisać szczegółów błędu, zostanie wyświetlony pusty raport o błędach.

Otwórz przeglądarkę i przejdź do http://localhost/ContosoUniversityadresu , a następnie zażądaj nieprawidłowego adresu URL, takiego jak Studentsxxx.aspx. Zostanie wyświetlona strona błędu wygenerowana przez system zamiast strony GenericErrorPage.aspx , ponieważ customErrors ustawienie w pliku Web.config to "RemoteOnly", a usługi IIS są uruchomione lokalnie:

Error_page_Test

Teraz uruchom plik Elmah.axd , aby wyświetlić raport o błędach. Zostanie wyświetlona pusta strona dziennika błędów, ponieważ Elmah nie może utworzyć pliku XML w folderze Elmah :

Error_log_page_empty

Ustawianie uprawnień do zapisu w folderze Elmah

Uprawnienia do folderów można ustawić ręcznie lub ustawić jako automatyczną część procesu wdrażania. Automatyczne ustawianie go wymaga złożonego kodu MSBuild i ponieważ trzeba to zrobić tylko przy pierwszym wdrożeniu, w tym samouczku pokazano tylko, jak to zrobić ręcznie. (Aby uzyskać informacje na temat sposobu tworzenia tej części procesu wdrażania, zobacz Ustawianie uprawnień folderu w publikacji internetowej w blogu Sayed Hashimi).

W Eksploratorze Windows przejdź do folderu C:\inetpub\wwwroot\ContosoUniversity. Kliknij prawym przyciskiem myszy folder Elmah , wybierz pozycję Właściwości, a następnie wybierz kartę Zabezpieczenia .

Elmah_folder_Properties_Security_tab

(Jeśli nie widzisz pozycji DefaultAppPool na liście Nazwy grup lub użytkowników , prawdopodobnie użyto innej metody niż ta określona w tym samouczku w celu skonfigurowania usług IIS i ASP.NET 4 na komputerze. W takim przypadku dowiedz się, jaka tożsamość jest używana przez pulę aplikacji przypisaną do aplikacji Contoso University, i przyznaj uprawnienie do zapisu tej tożsamości. Zobacz linki dotyczące tożsamości puli aplikacji na końcu tego samouczka).

Kliknij przycisk Edytuj. W oknie dialogowym Uprawnienia do elmah wybierz pozycję DefaultAppPool, a następnie zaznacz pole wyboru Zapis w kolumnie Zezwalaj .

Permissions_for_Elmah_dialog_box

Kliknij przycisk OK w obu oknach dialogowych.

Ponowne testowanie rejestrowania błędów i raportowania

Przetestuj, powodując ponownie błąd w taki sam sposób (zażądaj nieprawidłowego adresu URL) i uruchom stronę Dziennik błędów . Tym razem na stronie pojawi się błąd.

Elmah_Error_Log_page_Test

Musisz również mieć uprawnienia do zapisu w folderze App_Data, ponieważ masz SQL Server Compact pliki bazy danych w tym folderze i chcesz mieć możliwość aktualizowania danych w tych bazach danych. Jednak w takim przypadku nie trzeba wykonywać żadnych dodatkowych czynności, ponieważ proces wdrażania automatycznie ustawia uprawnienia do zapisu w folderze App_Data .

Wszystkie zadania niezbędne do poprawnego działania platformy Contoso University w usługach IIS na komputerze lokalnym zostały wykonane. W następnym samouczku udostępnisz witrynę publicznie, wdrażając ją u dostawcy hostingu.

Więcej informacji

W tym przykładzie przyczyna niemożności zapisania plików dziennika przez Elmah była dość oczywista. Śledzenie usług IIS można używać w przypadkach, gdy przyczyna problemu nie jest tak oczywista; Zobacz Rozwiązywanie problemów z żądaniami niepowodzenia przy użyciu śledzenia w usługach IIS 7 w witrynie IIS.net.

Aby uzyskać więcej informacji na temat udzielania uprawnień do tożsamości puli aplikacji, zobacz Tożsamości puli aplikacji i bezpieczna zawartość w usługach IIS za pośrednictwem list ACL systemu plików w witrynie IIS.net.