“401 Trái phép” trên một thư mục


85

Tôi cho rằng đây là lỗi IIS, vì điều này không xảy ra nếu tôi chạy dự án trên máy cục bộ của mình.

Tôi có bảng định kiểu của mình tại ~/Content/css

Mọi tệp trong thư mục đó sẽ không tải trên trang và khi tôi điều hướng trực tiếp đến chúng, tôi gặp lỗi máy chủ:

401 - Trái phép: Quyền truy cập bị từ chối do thông tin xác thực không hợp lệ.

Bạn không có quyền xem thư mục hoặc trang này bằng thông tin đăng nhập mà bạn đã cung cấp.

Điều này chỉ xảy ra với thư mục đó, tôi không gặp vấn đề gì khi truy cập bất kỳ tệp nào khác. Có điều gì tôi cần làm trong IIS7 để ngăn chặn điều này không?

Câu trả lời:


46

Có khả năng là bạn không có quyền IUSR_ tên máy tính trên thư mục đó. Tôi vừa quét nhanh và có vẻ như bạn sẽ tìm thấy thông tin mình cần ở đây .

Nếu không phải như vậy, bạn có được trình duyệt nhắc nhập tên người dùng và mật khẩu của mình không? Nếu vậy, có thể IIS được cấu hình để chỉ sử dụng Xác thực tích hợp, như được mô tả ở đây .


4
Nếu bạn đang sử dụng một nhóm ứng dụng để quản lý quyền truy cập hệ thống tệp / db của mình, đừng làm điều này. Hãy đọc để xem câu trả lời của imanabidi dưới đây.
Ryan Shillington

cảm ơn, trong trường hợp của tôi, tôi chỉ cần thêm tất cả mọi người với đầy đủ chức
MorenajeRD

8
support.microsoft.com/kb/313075 - Trang này không tồn tại nữa. @ m.edmondson
Divya

293
  1. Mở IIS và chọn trang web gây ra 401
  2. Chọn thuộc tính Xác thực trong Tiêu đề IIS
  3. Chọn Xác thực Ẩn danh
  4. Nhấp chuột phải vào nó, chọn Chỉnh sửa và chọn Nhận dạng nhóm ứng dụng
  5. Khởi động lại trang web và nó sẽ hoạt động

13
Nó hoạt động nhưng tại sao? Bạn có thể giải thích thêm một chút được không?
nthapa

2
Điều này dường như hoạt động vì theo mặc định, "người dùng cụ thể" cho xác thực ẩn danh là IUSR, như đã đề cập trong câu trả lời được chấp nhận. Tuy nhiên, danh tính được đặt trên nhóm ứng dụng phải có quyền đối với toàn bộ trang web, nếu không trang web sẽ không tải. Vì vậy, trong khi tài khoản IUSR của tôi không có quyền truy cập (trên thực tế, dường như không tồn tại), tài khoản mà nhóm ứng dụng đang sử dụng lại có.
Johann

6
Điều này hoạt động, nhưng điều khó hiểu là nó đã từng hoạt động tốt trong khoảng 2 năm và sau đó hôm nay không rõ lý do nó ngừng hoạt động ... giải pháp của bạn đã khắc phục được nó.
Serj Sagan

Đã dành hàng giờ cho vấn đề này và không có may mắn cho đến khi tôi tìm thấy điều này! Tôi có một ứng dụng Web MVC 5 đã từng được xuất bản ở chế độ phát hành, sau đó tải trang web trên chrome, nội dung sẽ tải nhưng kiểu thì không. Các liên kết ở đó và các đường dẫn đúng tuy nhiên chúng đều trống rỗng! Bản sửa lỗi này đã giải quyết được vấn đề của tôi.
GIVE-ME-CHICKEN

trong trường hợp của tôi, tôi chỉ phải bật xác thực Ẩn danh vì nó bị tắt theo mặc định khi ứng dụng được tạo
Paul

13
  • Mở IIS
  • chọn trang web mà bạn đang gặp phải vấn đề

  • Chọn bên dưới

nhập mô tả hình ảnh ở đây

- Nhấp chuột phải vào Xác thực ẩn danh và nhấp vào chỉnh sửa và làm theo bên dưới

nhập mô tả hình ảnh ở đây


5

Bạn không được phép xem thư mục hoặc trang này bằng thông tin đăng nhập mà bạn đã cung cấp.

Điều này đã xảy ra mặc dù thực tế là người dùng đã được xác thực thông qua Active Directory.

Có thể có nhiều nguyên nhân dẫn đến lỗi Access Denied, nhưng nếu bạn cho rằng mình đã định cấu hình chính xác mọi thứ từ ứng dụng web của mình, có thể có một chi tiết nhỏ bị quên. Đảm bảo rằng bạn cấp quyền thích hợp cho Người dùng được xác thực để truy cập vào thư mục ứng dụng web của bạn.

Đây là các bước tôi đã thực hiện để giải quyết vấn đề này.

  1. Nhấp chuột phải vào thư mục chứa ứng dụng web và chọn Thuộc tính và nhấp vào tab Bảo mật.

  2. Nhấp vào Nhấp vào Chỉnh sửa…, sau đó nhấp vào nút Thêm…. Nhập Người dùng đã xác thực vào nút Nhập tên đối tượng để chọn, sau đó nhấn Thêm . Nhập Người dùng đã xác thực vào Nhập tên đối tượng để chọn.

  3. Nhấp vào OK và bạn sẽ thấy Người dùng được xác thực là một trong những tên người dùng. Cấp quyền thích hợp trên hộp Quyền cho người dùng được xác thực ở đầu dưới nếu họ chưa được chọn.

  4. Bấm OK hai lần để đóng hộp thoại. Nó sẽ có hiệu lực ngay lập tức, nhưng nếu bạn muốn chắc chắn, bạn có thể khởi động lại IIS cho ứng dụng web của mình.

Làm mới trình duyệt của bạn và nó sẽ hiển thị trang web ngay bây giờ.

Hi vọng điêu nay co ich!


2

Bạn cần kiểm tra quyền đối với thư mục trên máy chủ của mình và kiểm tra xem tài khoản bạn đang sử dụng để chạy ứng dụng của mình có quyền truy cập vào thư mục đó hay không.


0

Đối với tôi, quyền truy cập của Người dùng Ẩn danh là tốt ở cấp máy chủ, nhưng chỉ khác nhau ở một trong các thư mục "ảo" của tôi.

Tôi đã tìm hiểu khá kỹ và sau đó là một số trợ giúp từ đồng nghiệp để biết rằng IIS cũng có cài đặt "xác thực" ở cấp thư mục ảo - hy vọng điều này sẽ giúp ai đó giải quyết tình trạng khó khăn của tôi.


0

Trong trường hợp của chúng tôi, đó là xác thực tích hợp Windows được chỉ định trong ứng dụng web.config

NHƯNG mô-đun windows-auth hoàn toàn không được cài đặt trên máy IIS.

Chỉ cần thêm một lý do có thể.


-4

Một bản sửa lỗi đơn giản khác mà tôi tìm thấy là xóa trang web IIS cục bộ (từ bên trong Trình quản lý IIS) và sau đó tạo lại thư mục ảo từ "Thuộc tính" của dự án web của bạn trong Visual Studio.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.