어떻게 알 수 있습니에서 클라이언트 측의 경우 HTTP 핸들러가 처리?

StackOverflow https://stackoverflow.com/questions/152618

  •  02-07-2019
  •  | 
  •  

문제

아 질문에 대한 간단한 솔루션이지만,여기에...

나는 사용자 정의 만든 silverlight 제어를 위한 여러 파일을 선택하고 보내는 서버입니다.그것은 파일을 전송하는 일반적인 핸들러(FileReciever.ashx)를 사용하 OpenWriteAsync 방식의 웹브 제어합니다.

기본적으로,silverlight 코드가 다음과 같이 파일:

WebClient client = new WebClient();
client.OpenWriteCompleted += (sender, e) =>
  {
    PushData(data, e.Result);
    e.Result.Close();
    data.Close();
  };
client.OpenWriteAsync(handlerUri); 

서버 측의 처리기는 단순히 읽기를 들어오는 스트림,그리고 다음은 좀 더 많은 처리 결과의 바이트 배열입니다.

문제는 클라이언트 측 OpenWriteCompleted 수행 한 빨리 모든 데이터를 통해 전송되는 와이어입니다.내 코드는 다음을 보장하지 않음 파일입니다.내가 정말 원하는 때까지 기다릴 것입 ASHX 핸들러가 완료되면 모든것을 처리하는 요청을 합니다.어떻게 할까요?어떤 기다리 메커니즘에는 웹브?모든 콜백을 할 수 있에 HttpContext 에서 핸들러는?를 사용해야 하는 일부 다른 종류의 전송 기술인가?시기 바랍니다.

도움이 되었습니까?

해결책

HRM, 아마도 간단한 Solutioin은 URL에 GUID로 태그를 지정할 수 있습니다 (파일 당 고유 한 GUID 또는 환경에 의미가있는 모든 것을 전송할 수 있음). 그런 다음 GUID를 기반으로 다른 서비스의 상태를 확인할 수있는 또 다른 간단한 웹 서비스를 가질 수 있으며, 새로운 웹 서비스를 전달하여 ( 과거의 전송).

다른 팁

Silverlight에서도 같은 질문이 생겼습니다 포럼. Microsoft를 승인 한 답변은 WebClient 및 OpenWriteAsync로 그렇게 할 수 없다는 답변이었습니다. 사용자 업로드 스트링 스테이션 또는 httpwebrequest가 필요합니다.

나는 가정하에 우려하고 있는 데이터에서 반환되는 처리에 오랜 시간을 전송하고 서버에 활용되지 못해서 그 시간 동안.방법은 없을 말할 때 서버가 처리한다,그래서 나는 생각하지 않는 이렇게 할 수 있습을 변경하지 않고 귀하의 건물입니다.

나는 당신의 처리기 유일한 식별자는 어떤 종류의(처럼 GUID 또는 int)하는 데 사용할 수 있는 결과를 검색하의 처리기는 또 다른 요청을 합니다.그래서 페이지를 부를 것이다 handler 핸들러 저장한 결과를 반환한 식별자,페이지를 부를텐데 처리기 두 번째 호출 처리기는 또 다른 실행 결과에 대한 정보를 얻기 위해서 처음 호출합니다.이것을 유지하는 것은 서버에서 사용하는 동안 당신의 데이터 전송.

또는 JavaScript (jQuery)로 할 수 있습니다 ... JavaScript를 사용하지 않는다면.

파일이 크지 않고 각각의 메모리를 유지할 수있는 경우 추악하면서도 효과적인 솔루션이 문자열로 변환하여 업로드 스트링 스속 메소드를 사용하여 전송합니다.

파일 크기가 무한한 경우이 접근법을 피하십시오. 그러나 이제 상대적으로 작을 수 있다면이 접근법을 사용할 수 있습니다.

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