문제

System.net.webclient.uploadfile을 사용하여 파일을 웹 서버에 업로드하려고하지만 WebException을 계속 얻습니다. 구체적으로, 나는 3 개의 오류가 발생하고 있습니다. 왜 내가 같은 오류를 얻지 못하는지 모르겠지만 모두 온라인에서 찾은 내용에 따라 관련이있는 것 같습니다.

  • 요청이 중단되었습니다. 요청이 취소되었습니다.
  • 연결이 닫혔습니다. 다시 시도하십시오.
  • 원격 호스트는 기존 연결을 강제로 닫았습니다.

다소 무작위로 보입니다 (항상 같은 파일, 시간 또는 내가 알아낼 수있는 다른 패턴이 아님). 또한이 작업은 내 작업 네트워크에서 발생하지 않지만 (업로드는 2 초 미만이 걸리지 않지만) DSL을 통해 집에서 발생합니다 (업로드는 약 2 분이 걸립니다).

내가 온라인에서 찾은 것에서, 이러한 오류는 Keep-alives와 관련이 있습니다. 불행히도 WebClient는이를 끄는 방법을 제공하지 않습니다 (성능 기능이기 때문에 어쨌든 원하는지 확실하지 않습니다).

나는 그것이 타임 아웃과 관련이 있다고 생각하지만 그 이유를 알 수는 없습니다. 서버는 ASP.NET MVC이고 시간 초과는 1 시간으로 설정됩니다.

    <httpRuntime
        maxRequestLength="10024" 
        executionTimeout="3600"
        /><!-- 10024 = 10MB, 3600 = 1hr -->

이 문제가 발생하지 않도록이 문제를 해결하는 데 관심이 있으므로 복구 기술도 발생하지 않습니다.

일부 배경은 사진을 서버에 업로드하는 Winforms 응용 프로그램을위한 것입니다. 서버는 ASP.NET MVC 응용 프로그램입니다. 클라이언트는 오랫동안 올바르게 일했지만 ASP.NET MVC로 전환 한 이후로 실패하고 있습니다 (SA 파일 업과 함께 클래식 ASP를 사용하고 있음). 클라이언트 측은 새로운 URL을 수용하기 위해서만 변경되었습니다.

도움이 되었습니까?

해결책

"요청이 중단되었습니다 : 요청이 취소되었습니다." 파일 전송 중에 웹 클리어가 시간이 걸리면 던져집니다. 파일 전송이 발생하지 않으면 대신 "작업 시간이 초과되었습니다"를 얻게됩니다.

클라이언트에서 시간 초과가 발생합니다. WebClient를 사용하면 시간 초과를 설정할 수 없으며 HTTPWebRequest (WebClient가 사용하는)의 기본값은 100 초입니다. httpwebrequest를 사용할 때 진행 상황을 얻는 방법을 알아 내야 할 것 같습니다. 또한 ASP.NET 파일 전송이 클래식 ASP와 함께 SafileUp을 사용하는 것보다 느린 이유를 알아 내야합니다.

업데이트 : WebClient를 대신하여 WebHelper 클래스를 만들었지 만 기본 WebRequest의 필요한 기능에 더 많은 액세스 권한을 제공합니다. 또한 웹 클라이언트를 통해 여러 기능을 제공합니다. 관심이 있으시면 Bizark 프로젝트 CodePlex에서.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top