2011-11-27 12 views
14

tôi đang sử dụng elmah ->Elmah.axd trong dự án của tôi để tìm lỗi.
có một lỗi như thế này:Máy chủ từ xa đã đóng kết nối Lỗi, cách khắc phục?

System.Web.HttpException: The remote host closed the connection. The error code is 0x800703E3. 
Generated: Sun, 27 Nov 2011 13:06:13 GMT 

System.Web.HttpUnhandledException (0x80004005): Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.Web.HttpException (0x800703E3): The remote host closed the connection. The error code is 0x800703E3. 
    at System.Web.Hosting.IIS7WorkerRequest.RaiseCommunicationError(Int32 result, Boolean throwOnDisconnect) 
    at System.Web.Hosting.IIS7WorkerRequest.ExplicitFlush() 
    at System.Web.HttpResponse.Flush(Boolean finalFlush) 
    at System.Web.HttpWriter.TransmitFile(String filename, Int64 offset, Int64 size, Boolean isImpersonating, Boolean supportsLongTransmitFile) 
    at System.Web.HttpResponse.TransmitFile(String filename, Int64 offset, Int64 length) 
    at SalarSoft.Utility.SP1.ResumeDownload.ProcessDownload(String fileName, String headerFileName) 
    at NiceFileExplorer.en.Download.DownloadFile_SalarSoft(String fileName) 
    at NiceFileExplorer.en.Download.GoForDownloadFile(String filepath) 
    at NiceFileExplorer.en.Download.MainCodes() 
    at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) 
    at System.Web.UI.Control.LoadRecursive() 
    at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
    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 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 

trong làm việc với trang web, chúng ta không thấy lỗi này.
nhưng elmah gửi lỗi này cho tôi nhiều lần.
ý nghĩa của lỗi này và cách khắc phục sự cố?

EDIT 1
{trang web của tôi là dành cho downlaod file điện thoại di động và một số lần nó thực sự bận rộn}
{i đang sử dụng windows server 2008 r2-> truy cập từ xa}

EDIT 2 sau khi bình luận
một số cửa sổ thông tin và cảnh báo (không có lỗi) các bản ghi cho ngày hôm nay là như dưới đây:

cảnh báo

Quá trình phân phối hồ bơi ứng dụng 'ASP.NET 4.0 (tích hợp)' vượt quá giới hạn thời gian trong khi tắt. Id quá trình là '6764'.

cảnh báo

Một quá trình lao '3232' phục vụ hồ bơi ứng dụng 'ASP.NET 4.0 (tích hợp)' thất bại trong việc ngăn chặn một kênh nghe cho giao thức 'http' trong thời gian quy định. Các trường dữ liệu chứa số lỗi.

cảnh báo

Một quá trình phục vụ hồ bơi ứng dụng 'ASP.NET 4.0 (tích hợp)' vượt giới hạn thời gian trong quá trình shut down. Id quá trình là '3928'.

+0

Bạn cần tìm hiểu lý do tại sao máy chủ từ xa đóng kết nối. –

+0

Bạn sẽ phải xem trên máy chủ. Ví dụ, bản ghi sự kiện Windows trên máy chủ; có thể nhật ký IIS. –

+0

@John Saunders hi và cảm ơn cho bình luận, plz xem EDIT của tôi 2. – MoonLight

Trả lời

23

Tôi thấy điều này rất nhiều trong nhật ký của trang web mà tôi đã tạo.

AFAIK ngoại lệ đó có nghĩa là máy khách đã ngắt kết nối (chuyển đến trang khác/đóng trình duyệt) trước khi trang tải xong. Nếu khách hàng đang tải xuống tệp thì lỗi này thậm chí còn có nhiều khả năng hơn vì họ có nhiều thời gian hơn để quyết định thoát/tiếp tục.

Lỗi không hiển thị với người dùng * - vì vậy tôi vừa xóa nó khỏi nhật ký Elmah.

* Trang web chỉ cho phép người dùng được xác thực. Tôi có thể thấy từ Elmah, người đã gặp phải lỗi và khi nào. Tôi đã hỏi người dùng và không một người nào có bao giờ báo cáo gặp phải lỗi này trong ứng dụng khách.

+0

Xin chào Neil, Vì vậy, không có gì phải lo lắng. Tôi đúng không? – MoonLight

+0

yep. Không có gì phải lo lắng về. –

+0

@NeilThompson, bạn có thể giấu loại lỗi này trên Elmah không? – eduardobr

2

Tôi đã gặp phải vấn đề này ngày hôm nay, và đối với tôi, điều đó đang xảy ra vì ổ cắm đã hết thời gian chờ đợi từ xa gửi đi.

Trong ví dụ này, một khách hàng chậm (hoặc cố tình) có thể gây ra ngoại lệ.

Tôi chọn giải quyết nó bằng cách tăng thời gian chờ nhận trên ổ cắm của mình, vì tôi muốn hỗ trợ một số khách hàng chậm hơn cụ thể đã bị đánh thuế với các yêu cầu SSL cao.

0

Bit muộn cho bữa tiệc này, nhưng trong trường hợp nó giúp người khác, Response.Close() đã gây ra ngoại lệ trong tình huống của tôi.

Tôi đã thấy ngoại lệ, được mô tả bởi OP, được chụp bởi Elmah.

này đã xảy ra do đóng phản ứng (mã tôi đã hỗ trợ được văn bản cho dòng đầu ra Response):

Response.Flush(); 
Response.Close(); 
Response.End(); 

Loại bỏ Response.Close(); dừng ngoại lệ được ném.

2

Tôi đã gặp phải lỗi đó khi người dùng hủy tải xuống tệp. Ở phía máy chủ, nó tạo ra một ngoại lệ với thông báo Máy chủ từ xa đã đóng kết nối. Mã lỗi là 0x800703E3. Tuy nhiên, ngoại lệ không có bất kỳ loại riêng biệt nào có thể được xử lý riêng.

Trong odrer để xử lý nó trong ASP.NET MVC đúng tôi đã thêm một logger ngoại lệ:

public static class RegisterFilters 
{ 
    public static void Execute(HttpConfiguration configuration) 
    { 
     configuration.Services.Add(typeof(IExceptionLogger), new WebExceptionLogger()); 
    } 
} 

Và WebExceptionLogger lớp thực hiện:

public class WebExceptionLogger : ExceptionLogger 
{ 
    private const int RequestCancelledByUserExceptionCode = -2147023901; 

    public override void Log(ExceptionLoggerContext context) 
    { 
     var dependencyScope = context.Request.GetDependencyScope(); 
     var loggerFactory = dependencyScope.GetService(typeof(ILoggerFactory)) as ILoggerFactory; 
     if (loggerFactory == null) 
     { 
      throw new IoCResolutionException<ILoggerFactory>(); 
     } 

     var logger = loggerFactory.GetTechnicalLogger<WebExceptionLogger>(); 
     if (context.Exception.HResult == RequestCancelledByUserExceptionCode) 
     { 
      logger.Info($"Request to url {context.Request.RequestUri} was cancelled by user."); 
     } 
     else 
     { 
      logger.Error("An unhandled exception has occured", context.Exception); 
     } 
    } 
} 

tôi nhận thấy rằng specifict loại lỗi này có HRESULT = -2147023901, vì vậy đây là những gì tôi đang lọc theo.

Hy vọng điều này sẽ hữu ích.