2013-03-06 12 views
7

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.

http://iweb.local/reports/

IIS prosi mnie o podanie hasła, na przykład:

IIS prompts for a username and password

(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 ładowaniem http://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 dla WWW-Authenticate: Negotiate i NTLM. 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 lub http://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.

+0

Could '' być ustawiony w pliku web.config? –

+0

Nie. W głównym pliku Web.config element '' jest ustawiony na Forms. W pliku Web.config dla tego obszaru nie ma elementu '". –

+0

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

Odpowiedz

10

Jeśli w aplikacji znajduje się folder o nazwie "Raporty", a usługi Reporting Services programu SQL Server są zainstalowane na serwerze, wówczas folder Katalog wirtualny usług Reporting Services o nazwie "Raporty" będzie w konflikcie z aplikacją "Raporty" teczka. Aby naprawić ten otwarty Reporting Services Configuration Manager (Start-> Wszystkie programy-> MS SQL Server-> Narzędzia konfiguracyjne-> Reporting Services Configuration Manager) i zmienić katalog wirtualny z "Reports" na dowolną inną nazwę ("TestReports") pod "Adres URL Menedżera raportów" w menu po lewej stronie.

To rozwiąże problem uwierzytelniania IIS

+0

Chcę tylko zwrócić uwagę, że ustawienie "Adres URL Menedżera raportów" różni się od ustawienia "Adres URL usługi sieci Web". Nie zauważyłem, że były 2 ustawienia adresu URL i byłam zdezorientowana, gdy nie naprawiłam problemu po zmianie niewłaściwego. – justis

+0

Może to pomóc (wyłączenie usług Reporting Services): https://msdn.microsoft.com/en-us/library/cc281384(v=sql.105).aspx#DisableRM – dosaki

+0

To mnie przeraziło, pomyślałem, że to coś robić z uprawnieniami. Dziękuję Ci! – jekcom

0

Użyj narzędzia skrzypkowego lub narzędzi programistycznych w IE9, aby obejrzeć żądanie. To pokaże, co w nagłówku powoduje wyskakujące okienko. Może to być uwierzytelnianie podstawowe lub uwierzytelnianie NT, gdy przeglądarka nie może spełnić żądania. Ponieważ jest on zlokalizowany na jednym komputerze, sprawdź, czy usługi IIS są skonfigurowane tak, aby były anonimowe tylko pod kątem uprawnień żądanego pliku.

Powiązane problemy