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에 의해 제안 된 패치를 시도해야하지 않았지만 문제를 해결하는 대신 올바른 방식으로 문제를 해결하는 것처럼 보입니다.