2012-11-01 10 views
23

Tôi mới sử dụng Azure. Có ai biết làm thế nào có được thông báo lỗi chi tiết trên trang web được triển khai để Azure web?Cách nhận chi tiết lỗi trên trang web Azure

tôi thêm SimpleMembership vào trang web và bây giờ Đăng ký và Đăng nhập (bài viết) đang hiển thị

Xin lỗi, đã xảy ra lỗi khi thực hiện yêu cầu của bạn.

Tôi đang kết nối với DB trên máy tính tại nhà của mình (không có vấn đề với kết nối).

LogFiles thư mục trên máy chủ ftp Azure có một số tệp nhưng tôi không thấy cách sử dụng thông tin này. Tôi ước gì tôi có thể nhận được YellowScreen trên xanh ...

Trả lời

24

Bạn có hai lựa chọn:

Trước tiên, bạn có thể tắt lỗi tùy chỉnh trong cấu hình web của bạn. Đây là cách tiếp cận nhanh chóng và bẩn thỉu nhưng ít nhất nó sẽ giúp bạn có được thông tin mà bạn đang tìm kiếm. Chỉ cần chắc chắn bật lại lỗi tùy chỉnh khi bạn hoàn tất. LƯU Ý: Phương pháp này sẽ hiển thị stacktrace của bạn cho toàn thế giới.

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

Thứ hai, bạn có thể remote desktop vào máy triển khai của bạn, hãy để IIS Manager, và Duyệt đến trang web của bạn. Một khi bạn đang có, tái tạo các lỗi và bạn sẽ nhận được màn hình màu vàng của cái chết bạn đang tìm kiếm. Để làm việc này, bạn sẽ phải Enable Detailed Errors

+2

tôi sẽ liệt kê phương án 2 đầu tiên, chỉ để nhấn mạnh thực tế rằng việc vô hiệu hóa các lỗi tùy chỉnh và trình bày stacktrace với thế giới nói chung là một ý tưởng tồi. Từ xa trong hoặc sử dụng các công cụ Azure SDK để xem các bản ghi sự kiện từ Visual Studio. – angularsen

+0

Tùy chọn 2 sẽ chỉ khả dụng trên máy ảo dù phải không? Nếu bạn triển khai như Azure trang web bạn không có quyền truy cập vào IIS làm bạn? – Shumii

+0

Tôi mong đợi một khu vực trong cổng cũ hoặc mới để hiển thị cho bạn các lỗi (cũng cung cấp cho bạn một số nhưng không chi tiết). Về cơ bản tôi đang tìm kiếm một cái gì đó tương tự như EventViewer – Shumii

0

Tạo bảng trong db nơi bạn sẽ lưu trữ nhật ký lỗi, tôi đang sử dụng EF và bảng được gọi là Nhật ký.

Tạo một lớp:

public class MyAppExceptionFilter : IExceptionFilter 
    { 
     private MyApp.Models.ApplicationDbContext db = new Models.ApplicationDbContext(); 

     public void OnException(ExceptionContext context) 
     { 
      Exception ex = context.Exception; 
      Log log = new Log(); 
      log.DateTime = DateTime.Now; 
      log.LogText = "Exception happened, text:" + ex.Message; 
      try 
      { 
       log.LogText +="User details:"+context.HttpContext.User.Identity.Name; 
      } 
      catch 
      { 
       log.LogText += "User details:none"; 
      } 
      db.Logs.Add(log); 
      db.SaveChanges(); 
     } 
    } 

Trong FilterConfig.cs trong App_Start thư mục add:

public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
     { 
      filters.Add(new HandleErrorAttribute()); 
      *filters.Add(new MyAppExceptionFilter());* 
     } 
+0

elmah thực hiện tốt công việc này miễn phí, không có điểm sáng tạo lại bánh xe. Nếu bạn trả tiền cho theres một số giải pháp tuyệt vời ra khỏi đó. – rolls