Nasza aplikacja jest skonfigurowana do korzystania z uwierzytelniania za pomocą formularzy, a na większości komputerów działa znakomicie. Mam jednak problem ze środowiskiem programistycznym na jednej z naszych stacji roboczych programistów. Kiedy udać się do jednego z adresów URL aplikacji, na przykład:IIS 7.5 wyświetla monit o podanie nazwy użytkownika i hasła.
IIS prosi mnie o podanie hasła, na przykład:
(nazwa iweb.local
jest ustawiony w pliku hosts do 127.0.0.1 Zasadniczo jest to alias dla localhost. Skonfigurujemy witrynę IIS do korzystania z nagłówka hosta, abyśmy mogli w przyszłości obsługiwać więcej niż jedną aplikację.)
Nie pytam o hasło, jeśli przejdę do większości innych adresów URL w aplikacji, takich jak http://iweb.local/. I nie jestem pytany o hasło w dowolnym miejscu przy użyciu tej samej bazy kodu na dowolnym innym komputerze programisty. To tylko ta jedna maszyna ma problem. To prowadzi mnie do przekonania, że nie jest to problem z kodowaniem.
Czego próbowałem:
- Testowanie z innej przeglądarki internetowej. Na komputerze, na którym występuje problem, pojawia się problem, niezależnie od przeglądarki, z której korzystam. Otrzymuję ten sam monit w FireFox i IE9.
- Testowanie na innych programach dla programistów. Problem nie dotyczy tych. Dzieje się tak tylko w jednym pudełku programisty.
- Kopiowanie kodu i aktywów z
~/Areas/Reports
do~/Areas/ReportsTest
, z odpowiednimi reaktorami i ładowaniemhttp://iweb.local/reportstest/
. To działa; przeglądarka nie monituje już o nazwę użytkownika i hasło. Jednak zmiana adresu URL nie jest opcją dla naszej aplikacji. - Sprawdzanie konfiguracji uwierzytelniania IIS. Uwierzytelnianie anonimowe i uwierzytelnianie formularzy są włączone. Cała reszta jest wyłączona. Jest to identyczne na wszystkich komputerach dla programistów, w tym tych, które działają, a tych, które nie działają.
- Sprawdzanie dziennika zdarzeń. Usługi IIS nie rejestrują niczego w dzienniku zdarzeń.
- Sprawdzanie dzienników IIS. Dzienniki zawierają wpisy dotyczące pomyślnych żądań (np. Gdy otwieram
http://iweb.local
), ale nie rejestrują niczego dla żadnych żądań, które monitują użytkownika o wprowadzenie hasła. - Sprawdzanie nagłówków żądania i odpowiedzi za pomocą FireBug. Nagłówki żądania wydają się identyczne w przypadku żądania do dowolnego adresu URL. Nagłówki odpowiedzi dla
http://iweb.local/reports
mają dwie opcje dlaWWW-Authenticate
:Negotiate
iNTLM
. Na tej podstawie potwierdziłem, że IIS kieruje przeglądarkę, aby monitować o hasło. Ale nie jestem bliżej zrozumienia, dlaczego. - Wyłączanie usług IIS, ustawienie usługi publikowania w Internecie w taki sposób, aby zawierała podręcznik uruchamiania, który nie uruchomi się automatycznie i nie uruchomi się ponownie. Następnie sprawdziłem, czy odpowiedź na żądania odpowiada
http://iweb.local
lubhttp://iweb.local/reports/
. Nie było również, potwierdzając, że to IIS zajmuje się żądaniami. - Zatrzymywanie usług IIS, usuwanie całego projektu z dysku twardego programisty i pobieranie go z kontroli źródła.Myślałem tutaj, że może to być problem z uprawnieniami na jednym z folderów (chociaż nie rozumiem, jak to może być, biorąc pod uwagę, że jest to aplikacja MVC) i że przejście przez ten proces zagwarantuje, że wszystkie foldery mają poprawne uprawnienia. Ale nic to nie zmieniło.
- Całkowite odinstalowanie usług IIS, ponowne uruchomienie komputera i ponowne zainstalowanie usług IIS. To też nie działa.
Brak mi pomysłów. Nie mogę znaleźć niczego na tym jednym polu programisty, które nie jest skonfigurowane tak samo jak inne pola programisty.
Więc: Czy ktoś wie, w jaki sposób włączyć głębszy poziom rejestrowania lub śledzenia, aby dowiedzieć się, dlaczego IIS żąda hasła? Czy ktoś może pomyśleć o wszystkim, co może być przyczyną tego, czego jeszcze nie szukałem?
Jest to aplikacja ASP.NET MVC 3 działająca w IIS 7.5 w środowisku 64-bitowym. Część adresu URL jest skonfigurowana jako obszar MVC.
UPDATE
W moim pliku Web.config, to jak tryb uwierzytelniania jest ustawiony na maszynie naruszającego.
<authentication mode="Forms">
<forms loginUrl="~/account/login" timeout="2880" />
</authentication>
Nie ma <authentication>
elementem w pliku Web.config dla obszaru Raporty.
Could ' ' być ustawiony w pliku web.config? –
Nie. W głównym pliku Web.config element '' jest ustawiony na Forms. W pliku Web.config dla tego obszaru nie ma elementu '". –
Może to nie sama strona, ale jakiś zasób, taki jak js lub css, spowodowany uprawnieniami NTFS? Czy otrzymasz 401, jeśli naciśniesz anuluj? Czy wypróbowałeś również ekspres IIS? – Ramunas