MVC4 Lỗi HTTP 403.14 - Bị cấm


88

Tôi đã xây dựng một ứng dụng web .net4.5 ASP.NET MVC4 hoạt động tốt tại địa phương (máy chủ IIS Express & dev) nhưng khi tôi triển khai nó lên máy chủ web của mình, nó sẽ xuất hiện lỗi 403. Tôi đã cài đặt .Net 4.5RC trên máy chủ và thậm chí đã thử một aspnet_regiis -i chút mà mọi người đề xuất cho các sự cố của họ với các phiên bản trước của MVC / .Net nhưng không giúp được gì.

Bất kỳ ý tưởng?

CHỈNH SỬA : Thông tin thêm về tình hình. Máy chủ là 32bit và tôi có 4 ứng dụng MVC3 khác hoạt động tốt. Nó chỉ là ứng dụng MVC4 của tôi không hoạt động.


Tôi đã gặp phải vấn đề tương tự này khi tôi tạo một ứng dụng Biểu mẫu Web asp.net 4.5 mới . Nó hoạt động tốt cục bộ (IIS 7.5), nhưng khi được triển khai để kiểm tra máy chủ (cũng là IIS 7.5) thì hầu hết tất cả các tệp javascript và css được gói & rút gọn của tôi không tải được với 404 Not Found. Câu trả lời dưới đây về runAllManagedModulesForAllRequests đã giải quyết vấn đề cho tôi!
ClearCloud8

Tôi có thể đã trả lời câu hỏi này tại: stackoverflow.com/questions/24343788/…
fsbf Ngày

<system.webServer> <modules runAllManagedModulesForAllRequests = "true" /> </system.webServer>
Jinto John

Câu trả lời:


172

Thử

<system.webServer>
   <modules runAllManagedModulesForAllRequests="true"/> 
 </system.webServer>

Thông qua

/server/405395/unable-to-get-anything-except-403-from-a-net-4-5-website


1
Đã có điều đó đúng chỗ, đã làm mọi thứ, và vẫn chỉ có 4 trang MVC hoạt động. Cần phải có một số thủ thuật khác để điều này hoạt động.
Maxim V. Pavlov

1
Điều này. Đã thử tất cả các giải pháp chứng khoán khác mà không có niềm vui nhưng đây là giải pháp sắp xếp vấn đề.
Julia Hayward

1
Bạn ơi, mình làm rồi, nhưng không được. Thực sự, tôi đang làm việc với MVC 4 và VisualStudio 2012, dự án của tôi hoạt động tốt cho đến ngày hôm qua, nhưng sau một số thay đổi thông thường trong mã của tôi, lỗi này xuất hiện trong trang mặc định (trang chủ / chỉ mục). bất kỳ cơ thể nào có thể giúp tôi xin vui lòng? ..
A.Dara

4
Bản sửa lỗi này không thích hợp cho sự cố này (xem liên kết trong câu trả lời của Jason Koopmans). tốt hơn là tải về các hotfix có liên quan ở đây microsoft.com/en-us/download/...
Ahmad Ibrahim

@AhmadIbrahim nó thực chất là một giải pháp cho vấn đề. Bản sửa lỗi chỉ dành cho 64bit, câu hỏi ghi rõ là 32bit. Có một số cấu hình nhất định mà RAMMFAR là giải pháp làm việc đáng tin cậy nhất và thêm tải máy chủ tối thiểu nếu CDN được sử dụng thích hợp.
MarkKGreenway

22

Lỗi 403.14 là mã lỗi HTTP không được phép liệt kê nội dung của một thư mục. Hãy chắc chắn rằng

  1. Bạn đã thiết lập trang web làm ứng dụng trong IIS
  2. Bạn đã cài đặt .NET 4.5 trên máy chủ
  3. Bạn đã đặt nhóm ứng dụng để chạy phiên bản thích hợp của .NET framework (tức là nó không được đặt thành .NET 2.0
  4. Bạn đang sử dụng đường dẫn tích hợp trên nhóm ứng dụng của mình
  5. .NET 4.5 thực sự đã được đăng ký trong IIS. Vui lòng xem bài đăng này để biết một vấn đề / cách giải quyết tương tự

Thông thường, a và d là các vấn đề lớn nhất xung quanh việc triển khai MVC cho IIS


1. Tôi chưa thiết lập trang web làm ứng dụng. 2. Tôi đã cài đặt .net 4.5, 3. thay thế nhóm ứng dụng của tôi nhắm mục tiêu đúng khuôn khổ. 4. Hồ bơi của tôi được thiết lập để sử dụng cổ điển, đã thay đổi thành Tích hợp nhưng không giúp được gì. 5. Tôi khá chắc chắn 4,5 đã được đăng ký.
mithun_daa

1
@mithun_daa - Nếu bạn chưa thiết lập trang web của bạn như một ứng dụng, nó khá dễ dàng -> click chuột phải vào thư mục / trang web ảo và Convert To ứng dụng (hoặc thêm ứng dụng, thuật ngữ thoát cho tôi vào lúc này)
Tommy

Đây có phải là một điều cụ thể MVC4 không? Vì tôi chưa bao giờ thiết lập các dự án MVC3 của mình dưới dạng Ứng dụng và chúng hoạt động tốt.
mithun_daa

Có thể là cách bạn đang triển khai sau đó -> nhưng bất kỳ ứng dụng web .NET nào đều phải được đặt làm ứng dụng trong IIS. Tuy nhiên, nếu bạn chỉ đặt chúng dưới trang web mặc định, thì nó đang chạy trong ứng dụng trang web mặc định. Đảm bảo rằng nhóm ứng dụng của trang web mặc định được định cấu hình chính xác (.NET 4 / tích hợp). Khi bạn tạo một thư mục ảo / trang web ảo trong IIS, bạn cũng có tùy chọn thiết lập nó thành ứng dụng của chính nó.
Tommy

Tôi có thể làm bạn nhầm lẫn nhưng không có trang nào thuộc trang Web Mặc định. Tôi nhấp chuột phải vào "Trang web" trong IIS7 và chọn "Thêm trang web". Đó là cách tôi đã và đang làm.
mithun_daa

11

Có lẽ ... Nếu bạn tình cờ sử dụng Trình hướng dẫn xuất bản (như tôi đã làm) và chọn hộp kiểm "Biên dịch trước khi xuất bản" (như tôi đã làm) và thấy các triệu chứng tương tự ...

Vâng, tôi đã tự đánh mình vào đầu, nhưng sau khi bỏ chọn hộp này, một cài đặt dường như không liên quan, tất cả các triệu chứng được mô tả sẽ biến mất sau khi triển khai lại.

Hy vọng rằng điều này sẽ sửa chữa một số folks.


Nếu bạn gặp phải vấn đề này, nguyên nhân gốc rễ có thể là có một phiên bản khác của thư viện bên ngoài trong môi trường sản xuất. Tôi đã ứng dụng MVC của tôi biên dịch chống lại một phiên bản mới hơn của một dll bên thứ 3 và một phiên bản cũ trong máy chủ sản xuất ..
ValGe

Dưới đây là để sự kỳ diệu cậu bé, cậu bé, người đàn ông kỳ diệu, hiện tượng này, các không thể ngăn cản, nhà vua, đây là để phụ nữ @ Brian Kirkpatrick và quý ông
Luis Villarroel

10

Windows-> Start -> Bật và tắt các tính năng của widget

Đảm bảo bạn kiểm tra các tùy chọn bắt buộc trong

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


6

Trước khi nộp đơn

runAllManagedModulesForAllRequests="true"/>

hãy xem xét liên kết dưới đây đề xuất một giải pháp thay thế ít quyết liệt hơn. Trong bài đăng, tác giả đưa ra những thay đổi sau đối với web.config cục bộ:

  <system.webServer>
    <modules>
    <remove name="UrlRoutingModule-4.0" />
    <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
    </modules>

http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html


Đây là câu trả lời thực sự. Cảm ơn!
Spivonious

5

Có một Refactor -> Rename Bug trong Visual Studio 2012 đã đổi tên sai "id" bên trong giá trị chuỗi chữ của tham số url trong RouteConfig.cs của tôi. Điều này gây ra lỗi 403.14 trên một thiết lập mới và đúng cách trong cả Windows Server 2012 và Windows Server 2008 R2.

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

đã được đổi thành

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{renamed_text}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

Đối với tôi, tôi phát hiện ra từ lâu mà tôi có thể nhập nullcho nametham số để tránh chiếm một tên cho mỗi tuyến đường. Hóa ra điều này đôi khi cũng gây ra lỗi 403 (chỉ trên môi trường prod của chúng tôi, Win Server 2008 R2 chạy .NET 4.5.1, MVC 5 trong dự án VS2013. Để giải quyết, tôi đã thêm tên cho từng tuyến.
tristankoffee

2

Bạn cũng có thể nhận được 403 nếu khi thử nghiệm với máy chủ nhà phát triển, bạn đang sử dụng đường ống tích hợp và sau đó cài đặt ở chế độ đường ống cổ điển trên máy chủ web IIS 7.5 trực tiếp của bạn, ngoài ra, tôi còn thiếu thư mục app_data của mình.


2

Nếu đang chạy IIS 8.5 trên Windows 8 hoặc Server 2012, bạn có thể thấy rằng chạy mvc 4/5 (.net 4.5) không hoạt động trong thư mục ảo. Nếu bạn tạo một mục nhập máy chủ cục bộ trong tệp máy chủ lưu trữ để trỏ trở lại máy cục bộ của bạn và sau đó trỏ một trang web IIS cục bộ mới đến thư mục đó (với mục nhập tiêu đề máy chủ lưu trữ phù hợp) thì bạn sẽ thấy nó hoạt động.


Tại sao lại đăng cùng một câu trả lời ở nhiều nơi?
devnull

8
Bởi vì tôi đang cố gắng tìm ra giải pháp, và nó liên quan đến cả hai. Cứu ai đó khỏi săn lùng nó xung quanh.
Mastro

Bạn không nên đăng các câu trả lời trùng lặp. Đó là tất cả tôi có thể nói.
devnull

1
<system.webServer>
   <modules runAllManagedModulesForAllRequests="true"/> 
 </system.webServer>

Bạn có thể sử dụng mã trên


1

Tôi đã đặt nhóm ứng dụng của ứng dụng mới thành DefaultAppPooltrong IIS mà rõ ràng là đang sử dụng Classicđường dẫn với .NET v.2.0.

Để giải quyết vấn đề, tôi đã tạo Nhóm ứng dụng mới bằng cách sử dụng Integratedđường dẫn và .NET v4.0. chỉ cho ứng dụng mới này và sau đó mọi thứ bắt đầu hoạt động như mong đợi.

Đừng quên gán nhóm ứng dụng mới này cho ứng dụng. Chọn ứng dụng trong IIS, nhấp Basic Settingsvà sau đó chọn nhóm ứng dụng mới cho ứng dụng.


0

cái mà tôi thấy thường xuyên hơn gần đây là IIS và cho phép các ứng dụng 32bit chạy

Đây có phải là những gì bạn đã thử. nếu không, chúng tôi cần thêm thông tin về phiên bản máy chủ sản xuất và nhà phát triển


Tôi xin lỗi nhưng tôi đã không làm theo ý bạn. Đây là một máy chủ 32bit. Tôi đã cập nhật bài đăng của mình để thêm thông tin.
mithun_daa

Ahhh ... Chúng có trong app_pools riêng biệt không?
MarkKGreenway

Đúng vậy, mỗi trang web của tôi đều có các nhóm ứng dụng riêng.
mithun_daa

0

Tôi gặp một chút vấn đề khác, trên máy chủ 2012, bằng cách nào đó tôi quên bật asp.net 4.5 vì vậy nếu bạn gặp sự cố này, hãy kiểm tra lại xem bạn đã bật nó chưa.


0

Tôi đang chạy Windows Server 2012 R2 trên Azure và ASP.NET 4.5, IIS 8

Tôi đã giải quyết vấn đề này bằng cách gỡ cài đặt tất cả các mục ASP.NET trong Chương trình và Tính năng, sau đó cài đặt lại ASP.NET như thế này với Trình quản lý máy chủ bằng cách sử dụng Thêm vai trò và tính năng: chọn cài đặt Dựa trên vai trò hoặc Tính năng, chọn máy chủ của tôi, sau đó đối với Chọn vai trò máy chủ, chọn Máy chủ web (IIS) / Máy chủ web / Phát triển ứng dụng, sau đó nhấp vào ASP.NET 4.5, xác nhận cài đặt điều kiện tiên quyết, sau đó cài đặt lại ASP.NET 4.5.

Các tìm kiếm trước đây của tôi khiến tôi tin rằng vấn đề thực sự bắt nguồn từ vấn đề đăng ký với ASP.NET. Với các phiên bản trước của ASP.NET, thực sự có một tiện ích mà bạn có thể chạy để đăng ký ASP.NET mà không cần cài đặt lại, nhưng điều đó dường như không còn nữa.


0

Tôi giải quyết vấn đề khi mở studio trực quan, mở rộng các tham chiếu và thay đổi thuộc tính "Copy Local" thành "True".

Tôi phát hiện ra điều này so sánh các hình nền của phiên bản cũ với các hình nền của phiên bản mới của tôi (không hoạt động)


0

Trong trường hợp của tôi, trang mặc định của ứng dụng của tôi là index.html bị thiếu trong các tùy chọn tài liệu mặc định. Thêm nó đã sửa lỗi 403.14 Forbidden.


0

Trong trường hợp của tôi, vấn đề là do ActionFilterAttribute tùy chỉnh, một loại thuộc tính bộ lọc chung gây ra. Thuộc tính khởi tạo một dịch vụ thông qua Autofac nhưng dịch vụ bị lỗi trong hàm tạo:

public ActionFilterAttribute()
{
    _service = ContainerManager.Resolve<IService>();
}

public class Service: IService
{ 
    public Service()
    {
        throw new Exception('Oops!');
    }
}

0

Trong trường hợp của tôi, cả Tính năng của Windows cũng aspnet_regiis -inhư không hoạt động. Sau hàng giờ tìm hiểu trên Internet, tôi đã đưa ra giải pháp của riêng mình:

  1. Trong Trình quản lý IIS trong Mô-đun, tôi đã thay đổi kế thừa thành cục bộ trong nút UrlRoutingModule-4.0:

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

  2. Trong web.config, tôi đã dán một số mẹo kết hợp từ diễn đàn này:

    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true">
            <remove name="UrlRoutingModule-4.0"></remove>
            <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition=""></add>
        </modules>
    </system.webServer>

Hy vọng nó giúp

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.