2013-03-06 9 views
7

Ứng dụng của chúng tôi được định cấu hình để sử dụng Xác thực biểu mẫu và trên hầu hết các máy, nó hoạt động rất tốt. Tuy nhiên, tôi đang gặp sự cố với môi trường phát triển trên một trong các máy trạm của nhà phát triển của chúng tôi. Khi tôi đi đến một trong những URL của ứng dụng, như thế này:IIS 7.5 đang nhắc nhập tên người dùng và mật khẩu

http://iweb.local/reports/

IIS nhắc nhở tôi nhập mật khẩu, như thế này:

IIS prompts for a username and password

(Tên iweb.local được thiết lập trong tệp host để trỏ đến 127.0.0.1. Về cơ bản nó là một bí danh cho localhost. Chúng tôi cấu hình trang IIS để sử dụng một tiêu đề máy chủ để chúng tôi có thể hỗ trợ nhiều hơn một ứng dụng trong tương lai.)

Tôi không được nhắc nhập mật khẩu nếu tôi truy cập vào hầu hết các URL khác trong ứng dụng, chẳng hạn như http://iweb.local/. Và tôi không được nhắc nhập mật khẩu ở bất cứ nơi nào sử dụng chính xác cùng một mã cơ sở trên bất kỳ máy phát triển nào khác. Nó chỉ là một cái máy đang gặp vấn đề. Điều này dẫn tôi đến một cách hợp lý tự tin rằng đây không phải là vấn đề với việc viết mã.

Những điều tôi đã cố gắng:

  • thử nghiệm với một trình duyệt web khác nhau. Trên máy trưng bày vấn đề, vấn đề xảy ra bất kể trình duyệt nào tôi đang sử dụng. Tôi nhận được cùng một dấu nhắc trong FireFox và IE9.
  • Thử nghiệm trên các máy phát triển khác. Vấn đề không xảy ra với chúng. Nó chỉ xảy ra trên hộp nhà phát triển duy nhất.
  • Sao chép mã và nội dung từ ~/Areas/Reports vào ~/Areas/ReportsTest, với các nhà tái cấu trúc phù hợp và tải http://iweb.local/reportstest/. Điều đó hoạt động; trình duyệt không còn nhắc nhập tên người dùng và mật khẩu nữa. Tuy nhiên, việc thay đổi URL không phải là một tùy chọn cho ứng dụng của chúng tôi.
  • Kiểm tra cấu hình xác thực IIS. Xác thực Mẫu và Xác thực Mẫu được bật. Mọi thứ khác đều bị tắt. Điều này là giống hệt nhau trên tất cả các máy phát triển, bao gồm cả những máy hoạt động và máy không hoạt động.
  • Kiểm tra Nhật ký sự kiện. IIS không đăng nhập bất cứ thứ gì vào bản ghi sự kiện.
  • Kiểm tra nhật ký IIS. Nhật ký chứa các mục nhập cho các yêu cầu thành công (như khi tôi mở http://iweb.local), nhưng nó không ghi nhật ký bất kỳ yêu cầu nào nhắc người dùng nhập mật khẩu.
  • Kiểm tra yêu cầu và tiêu đề phản hồi bằng FireBug. Các tiêu đề yêu cầu có vẻ giống hệt nhau cho một yêu cầu cho một trong hai URL. Tiêu đề phản hồi cho http://iweb.local/reports có hai tùy chọn cho WWW-Authenticate: NegotiateNTLM. Từ đây, tôi đã xác nhận rằng IIS đang hướng trình duyệt để nhắc mật khẩu. Nhưng tôi không hiểu rõ hơn tại sao.
  • Tắt IIS, thiết lập World Wide Web Publishing Service để có Kiểu khởi động thủ công để nó không tự động khởi động và khởi động lại máy tính. Sau đó tôi đã kiểm tra xem liệu http://iweb.local hoặc http://iweb.local/reports/ có đang đáp ứng các yêu cầu không. Không, xác nhận rằng IIS đang xử lý các yêu cầu.
  • Dừng IIS, xóa toàn bộ dự án khỏi ổ cứng của nhà phát triển và truy xuất dự án từ điều khiển nguồn.Suy nghĩ của tôi ở đây là nó có thể là một vấn đề cho phép trên một trong các thư mục (mặc dù tôi không hiểu nó có thể như thế nào, vì đây là một ứng dụng MVC) và rằng quá trình này sẽ đảm bảo rằng tất cả các thư mục đều đúng quyền. Nhưng nó không thay đổi gì cả.
  • Gỡ cài đặt hoàn toàn IIS, khởi động lại máy tính và cài đặt lại IIS. Điều này cũng không hiệu quả.

Tôi hết ý tưởng. Tôi không thể tìm thấy bất kỳ thứ gì trong hộp nhà phát triển này không được định cấu hình giống như các hộp nhà phát triển khác.

Vì vậy: Có ai biết cách kích hoạt mức ghi nhật ký hoặc truy tìm sâu hơn để tìm ra lý do tại sao IIS yêu cầu mật khẩu? Bất cứ ai có thể nghĩ về bất cứ điều gì có thể gây ra điều này mà tôi đã không tìm kiếm?

Đây là ứng dụng ASP.NET MVC 3 chạy trên IIS 7.5 trong môi trường 64 bit. Phần reports của URL được định cấu hình là Vùng MVC.

CẬP NHẬT

Trong file Web.config của tôi, đây là cách chế độ xác thực được thiết lập trên máy vi phạm.

<authentication mode="Forms"> 
    <forms loginUrl="~/account/login" timeout="2880" /> 
</authentication> 

Không có yếu tố <authentication> trong tệp Web.config cho khu vực Báo cáo.

+0

Có thể đặt '' trong web.config của bạn không? –

+0

Không. Trong Web.config chính, phần tử '' được đặt thành Biểu mẫu. Không có phần tử '' nào trong Web.config cho vùng đó. –

+0

Có thể nó không phải là trang của chính nó nhưng một số tài sản như js hoặc css gây ra bởi quyền NTFS? Bạn có nhận được 401 nếu bạn nhấn hủy không? Ngoài ra bạn đã thử IIS express chưa? – Ramunas

Trả lời

10

Nếu có thư mục trong ứng dụng có tên "Báo cáo" và Dịch vụ báo cáo SQL Server được cài đặt trên máy chủ, thì thư mục Thư mục ảo dịch vụ báo cáo cũng được đặt tên là "Báo cáo" sẽ xung đột với ứng dụng "Báo cáo" thư mục. Để sửa chữa Trình quản lý cấu hình dịch vụ báo cáo mở (Start-> All Programs-> MS SQL Server-> Configuraton Tools-> Reporting Services Configuration Manager) và thay đổi Thư mục ảo từ "Reports" sang bất kỳ tên nào khác ("TestReports") "Trình quản lý báo cáo URL" trong menu ở bên trái.

Điều này sẽ giải quyết vấn đề xác thực IIS

+0

Chỉ muốn chỉ ra rằng cài đặt "Trình quản lý báo cáo URL" khác với cài đặt "URL dịch vụ web". Tôi đã không nhận thấy có 2 cài đặt URL và đã bị nhầm lẫn khi nó không khắc phục được sự cố sau khi tôi đã thay đổi sai. – justis

+0

Điều này có thể giúp (tắt Dịch vụ Báo cáo): https://msdn.microsoft.com/en-us/library/cc281384(v=sql.105).aspx#DisableRM – dosaki

+0

Điều này khiến tôi thất vọng, nghĩ rằng đó là điều gì đó để thực hiện với quyền. Cảm ơn bạn! – jekcom

0

Sử dụng công cụ tìm kiếm hoặc công cụ tìm kiếm trong IE9 để xem yêu cầu. Điều này sau đó sẽ hiển thị những gì trong tiêu đề đang gây ra cửa sổ bật lên. Nó có thể là auth cơ bản, hoặc NT auth, nơi trình duyệt không thể thực hiện yêu cầu. Vì nó được bản địa hóa cho một máy, hãy kiểm tra IIS được cấu hình để ẩn danh chỉ & kiểm tra các quyền trên tệp đang được yêu cầu.