원격 호스트가 연결을 닫았습니다.오류 코드는 0x800704입니다.CD
예외가 발생할 때마다 웹 사이트에서 오류 전자 메일을 받습니다.다음 오류가 발생했습니다.
원격 호스트가 연결을 닫았습니다.오류 코드는 0x800704입니다.CD
왜 그런지도 몰라요저는 하루에 30개 정도 받습니다.저도 오류를 재현할 수 없어서 문제를 추적할 수 없습니다.
웹 사이트는 IIS7에서 실행 중인 ASP.NET 2입니다.
스택 추적:
시스템에서.웹. 호스팅.IIS7 작업자 요청입니다.시스템에서 통신 오류(Int32 결과, Boolean throwOnDisconnect)를 발생시킵니다.웹. 호스팅.IIS7 작업자 요청입니다.명시적시스템에서 플러시()합니다.Web.HttpResponse.시스템에서 플러시(보냉식 최종 플러시)합니다.Web.HttpResponse.시스템에서 플러시()합니다.Web.HttpResponse.시스템에서 끝().Web.UI.Http 응답 래퍼입니다.시스템. 웹.UI.IHTTP 응답.시스템에서 끝().웹.UI.페이지 요청 관리자입니다.시스템에서 OnPageError(개체 보낸 사람, 이벤트 인수)가 발생합니다.Web.UI.TemplateControl입니다.시스템에서 오류 발생(이벤트 인수).웹.UI.페이지.시스템에서 오류(예외)를 처리합니다.웹.UI.페이지.시스템에서 ProcessRequestMain(부울에는 AsyncPoint 이전 단계 포함, 부울에는 AsyncPoint 이후 단계 포함)이 있습니다.웹.UI.페이지.시스템에서 ProcessRequest(부울에는 AsyncPoint 이전 단계 포함, 부울에는 AsyncPoint 이후 단계 포함)가 있습니다.웹.UI.페이지.시스템에서 요청 처리().웹.UI.페이지.시스템에서 ProcessRequestWithNoAssert(HttpContext 컨텍스트)입니다.웹.UI.페이지.ASP.default_aspx의 프로세스 요청(HttpContext 컨텍스트)입니다.시스템의 프로세스 요청(HttpContext 컨텍스트)입니다.Web.Http 응용 프로그램.콜 핸들러실행 단계.시스템. 웹.HttpApplication.실행 단계.시스템에서 실행()합니다.Web.Http 응용 프로그램.ExecuteStep(I ExecutionStep 단계, Boolean & CompletedSynchronously)
저는 항상 이것을 받습니다.즉, 사용자가 파일을 다운로드하기 시작한 다음 다운로드에 실패했거나 파일을 취소한 것입니다.
예외를 재현하려면 이 작업을 직접 수행해 보십시오. 하지만 이 특정 예외만 처리하는 것을 제외하고는 이 작업을 방지할 수 있는 방법이 없습니다.
앱에 따라 앞으로 나아가는 가장 좋은 방법을 결정해야 합니다.
m.edmondson이 언급했듯이, "원격 호스트가 연결을 닫았습니다."는 사용자나 브라우저가 무언가를 취소하거나 네트워크 연결이 끊기는 등의 경우에 발생합니다.파일 다운로드일 필요는 없지만 클라이언트에 응답하는 리소스에 대한 모든 요청일 필요는 없습니다.기본적으로 오류는 서버가 더 이상 클라이언트(브라우저)와 대화할 수 없기 때문에 응답을 보낼 수 없음을 의미합니다.
이러한 현상을 방지하기 위해 여러 단계를 수행할 수 있습니다.응답과 함께 응답의 내용을 수동으로 보내는 경우.쓰기, 응답.플러시, 웹 서비스/페이지 메소드 또는 이와 유사한 방법에서 데이터를 반환한 다음 응답을 확인해야 합니다.응답을 보내기 전에 클라이언트가 연결되어 있습니다.또한 응답에 시간이 오래 걸리거나 서버 측 처리가 많이 필요한 경우, 호출된 경우 response.end까지 주기적으로 확인해야 합니다.이 속성에 대한 자세한 내용은 다음을 참조하십시오.
http://msdn.microsoft.com/en-us/library/system.web.httpresponse.isclientconnected.aspx
그 대신에, 저는 당신의 경우에 가장 가능성이 높다고 생각하는데, 그 오류는 프레임워크 내부의 무언가에 의해 발생하고 있습니다.다음 링크를 사용할 수 있습니다.
다음과 같은 스택 오버플로 게시물도 관심을 가질 수 있습니다.
응답에서 "원격 호스트가 연결을 닫았습니다."출력 스트림.쓰기
아래 코드로 오류를 재현할 수 있습니다.
public ActionResult ClosingTheConnectionAction(){
try
{
//we need to set buffer to false to
//make sure data is written in chunks
Response.Buffer = false;
var someText = "Some text here to make things happen ;-)";
var content = GetBytes( someText );
for(var i=0; i < 100; i++)
{
Response.OutputStream.Write(content, 0, content.Length);
}
return View();
}
catch(HttpException hex)
{
if (hex.Message.StartsWith("The remote host closed the connection. The error code is 0x800704CD."))
{
//react on remote host closed the connection exception.
var msg = hex.Message;
}
}
catch(Exception somethingElseHappened)
{
//handle it with some other code
}
return View();
}
이제 웹 사이트를 디버그 모드로 실행합니다.출력 스트림에 쓰는 루프에 중단점을 삽입합니다.해당 작업 방법으로 이동하고 첫 번째 반복이 통과된 후 브라우저의 탭을 닫습니다.F10을 눌러 루프를 계속합니다.다음 반복이 발생하면 예외가 표시됩니다.예외를 즐기십시오 :-)
저는 이것을 asp.net 2.0 iis7 Windows 2008 사이트에서 얻고 있었습니다.iis6의 동일한 코드가 정상적으로 작동했습니다.로그인 과정을 망쳐서 저에게 문제가 생겼습니다.사용자는 로그인하여 302를 default.asxp로 가져옵니다. 이는 page_load를 통과하지만 사전 렌더까지는 도달하지 못했지만 iis7이 인증 쿠키 없이 login.asx로 302를 다시 보냅니다.앱 풀 설정을 가지고 놀기 시작했는데, 왠지 '32비트 애플리케이션 활성화'가 고친 것 같습니다.이 사이트는 32비트 드라이버가 필요한 특별한 작업을 수행하지 않기 때문에 이유를 알 수 없습니다.32비트가 필요한 일부 사이트는 여전히 액세스를 사용하지만 이와 같은 SQL 사이트는 사용하지 않습니다.
에서 동적으로 데이터를 읽을 때 이 오류가 발생했습니다.WebRequest
그리고 절대 닫지 않았습니다.Response
.
protected System.IO.Stream GetStream(string url)
{
try
{
System.IO.Stream stream = null;
var request = System.Net.WebRequest.Create(url);
var response = request.GetResponse();
if (response != null) {
stream = response.GetResponseStream();
// I never closed the response thus resulting in the error
response.Close();
}
response = null;
request = null;
return stream;
}
catch (Exception) { }
return null;
}
제 이미지 핸들러에도 제가 작성한 것과 같은 오류가 발생했습니다.교통체증이 심한 현장에서 하루에 30번 정도 구했고, 복제도 할 수 있었습니다.다음 행의 경우 사용자가 요청을 취소할 때(예: 페이지를 닫거나 인터넷 연결이 중단될 때) 이 메시지가 표시됩니다.
myContext.Response.OutputStream.Write(buffer, 0, bytesRead);
예방할 방법이 생각나지 않지만 당신이 제대로 처리할 수 있을지도 모릅니다.예:
try
{
…
myContext.Response.OutputStream.Write(buffer, 0, bytesRead);
…
}catch (HttpException ex)
{
if (ex.Message.StartsWith("The remote host closed the connection."))
;//do nothing
else
//handle other errors
}
catch (Exception e)
{
//handle other errors
}
finally
{//close streams etc..
}
언급URL : https://stackoverflow.com/questions/5564862/the-remote-host-closed-the-connection-the-error-code-is-0x800704cd
'programing' 카테고리의 다른 글
ASP.NET 마이그레이션 '복합 기본 키 오류' 추가 유창한 API 사용 방법 (0) | 2023.06.15 |
---|---|
Oracle에서 보기를 만드는 데 사용되는 SQL을 검색하는 방법은 무엇입니까? (0) | 2023.06.15 |
두 테이블을 비교하고 경기를 건너뛰는 방법은 무엇입니까? (0) | 2023.06.15 |
Python - Excel 파일의 열 너비를 자동으로 조정합니다. (0) | 2023.06.15 |
근거리 및 원거리 포인터 (0) | 2023.06.15 |