2013-05-06 39 views
5

Trong file web.config của tôi, tôi đã xác định một số lỗi tùy chỉnh:trang lỗi Tuỳ chỉnh trong file web.config không bao gồm tất cả đường dẫn url

<customErrors mode="RemoteOnly" defaultRedirect="~/Error"> 
    <error statusCode="500" redirect="~/Error" /> 
    <error statusCode="404" redirect="~/NotFound" /> 
</customErrors> 

Bây giờ, một số liên kết, chẳng hạn như http://mysite.com/dsflhsdff sẽ được chuyển hướng đúng để mysite.com/notfound. Nhưng một số liên kết, như https://mysite.com/videoconference/0/0/0 được xử lý bởi chính máy chủ - thay vì trang lỗi tùy chỉnh của tôi, tôi nhận được trang lỗi IIS (không tìm thấy tệp hoặc thư mục). Ví dụ: liên kết này - https://scyk.pl/forums/0/0/0 sẽ tạo ra lỗi 404 đúng (trang lỗi tùy chỉnh của tôi).

gì đang xảy ra ở đây? Tôi có cần thiết lập các lỗi tùy chỉnh IIS theo cách thủ công không? Nếu vậy, làm thế nào tôi có thể làm điều đó?

Trả lời

0

Nếu cuộc gọi trang không vượt qua động cơ asp.net, sau đó có là xử lý bởi IIS.

Bạn có thể làm điều đó setup very easy if you have direct access to the iis, nhưng IIS cung cấp cho bạn tùy chọn thiết lập lỗi tùy chỉnh này cũng trực tiếp từ web.config của trang web của bạn. Dưới đây là một ví dụ cho các lỗi 404:

<system.webServer> 
    <httpErrors> 
     <remove statusCode="404" subStatusCode="-1" /> 
     <error statusCode="404" prefixLanguageFilePath="" path="/PageNotFound.aspx" responseMode="ExecuteURL" /> 
    </httpErrors> 
</system.webServer> 

Thông tin thêm tại địa chỉ: http://www.iis.net/configreference/system.webserver/httperrors

1

Điều này là do ASP.NET không bao giờ thậm chí biết rằng đã có một yêu cầu cho trang .htm. IIS sẽ tự xử lý các trang .htm mà không cần liên quan đến ASP.NET.

Bạn có thể nhận được trang tùy chỉnh của bạn để hiển thị theo một trong hai cách sau:

Nhận ASP.NET để xử lý các trang .htm: Trong IIS click chuột phải của bạn trang web/thư mục ảo -> properties -> thư mục home/tab thư mục ảo -> nút "cấu hình" trong phần "cài đặt ứng dụng" -> Thêm ánh xạ. Đặt trang lỗi tùy chỉnh cho IIS: Trong IIS nhấp chuột phải vào trang web của bạn/thư mục ảo -> thuộc tính -> tab lỗi tùy chỉnh -> đặt lỗi 404 cho trang trang lỗi của bạn.

1

Bạn cũng có thể xử lý lỗi này trong file Global.asax của bạn trong Application_Error phương pháp

ví dụ Thông tin

void Application_Error(object sender, EventArgs e) 
    { 
     // Code that runs when an unhandled error occurs 
     Exception exc = Server.GetLastError(); 

     // Handle HTTP errors 
     if (exc.GetType() == typeof(HttpException)) 
     { 
      // The Complete Error Handling Example generates 
      // some errors using URLs with "NoCatch" in them; 
      // ignore these here to simulate what would happen 
      // if a global.asax handler were not implemented. 
      /*if (exc.Message.Contains("NoCatch") || exc.Message.Contains("maxUrlLength")) 
       return;*/ 

      //Redirect HTTP errors to HttpError page 
      /*Server.Transfer("HttpErrorPage.aspx");*/ 
     } 
    } 

thêm: http://www.asp.net/web-forms/tutorials/aspnet-45/getting-started-with-aspnet-45-web-forms/aspnet-error-handling

0

này đang xảy ra vì IIS không thể xác định vị trí trang lỗi tùy chỉnh của bạn trong một số trường hợp. Điều này xảy ra với tôi với các phần mở rộng nhất định, nhưng bằng cách cấu hình trang lỗi tùy chỉnh của tôi trong phần Lỗi trang của trình quản lý IIS, tôi có thể truy cập trang lỗi tùy chỉnh của mình mỗi lần.

Heres làm thế nào để làm điều đó:

Đi vào IIS Manager và chọn các trang web trong câu hỏi, tìm biểu tượng mang tên 'Trang Lỗi' dưới phần IIS.

Sau khi bạn nhấp đúp chuột vào biểu tượng, bạn sẽ được trình bày với một danh sách các mã trạng thái và các tập tin tương ứng chịu trách nhiệm về việc cung cấp các lỗi.

Tìm mã lỗi, trong trường hợp 404 (nếu không tồn tại, bạn có thể thêm mã từ menu bên phải bằng cách nhấp vào 'Thêm ...'), sau đó nhấp vào nút 'Chỉnh sửa ...' trong menu bên phải.

Tiếp theo, nhấp vào nút radio để 'Thực thi URL trên trang web này' trong hộp thoại bạn đã được trình bày. Đây là nơi bạn cung cấp URL tương đối mà người dùng sẽ được chuyển hướng đến.

Sau khi bạn đã hoàn thành các tùy chọn trong hộp thoại Chỉnh sửa, bạn sẽ muốn chọn trang của bạn trong Lỗi Trang đau chính một lần nữa, chỉ có thời gian này bấm vào 'Cài đặt Sửa Feature ...'

Trong Chỉnh sửa cài đặt trang lỗi bạn được trình bày, đảm bảo rằng 'Các lỗi chi tiết cho các yêu cầu cục bộ và các trang lỗi tùy chỉnh cho các yêu cầu từ xa' được chọn. Cũng đảm bảo trang bạn đã nhập trong menu Chỉnh sửa trước đó được nhập vào trường Đường dẫn trong phần Trang mặc định của hộp thoại Sửa lỗi trang. Cuối cùng, Loại Đường dẫn phải được đặt thành 'Thực thi URL'

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