최근에 우리는 C# 4.0을 사용하여 개발 된 파일 다운로드 http 핸들러에 이상한 문제가 발생했습니다.Asp.net http 처리기 텍스트 파일 다운로드 문제. 잘 작동 codebehined에 대한
웹 응용 프로그램은 ASP.NET 4.0을 사용하여 개발되었으며 SSL을 통해 IIS 7.0에서 호스팅됩니다. 그것은 올바르게 작동했습니다. 하지만 최근 몇 가지 변경 사항으로 인해 config 또는 웹 사이트에서 아래 나열된 문제에 직면 해 있습니다.
텍스트 파일을 다운로드하면 정크 데이터가 방출됩니다. 핸들러 대신 aspx 페이지에서 코드를 사용하면 동일한 파일이 제대로 작동합니다. 둘 다 동일한 코드를 가지고 있습니다. 일부 파일은 정상적으로 작동합니다. 예를 들어 이미지 파일 또는 pdf 파일이 정상적으로 작동합니다. 그러나 텍스트 파일의 경우 동작이 매우 일치하지 않습니다. 빈 텍스트 파일이 제대로 작동합니다. 두 응답 (handler vs codebehind
)을 비교해 보았습니다. 반환 된 content-length가 같지 않은 것 같습니다.
context.Response.Clear();
context.Response.ClearHeaders();
context.Response.ClearContent();
context.Response.ContentType = !String.IsNullOrEmpty(mime) ? mime : "application/octet-stream";
context.Response.AppendHeader("Content-Disposition", String.Format("attachment; filename={0}", fileName));
//context.Response.AppendHeader("Content-Length", buffer.Length.ToString());
context.Response.OutputStream.Write(buffer, 0, buffer.Length);
context.Response.End();
CODE BEHIND
HTTP/1.1 200 OK 서버 : ASP.NET 개발 서버/10.0.0.0 날짜 : 목, 2011년 10월 6일 그리니치 표준시 02시 52분 26초의 X-ASPNET - 버전 : 4.0.30319 콘텐츠 - 처리 : 첨부 파일; 파일 이름 = 내 junk.txt 캐시 제어 : 개인 콘텐츠 유형 : 텍스트/일반 콘텐츠 길이 : 29 연결 :이 샘플 테스트 만
HttpHandler를위한
닫기
HTTP/1.1 200 OK 서버 : ASP.NET 개발 서버/10.0.0.0 날짜 : 2011 년 10 월 6 일 02:54:04 GMT X-AspNet- 버전 : 파일 이름 = 내 junk.txt 캐시 제어 : 개인 콘텐츠 형식 : 텍스트/일반 콘텐츠 길이 : 146 연결 : 닫기
I�%&/m�{J�J��t��
$ @ iG #) eVe] 흼 f f f f "" "" NL 6 나는