Konfiguracja IIS 10 – przydatna wiedza

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ł.