“Một ngoại lệ đã xảy ra khi xử lý yêu cầu của bạn. Ngoài ra, một ngoại lệ khác đã xảy ra khi thực thi trang lỗi tùy chỉnh… ”


104

Tôi đang cố gắng xuất bản trang web MVC dưới dạng webrole Azure.

Khi tôi chạy nó cục bộ, mọi thứ hoạt động tốt.

Nhưng khi tôi xuất bản nó lên Azure và lướt đến một số hành động MVC, tôi gặp lỗi này:

lỗi server trong ứng dụng '/'

Lỗi runtime

Mô tả: Đã xảy ra ngoại lệ khi xử lý yêu cầu của bạn. Ngoài ra, một ngoại lệ khác đã xảy ra khi thực thi trang lỗi tùy chỉnh cho ngoại lệ đầu tiên. Yêu cầu đã bị chấm dứt.

Tôi không hiểu làm thế nào trình xử lý lỗi có thể gặp phải ngoại lệ, vì lỗi được xử lý theo cách mặc định:

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
    }
}

Đây là web.config của tôi:

<?xml version="1.0"?>

<configuration>
  <configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    </sectionGroup>
  </configSections>

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

  <appSettings>
    <add key="webpages:Enabled" value="false" />
  </appSettings>

  <system.web>
        <httpHandlers>
      <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
    </httpHandlers>

    <pages
        validateRequest="false"
        pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <controls>
        <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
      </controls>
    </pages>
  </system.web>

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />

    <handlers>
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
    </handlers>
  </system.webServer>
</configuration>

Đây là Error.cshtml:

@model System.Web.Mvc.HandleErrorInfo

@{
    ViewBag.Title = "Error";
}

<h2>
    Sorry, an error occurred while processing your request.
</h2>

Điều gì có thể gây ra ngoại lệ này và tại sao tôi không thể tái tạo nó cục bộ?


41
Trời ạ, lỗi của bạn ném ra lỗi. Đó là một số ish nghiêm trọng :)
Jack

Tôi khuyên bạn nên bật lỗi đăng nhập chi tiết trong Cổng thông tin quản lý và xem lại nhật ký trên trang FTP.
Jakub Konecki

Có điều gì trong bố cục của bạn có thể là thủ phạm không?
drch

@drch Không, không có gì thay đổi trong bố cục kể từ lần cuối cùng nó hoạt động.
Ilya Kogan

Câu trả lời:


213

Đầu tiên, đặt customErrors = "Off" trong web.config và triển khai lại để nhận được thông báo lỗi chi tiết hơn sẽ giúp chúng tôi chẩn đoán sự cố. Bạn cũng có thể RDP vào phiên bản và duyệt đến trang web từ IIS cục bộ để xem các lỗi.

<system.web>
      <customErrors mode="Off" />

Mặc dù vậy, hãy đoán trước - bạn có một số tham chiếu (rất có thể là tham chiếu Azure SDK) không được đặt thành Copy Local = true. Vì vậy, tất cả các phụ thuộc của bạn không được triển khai.

Trước tiên hãy đến lỗi chi tiết và cập nhật câu hỏi của bạn.

CẬP NHẬT: Một tùy chọn thứ hai hiện có sẵn trong VS2013 là Gỡ lỗi từ xa cho Dịch vụ đám mây hoặc Máy ảo .


12
Đặt customErrors thành "off" cuối cùng đã cho thấy một số ngoại lệ thực sự. Tôi đang điều tra chúng ngay bây giờ.
Ilya Kogan

1
Kể từ khi nó dẫn đến một lỗi IIS, bạn có thể tùy chỉnh chúng quá như một fallback a la benfoster.io/blog/aspnet-mvc-custom-error-pages
drzaus

Các lỗi customErrors của tôi là "Tắt", nhưng tôi tiếp tục thấy thông báo "Rất tiếc, đã xảy ra lỗi khi xử lý yêu cầu của bạn." lỗi. Bạn có thể giúp tôi ở đây? @Ilya Kogan
GuiPab

1
+1 chỉ đơn giản vì việc đặt customerror = off cho phép tôi thấy rằng lỗi là do tôi đã sử dụng giải pháp trang web làm mẫu cho một trang web khác và quên xóa thư mục bin, tức là đó là vấn đề trùng lặp.
Paul Zahra

7

Tôi không sử dụng Azure, nhưng tôi gặp lỗi tương tự cục bộ. Việc sử dụng <customErrors mode="Off" />dường như không có tác dụng, nhưng việc kiểm tra Nhật ký ứng dụng trong Trình xem sự kiện cho thấy một cảnh báo từ ASP.NET chứa tất cả chi tiết tôi cần để giải quyết vấn đề.


3

Nếu bạn thêm tệp này vào tệp chuyển đổi web.config của mình, bạn cũng có thể đặt các tùy chọn xuất bản nhất định để bật hoặc tắt gỡ lỗi:

<system.web>
    <customErrors mode="Off" defaultRedirect="~/Error.aspx" xdt:Transform="Replace"/>
</system.web>

1

Khi xuất bản vào IIS, bởi Web Triển khai, tôi chỉ kiểm tra các tập tin Xuất bản Tùy chọn và thực thi. Bây giờ nó hoạt động! Sau khi triển khai này, các hộp kiểm không cần phải được chọn. Tôi không nghĩ đây có thể là giải pháp cho tất cả mọi người, nhưng đó là điều duy nhất tôi cần làm để giải quyết vấn đề của mình. Chúc may mắn.


0

Tôi đã gặp sự cố này chỉ với redirectMode="ResponseRewrite"( redirectMode="ResponseRedirect"hoạt động tốt) và không có giải pháp nào ở trên giúp tôi giải quyết vấn đề. Tuy nhiên, khi tôi thay đổi "Chế độ đường ống được quản lý" của nhóm ứng dụng của máy chủ từ "Cổ điển" thành "Tích hợp", trang lỗi tùy chỉnh đã xuất hiện như mong đợi.


-1

Thay vào đó, bạn có thể sử dụng Oracle.ManagedDataAccess.dll (tải xuống từ Oracle), bao gồm dll đó trong bin dir dự án của bạn, thêm tham chiếu đến dll đó trong dự án. Trong mã, "using Oracle.MangedDataAccess.Client". Triển khai dự án đến máy chủ như bình thường. Không cần cài đặt Oracle Client trên máy chủ. Không cần thêm thông tin lắp ráp trong web.config.


2
Làm thế nào Oracle xuất hiện trong bức tranh này?
Aamol
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.