2010-07-20 22 views
7

Tôi đang làm việc với nhà cung cấp bên thứ ba tại thời điểm đã cung cấp ứng dụng web ASP.Net. Ứng dụng web tạo ra khoảng 200 ngoại lệ không được xử lý mỗi ngày, kết quả là email trong hộp của tôi. Khi điều tra, hầu hết các lỗi này được kích hoạt bởi trình thu thập dữ liệu web của GoogleBot lập chỉ mục trang web và kích hoạt quyền truy cập vào dịch vụ web của bên thứ ba khác, đó là mức giới hạn các yêu cầu. Khi vượt quá giới hạn yêu cầu, dịch vụ web của bên thứ ba từ chối yêu cầu, điều này dẫn đến một ngoại lệ không được xử lý trong máy chủ web và mã trạng thái HTTP/500. Ngoại lệ trông giống như sau:Có chấp nhận được các ngoại lệ chưa được giải quyết trong các ứng dụng web ASP.NET không?

 
Exception: Exception of type 'System.Web.HttpUnhandledException' was thrown., Stack Trace: at System.Web.UI.Page.HandleError(Exception e) 
    at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
    at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
    at System.Web.UI.Page.ProcessRequest() 
    at System.Web.UI.Page.ProcessRequest(HttpContext context) 
    at ASP.views_products_detail_aspx.ProcessRequest(HttpContext context) 
    at System.Web.Mvc.ViewPage.RenderView(ViewContext viewContext) 
    at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) 
    at System.Web.Mvc.ControllerActionInvoker.c__DisplayClass11.b__e() 
    at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) 
    at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) 
    at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) 

Nhà phát triển ứng dụng web có vẻ không muốn xử lý những lỗi này vì lý do tôi thực sự không hiểu. Cách tiếp cận của họ là tăng tốc GoogleBot cho đến khi các lỗi xảy ra (Google lập chỉ mục khá hung hăng, tạo ra khoảng 5.000 lượt truy cập mỗi ngày). Trong khi tôi chấp nhận việc điều chỉnh GoogleBot sẽ hoạt động, nó có vẻ giống như một sự phản đối với tôi. Tôi đã luôn coi những ngoại lệ chưa được giải quyết là lỗi. Ứng dụng web có nên xử lý các lỗi này không? Đó là có bao giờ chấp nhận được để cho phép HTTP/500 xảy ra không? Các nhà phát triển web nghĩ gì?

+0

Đặc điểm kỹ thuật nêu rõ nhà phát triển nên làm gì với các lỗi này? Nếu nó không xác định thì tình hình hiện tại được xác định. Và do đó chấp nhận được. –

Trả lời

2

Không, không được chấp nhận. Ứng dụng web nên, ít nhất, bắt ngoại lệ trong global.asax.cs và làm điều gì đó hợp lý với chúng.

+0

Tôi nghi ngờ đó là cách tôi nhận được email, có vẻ như ứng dụng đang bắt ngoại lệ và đăng nhập. Đó là một cách tiếp cận hợp lý, nhưng tiếng ồn liên tục từ máy chủ làm cho các thông báo vô dụng. Tất nhiên, tiếng ồn sẽ giảm xuống nếu tôi điều chỉnh GoogleBot. –

+0

Không, đó chỉ là thiết kế xấu về báo cáo lỗi. Nó sẽ ghi lại các lỗi ở đâu đó thuận tiện, và sau đó thông báo cho bạn rằng các lỗi đã được ghi lại, cho phép bạn bấm vào một liên kết để xem chúng. Tuy nhiên, không nên gửi email cho bạn với mỗi lỗi mới. Thay vào đó, nó chỉ nên thông báo cho bạn về các lỗi xảy ra sau khi bạn xem lô cuối cùng. –

+0

"tiếng ồn liên tục từ máy chủ làm cho các thông báo vô dụng" Hãy cẩn thận. Nếu bạn không xem ngoại lệ, bạn sẽ bỏ lỡ những vấn đề quan trọng. Liếc qua 200 email không phải là vấn đề lớn. – jfar

0

Ứng dụng web đang xử lý các lỗi bằng cách gửi email cho bạn.

Điều tôi thắc mắc là, nếu một người truy cập trang web thực sự gặp phải lỗi này, bạn muốn nó xử lý như thế nào? Tôi tưởng tượng bạn sẽ muốn nhận được email nếu một người truy cập thực sự gặp phải lỗi này. Có thể một số lỗi này là từ khách truy cập thực sự vì Google đã sử dụng hết hạn ngạch của họ?

Có vẻ như bạn cần một cách duyên dáng hơn tổng thể để đảm bảo trang web mở rộng mà không có dịch vụ của bên thứ ba. Nó không rõ ràng với tôi mà nhà cung cấp (các nhà phát triển ASP.NET hoặc dịch vụ bên thứ ba) nên làm việc trên nó, nhưng đó là nhiều hơn một vấn đề quản lý dự án.

+0

nếu tôi hiểu chính xác, sự cố là cuộc gọi tới trang web của anh ấy khiến cho cuộc gọi đó trở thành dịch vụ áp đặt giới hạn tốc độ. GoogleBot đang kích hoạt giới hạn này bằng cách gọi rất tích cực. Giải pháp sẽ là sử dụng bộ nhớ đệm để tránh các cuộc gọi này. –

+1

@Steve - chính xác! sửa chữa có thể là thêm bộ nhớ đệm, không phải để cải thiện việc xử lý lỗi. Tôi luôn luôn là một fan hâm mộ của xử lý lỗi tốt nhưng nếu xử lý lỗi của bạn là quá tải có lẽ tốt hơn để sửa lỗi. –

+0

@Mark: Tôi sẽ sẵn sàng đồng ý rằng việc thêm địa chỉ bộ nhớ đệm là nguyên nhân gốc rễ tốt hơn và quan trọng hơn. Tôi vẫn cảm thấy rằng gửi thư rác cho quản trị viên khi một điều kiện dự kiến ​​(nếu không mong muốn) xảy ra chính nó là một vấn đề. –

2

Nhà phát triển web không muốn xử lý ngoại lệ trong dịch vụ web ?

Điều đó khá đáng sợ vì có nhiều lý do khiến dịch vụ web có thể gây ra ngoại lệ. Thay vì yêu cầu khắc phục sự cố GoogleBot, hãy thử yêu cầu nhà phát triển cho phép ứng dụng giảm hiệu quả nếu dịch vụ web không khả dụng.

+1

Dịch vụ web không phải là nhà phát triển web. Nhà phát triển web chỉ đơn giản là báo cáo lỗi được báo cáo cho họ. Điều đó hoàn toàn hợp lý và không có cách nào đáng sợ. –

1

IMO điều này thực sự khá chấp nhận được. Vấn đề là bạn đã đạt đến điểm bão hòa dịch vụ của bạn khi nó đứng. Có 2 cách để xử lý điều này: hoặc chi tiêu số tiền và thời gian cần thiết để tăng điểm bão hòa và được phân bổ thêm dịch vụ hoặc dành thời gian và tiền bạc để làm cho mình không phụ thuộc vào dịch vụ nói trên.

Chỉnh sửa: Có tùy chọn thứ 3 để theo dõi các bước chân của NY Times coi Google là kẻ trộm dịch vụ của bạn và cấm chúng. Tất nhiên điều này thực sự giống như đặt đầu vào cát nhưng đó là một lựa chọn.

+1

Tôi hoàn toàn đồng ý. Nhà phát triển đã không làm gì sai ở đây. –

+0

+1 Không có cách nào để ứng dụng web phân phối chiến lược ghi nhật ký phù hợp ra khỏi hộp. Nó phải được điều chỉnh cho lưu lượng truy cập, tính khả dụng của các dịch vụ bên thứ 3 và quản trị viên thời gian sẵn sàng chi tiêu đọc các bản ghi lỗi và nhật ký. Đây là điều bạn sẽ nhận được khi bạn có hợp đồng dịch vụ với công ty đã phát triển ứng dụng. Bạn có thể nhận được nó miễn phí nếu bạn có một mối quan hệ lâu dài với họ. –

+1

Các ngoại lệ do GoogleBot gây ra không phải là ngoại lệ, vì vậy việc gửi hàng trăm thông báo không phải là một phản hồi hợp lý. Câu trả lời đúng là sử dụng bộ nhớ đệm hoặc điều chỉnh để khắc phục sự cố. Nhưng trong thời gian tạm thời, các ngoại lệ của GoogleBot nên được ghi âm thầm lặng mà không có spam. –

3

Có một số câu hỏi ở đây: trang web hiển thị ngoại lệ (Không), nên trang web hiển thị nội dung thân thiện hơn với người dùng (Có), nên trang web trả lại lỗi 500 cho Googlebot khi có thể ' t tiến hành (Có thể), nếu bạn yêu cầu Googlebot làm chậm (Có), bạn nên phân phối 500 email ngoại lệ mỗi ngày mà không có điều chỉnh hoặc tóm tắt (Có thể là không).

Chi tiết: -

Sử dụng google.com/webmasters bạn có thể yêu cầu Google ghi nhận trang web của bạn ít mạnh mẽ.

Bạn không bao giờ nên hiển thị Ngoại lệ cho người dùng, bạn nên luôn luôn xem và hiển thị trang lỗi thân thiện NHƯNG bạn cần cẩn thận bảo vệ mã HTTP khi bạn hiển thị trang đó (ví dụ: 404 hoặc 500). một trang có mã = ​​200 thì trang lỗi đó sẽ tìm đường vào các chỉ mục của công cụ tìm kiếm.

Bất kỳ trình xử lý lỗi nào đều phải giới hạn tần suất gửi email khi có lỗi xảy ra.

Trình xử lý lỗi cũng được viết cũng nên cho phép việc loại bỏ các lỗi bạn biết sẽ xảy ra - ví dụ: một số công cụ tìm kiếm nhất định yêu cầu các trang không tồn tại.

Nếu Google có thể đưa bạn vào tình trạng giới hạn tốc độ thì lưu lượng truy cập cao từ người dùng có thể giống nhau, vì vậy, có vẻ như bạn cần một số giải pháp lưu vào bộ nhớ cache tại đây.

+0

Lời khuyên tốt và toàn diện. –

-1

Tình huống ngoài tầm kiểm soát của nhà cung cấp đã xảy ra. Nhà cung cấp đã ghi lại lỗi và gửi thông báo cho bạn. Nhà cung cấp không thể kiểm soát giới hạn trên dịch vụ web hoặc số lượng khách truy cập vào trang web của bạn. Bạn kiểm soát cả hai.

Trừ khi đặc điểm kỹ thuật cho biết rằng email phải được điều chỉnh theo cách nào đó vị trí của nhà cung cấp là âm thanh. Bạn muốn công việc làm bạn trả tiền cho nó.

Vì vậy, bạn có ba lựa chọn

  1. Throttle google một cách nào đó;
  2. Gia hạn phụ cấp dịch vụ web của bạn; hoặc
  3. Thanh toán cho trang web bị thay đổi.
+1

Liệu có nên tính phí sửa chữa trang web hay không là vấn đề khác với việc liệu các ngoại lệ chưa được xử lý có được chấp nhận hay không. –

+0

Vấn đề thanh toán không được đề cập ở đây, đây không phải là việc họ có được trả tiền hay không, đó hoàn toàn là một vấn đề kỹ thuật. –

+0

@Tim @Steven - Không có "ngoại lệ chưa được giải quyết" trong câu hỏi. Ngoại lệ được "xử lý" bằng cách gửi cho nhà điều hành trang web một email. Câu hỏi "thực" là hành vi được chỉ định và hành vi hiện tại có phù hợp với điều đó hay không. –

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