2011-12-31 28 views
9

Tôi đang cố triển khai ứng dụng ASP.NET MVC 3 vào hộp Windows 2008 R2. Tôi chạy Trình cài đặt Nền tảng Web để nhận được các bit MVC 3 và cài đặt IIS cơ bản được cài đặt. Tôi tạo ra một thư mục mới C: \ Website sau đó tạo một trang web mới và chỉ nó vào thư mục này.Tại sao tôi nhận được lỗi 401.2/Access bị từ chối khi triển khai ứng dụng MVC 3 của tôi trong IIS 7.5?

Tôi thấy rằng có một hồ bơi ứng dụng mới indentity, "ApplicationPoolIdentity" khác với IIS 6 (và là một "đặc biệt" tài khoản người dùng mà không thực sự có sẵn từ tab bảo mật trên thư mục). Tôi đã gán quyền cho thư mục C: \ Website theo cách thủ công bằng cách gõ vào tài khoản "IIS AppPool \ DefaultAppPool" và cho nó đọc & Thực hiện/Liệt kê nội dung thư mục/Truy cập đọc (cụ thể: Thư mục Traver/tệp excute, Danh sách thư mục/đọc dữ liệu, Đọc thuộc tính, Đọc thuộc tính mở rộng, Đọc quyền).

Hồ bơi ứng dụng cho trang web này được định cấu hình cho v4 của .NET framework, Integrated pipeline.

Trong xác thực IIS "Xác thực ẩn danh" được bật.

Trang web của tôi có chế độ xác thực = "Windows" trong tệp web.config. Đây là lần đầu tiên tôi thực sự sử dụng xác thực Windows. Nếu nó quan trọng, máy chủ web là một phần của một miền.

Khi tôi cố truy cập trang web, tôi nhận được lỗi Truy cập bị từ chối, 401.2. Tôi nghĩ rằng nó có thể liên quan đến các thiết lập xác thực Windows vì vậy tôi đã sửa đổi web.config và thiết lập chế độ xác thực thành None. Tôi nhận được lỗi tương tự.

Nếu tôi truy cập vào trang web, IIS/Xác thực và bật Xác thực Windows, nó sẽ nhắc tôi nhập tên người dùng/mật khẩu. Nếu tôi nhập thông tin đăng nhập của tôi thì nó hoạt động. Tuy nhiên, tôi lo rằng nó chỉ hoạt động vì nó thực sự mạo danh tôi trên máy chủ (và tôi có quyền truy cập vào mọi thứ). Tôi không thực sự cần/muốn mạo danh trên trang web - tôi chỉ sử dụng xác thực Windows để chúng tôi không phải duy trì hai bộ thông tin đăng nhập. Trang web chỉ kiểm tra vai trò người dùng là thành viên để hiển thị/ẩn nội dung có chọn lọc. Trang mặc định trên trang web không có bất kỳ thuộc tính [Authorize] nào được đặt trên bộ điều khiển. được cấu hình trong tệp web.config.

Câu hỏi phụ - tại sao tôi sẽ được nhắc nhập tên người dùng/mật khẩu của mình? Sẽ không phải là thách thức/phản ứng xảy ra tự động và chỉ nhắc nhở nếu xác thực thất bại?

Rõ ràng có một số tương tác ở đây mà tôi không hiểu nhưng tôi không biết điều gì. Tôi không thấy bất kỳ lỗi hữu ích nào trong Nhật ký sự kiện.

Tôi đã tìm kiếm lỗi và đã thử một số bản sửa lỗi, ví dụ, tôi đã cố gắng đặt lại cấu hình ASP.NET từ dòng lệnh bằng cách sử dụng: aspnet_regiis -i mà không có bất kỳ sự may mắn nào.

Resolved

tôi đã có thể làm việc này. Theo cấu hình trang web có tùy chọn "Ủy quyền .NET". Điều này đã được định cấu hình để từ chối tất cả người dùng ẩn danh. Tôi đã xóa quy tắc đó, sau đó thêm quy tắc để cho phép tất cả người dùng ẩn danh. Bây giờ tôi có thể nhấn vào trang web mà không cần đăng nhập. Sau đó, tôi đã đi vào IIS xác thực và kích hoạt Windows xác thực và vô hiệu hóa xác thực vô danh.

Internet Explorer chuyển thông tin xác thực mà không cần nhắc. Firefox sẽ yêu cầu thông tin đăng nhập.Có một cấu hình thiết lập cấu hình này:

  • Mở Firefox
  • Go to: about: config (và đồng ý tiếp tục)
  • lọc cho: network.automatic
  • Double-click trên mạng .automatic-ntml-auth.trusted-uris
  • Thêm trang web của bạn (nhiều trang web có thể được phân cách bằng dấu phẩy). Bao gồm phần http: //.

Máy tôi đang thử nghiệm trên không có Chrome, nhưng điều đó dường như làm việc OK trên dev của tôi. máy móc.

+1

Nếu họ bật trả lời câu hỏi của riêng bạn, tôi sẽ upvote độ phân giải của bạn. Giải quyết vấn đề của tôi. –

Trả lời

0

Đảm bảo quyền của hệ thống tệp của bạn là chính xác. Nếu họ đang cố gắng loại bỏ WebMatrix.Data.dll và WebMatrix.WebData.dll được triển khai trong thư mục bin của ứng dụng - điều đó đã làm cho lừa cho tôi, tôi nhớ có cùng một vấn đề.

Các vấn đề liên quan