내 사이트에서 GEDCOM 내보내기를 구현해야합니다.Response.TransmitFile을 전송 후 삭제하십시오.
gedcom으로 내 보내면 내 .net 코드가 서버에서 하나의 파일을 생성했습니다.
그런 다음 서버에서 클라이언트로 다운로드해야하며 사용자는 해당 파일을 저장할 위치를 물어야합니다. 즉, savedialog가 필요합니다.
다운로드가 끝나면 서버에서 파일을 삭제하고 싶습니다.
내가 서버에서 클라이언트로 파일을 전송하는 하나 개의 코드있어이 LINK
에서
Response.ContentType = "text/xml";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + FileName);
Response.TransmitFile(Server.MapPath("~/" + FileName));
Response.End();
을하지만 Response.End
로이 코드 후 파일을 삭제할 수 없습니다입니다 코드 작성 무엇 때문에 응답을 종료 그 라인은 실행되지 않습니다.
Response.End();
전에 파일을 삭제하는 코드를 작성하면 파일이 전송되지 않고 오류가 발생합니다.
Response.Flush가 수행하는 작업과 Response.End의 작업은 무엇입니까 ?? 차이점을 알려주시겠습니까? – Radhi
Response.Flush는 버퍼링 된 출력을 강제 종료하지만 ThreadAbortException을 발생시키지 않습니다. 응답은 아직 진행 중입니다. Response.End flushes가 종료 할 수없는 ThreadAbortException를 Throw합니다. finally 블록에 삭제 코드를 넣으면 결과에 관계없이 실행됩니다. – Josh
사용자가 파일 다운로드 대화 상자에서 취소를 클릭하는 상황을 처리하지 않습니다. HttpException이 발생하면 "원격 호스트가 연결을 닫았습니다. 오류 코드는 0x800703E3입니다."라는 메시지와 함께 HttpException이 발생합니다. finally 블록에서 IOException으로 삭제가 실패합니다 - "다른 프로세스에서 사용 중이므로 'C : \ Windows \ TEMP \ tmp5CA3.tmp'파일에 액세스 할 수 없습니다." catch (HttpException)를 추가하고 catch.And()를 호출하여 저를 위해 일했습니다. – Colin