Jak tu dawno nie byłem. Ale cóż jak się utrzymuje projekt dziecko to tak jest. Nie lubię konfiguracji narzędzi ale czasem przychodzi taka potrzeba. Tym razem IIS 10. Poniżej klika uwag odnośnie konfiguracji standardowej aplikacji na ASP .NET MVC 5. Post będzie aktualizowany w miarę postępów prac i problemów występujących.
Najważniejsze na początku:
Aby szybko wygodnie i bez stresu wejść do IIS lub sprawdzić czy IIS jest zainstalowany korzystamy z polecenia inetmgr(można to wpisać w Win10 w pole wyszukiwania lub w cmd). Wtedy nie trzeba szukać żadnych skrótów, ikon i tym podobnych spraw.
Instalacja
Należy zainstalować wszystko co związane z ASP. NET. Szczegóły tutaj: https://technet.microsoft.com/pl-pl/library/hh831475(v=ws.11).aspx
Generalnie wszystko sprowadza się do zainstalowania tych funkcji:
- Rozszerzenia architektury .NET 4.5
- Rozszerzenia ISAPI
- Filtry ISAPI
- Rozszerzalność architektury .NET x.x (jeśli wybrano funkcję ASP.NET x.x) gdzie x.x to wersja .NET-a.
Z rzeczy, które warto sprawdzić to czy serwowanie plików statycznych jest zainstalowane, bo jak to są problemy z obrazkami na stronie itd.
Na koniec należy również zarejestrować moduł ASP.NET
Komenda:
CD C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ aspnet_regiis -i
ale na IIS 10 jest już inaczej czyli:
CD C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ dism /online /enable-feature /featurename:IIS-ASPNET45
Dopiero dzięki temu będziemy mogli w IIS wyklinać aplikację i zobaczyć „area” dla ASP.NET. Bez tego się nic nie pojawi.
Nie trzeba robić restartów serwera.
Dostęp do katalogów
Dostęp do katalogów jest zależy od ustawień puli. Tak czy inaczej należy dodać odpowiedniego użytkownika do katalogów, które tworzymy aby był dostęp i tak: jeśli identity jest ustawione na „local system” to dodajemy użytkownika „IUSR” ale jeśli identity jest ustawione na „ApplicationPool” to dodajemy użytkownika „I_IUSR”.
Dostęp do bazy danych
Jeśli chodzi o bazę danych to mówię tu o MS SQL.
Problemy oczywiście są w dostępem do bazy, szczególnie, jeśli używamy Code First podejścia. Te oczywiste pominę. Użytkownik wpisany w connection string musi mieć uprawnienia do utworzenia bazy danych czyli dbcreator lub sysadmin.
Jeśli to nie pomaga to również użytkownik bazodanowy „NT AUTHORITY\SYSTEM” powinien mieć uprawnienia do tworzenia bazy.
Własnie kody błędów HTTP
Tak sobie wymyśliłem, że aplikacja zwraca dodatkowe niż standardowe kody błędów. Problem zaczyna się, że lokalnie wszystko działa a na IIS jakoś sam próbuje ogarnąć te błędy i jak zobaczy, że takiego błędu nie obsługuje to zamiast zwracać taką jak lokalny IIS to daje komunikat „the custom error module does not recognize this error”. To raczej nam nie będzie pasować więc aby wyłączyć obsługę błędów przez IIS to należy dodać do web.config-a wpis:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <httpErrors existingResponse="PassThrough" /> </system.webServer> </configuration>
Dodatkowe szczegóły można znaleść tutaj: https://stackoverflow.com/questions/2345532/turn-iis7-http-error-handling-off
To tyle na razie. Jak coś będzie to będę dopisywał.