2013-07-19 7 views
3

GET 요청을 처리 할 수있는 메소드가있는 ServiceStack 서비스가 있습니다. 이 메소드는 2 진 데이터를 리턴합니다.Mono + FastCGI에서 ServiceStack을 호스팅 할 때 이진 데이터가 손상됨

public object Get(DownloadFile request) { 
    return new HttpResult(new FileInfo("some file"), "application/octet-stream", asAttachment: true); 
} 

호스트가 윈도우 인 경우는 잘 작동하지만 모노 + FastCGI를 리눅스에서 실행하고있을 때 나는 다운로드 데이터가 동일하지 않습니다.

일부 파일에 대해 반환 된 바이트를 분석하여 패턴이 있다고 결론을 냈습니다. 데이터는 다음과 같이 래핑됩니다.

original data size + \r\n + original data + \r\n\r\n0\r\n\r\n 

왜 이런 일이 발생하며 어떻게 수정합니까?

편집 :

이는 HTTP 1.1의 일부 청크 분할 전송에 기인 밝혀졌습니다.

Knocte의 대답은 올바른 방향으로 절 지적 내가 HTTP 1.0을 사용하는 내 요청을 강제로 문제를 해결 할 수 있었다 :

var req = (HttpWebRequest)WebRequest.Create(url); 
req.ProtocolVersion = new Version("1.0"); 

내가 knocte에 의해 제안 된 패치를 시도해야하지 않았지만 문제를 해결하는 대신 올바른 방식으로 문제를 해결하는 것처럼 보입니다.

답변

2

나는 당신이 this bug에 의해 영향을 받고 있다고 생각합니다.

첨부 된 패치가 마음에 들면 깨끗하게 정리할 수 있으며 github 모노에 대한 풀 요청으로 제안 할 수 있습니다.