2012-07-06 57 views
9

Tôi đang cố triển khai một trang web mà tôi đã xây dựng bằng mvc3 trên máy chủ chạy iis7. Tôi đã có thể làm cho nó chạy qua iis7 cục bộ trên máy tính xách tay của tôi, nhưng khi tôi cố gắng để đặt nó trên máy chủ tôi nhận được một truy cập 403 bị từ chối lỗi khi cố gắng để có được nó từ xa và một "kết nối đã hết thời gian" khi tôi cố gắng để xem nó từ chính máy chủ.IIS7 403 - Truy cập bị từ chối

Tôi đã đảm bảo rằng tôi có khung .Net 4 gần đây nhất bằng cách sử dụng asp_regiis.exe. Tôi đã thử nhiều hồ bơi ứng dụng bao gồm cả mặc định. Tôi cho phép .net4 isapi. Tôi đã thay đổi quyền cho phép truy cập từ IUSER, SERVER NETWORK, Người dùng được xác thực. Tôi đã đảm bảo danh sách tài liệu mặc định giống với danh sách trên iis7 máy tính xách tay của tôi (hoạt động tốt).

Tôi cũng có nhiều trang web khác (sử dụng biểu mẫu web, không phải mvc) hoạt động tốt trên máy chủ.

Có thể làm gì đó với cách tôi chuyển đến tệp tới máy chủ không? Tôi chỉ nén các tập tin lên và đặt chúng (và giải nén chúng) trên máy chủ và hướng iis vào thư mục đã tạo.

Tôi đang thiếu gì?

+0

Bạn có nghĩa là bản sao nén ứng dụng của bạn là điều duy nhất IIS có? – Tyrsius

+0

Xin lỗi vì không chỉ định. Tôi giải nén nó và đặt các tập tin vào một thư mục. – Shattuck

Trả lời

14

tôi phải đối mặt với lỗi này vào tuần trước và nó có thể được gây ra bởi nhiều thứ:

  1. Phiên bản bên phải của khuôn khổ NET không được cài đặt hoặc đăng ký với asp_regiis.exe
  2. Các "runAllManagedModulesForAllRequests" là thiết lập để sai trong web.config của bạn
  3. phiên bản bên phải của MVC không được cài đặt trong máy chủ
  4. bạn đã bỏ qua một con đường mà bỏ qua yêu cầu
  5. của bạn bạn có một bá tước y ngoại lệ trong Application_Start của bạn và trang web của bạn không bắt đầu đúng cách

Đối với phần tôi, tôi quên thay đổi giá trị đường dẫn thư mục ghi nhật ký trong web.config thành directoy hiện có.

Bạn có thể làm gì để biết nếu đó là lỗi cấu hình hay lỗi trong ứng dụng của bạn là tạo dự án MVC mặc định mới trong VS và triển khai nó trong cùng một ứng dụng.

+0

Các bước này đưa tôi đến câu trả lời đúng. Nó đã kết thúc là một loạt các thứ khác nhau. Một trong những chính mặc dù đã được rằng tôi đã chọn hồ bơi ứng dụng ngay, nhưng đã chọn cổ điển thay vì tích hợp – Shattuck

+1

Các "runAllManagedModulesForAllRequests" thiết lập để đúng trong web.config làm việc cho tôi – chamara

1

Bạn cần đảm bảo rằng thư mục mà bạn đã giải nén các tệp có thiết lập quyền phù hợp. Ngoài ra, bạn có thiết lập xác thực trong trang web đó không?

+0

Tôi đã sửa đổi quyền của thư mục đó, nhưng dường như không có sự trợ giúp nào. Ngoài ra, tôi không chắc chắn bạn đang nhắc đến xác thực nào. Tôi khá mới với iis – Shattuck

3

Thay vì nén ứng dụng của bạn, sẽ tốt hơn nếu bạn có thể xuất bản (trong VS, nhấp chuột phải vào dự án và xuất bản) và sau khi triển khai nó vào trang web của bạn (bạn có một số tùy chọn).

Sau, đối với IIS, có vẻ như đã xảy ra sự cố với Xác thực. Cố gắng cho phép xác thực ẩn danh. Trên trình quản lý IIS, truy cập trang web của bạn, nhấp vào mô-đun Xác thực và bật "Xác thực ẩn danh".

Hãy xem điều gì xảy ra sau đó ngay cả khi sự cố "hết thời gian" là lạ. Chỉ cần chắc chắn, theo mặc định nó bị tắt để duyệt nội dung của trang web và bạn sẽ gặp lỗi 403 nếu bạn đã cố gắng làm điều đó.

Bạn đã đặt ứng dụng của mình ở đâu? Đôi khi nó có thể có vấn đề (đối với cấu hình truy cập) để đặt nó vào các thư mục cụ thể như các tệp chương trình, v.v. Hãy thử cài đặt nó ở gốc như C: \ Websites \ MyApp để kiểm tra mà không có sự cố về quyền của người dùng.

3

Một vài điều bạn nên kiểm tra.

  1. Bạn đã đặt thư mục mà bạn đã giải nén tệp của mình dưới dạng ứng dụng trong IIS chưa? Ứng dụng đó có đang chạy .NET 3.5/4.0 không?

  2. Đường dẫn của bạn cho hồ bơi ứng dụng đang chạy ứng dụng bạn đã tạo ở trên đang chạy ở Chế độ tích hợp hoặc Chế độ cổ điển?

Thông thường, khi triển khai ứng dụng MVC, 403 không phải là vấn đề về quyền. Nó cho bạn biết rằng việc duyệt thư mục không được phép. Điều này là do không có một trong 2 mục ở trên (hoặc một ánh xạ ký tự đại diện tùy chỉnh trong IIS), máy chủ web không biết cách xử lý định tuyến, cơ sở của một ứng dụng MVC.

2
  1. Tạo ứng dụng internet MVC 3 mới với tất cả giá trị mặc định. Chạy trên máy chủ IIS cục bộ.
  2. Chuyển ứng dụng sang máy chủ và thêm ứng dụng đó dưới dạng ứng dụng.
  3. Kiểm tra quyền truy cập cục bộ trên máy chủ (duyệt 80 từ trình quản lý IIS).
  4. Không shotgun twiddle tất cả các quyền cho đến khi bạn tìm ra vấn đề.
  5. Xem blog của tôi http://blogs.msdn.com/b/rickandy/archive/2011/04/22/test-you-asp-net-mvc-or-webforms-application-on-iis-7-in-30-seconds.aspx
+0

Yeah rối tung với sự cho phép không phải là ý tưởng tốt nhất. Cảm ơn sự thấu hiểu! – Shattuck

0

Trong khi thiết lập trang web, có bạn kiểm tra các thiết lập IIS của bạn bằng cách nhấp vào kết nối thử nghiệm. Bạn đã nhận được hai ve màu xanh lá cây. Nếu không, vui lòng kiểm tra cài đặt Xác thực của bạn. cài đặt truy cập thư mục và cài đặt hồ bơi ứng dụng.

+0

Cảm ơn câu trả lời. Nó đã kết thúc được một loạt các thứ khác nhau nhưng hồ bơi ứng dụng là một phần của nó. – Shattuck

0

Nếu đó là tệp aspx Đảm bảo trang mặc định được đặt trên IIS, nếu không cài đặt ứng dụng asp.net. Khi bạn đã cài đặt theo tệp aspx mặc định sẽ được tạo.

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