우리는 "이전"웹 응용 프로그램 (원래 CodeCentral은 10 년 전에 작성되었으며, 현재 1237 만 개가 넘는 http://cc.embarcadero.com에서 실행 중입니다)은 다운로드를 제공하기 위해 파일 기반 캐시를 사용합니다. 웹 응용 프로그램은이 파일 캐시를 관리합니다.IIS 및 ASP.NET에서 공유 파일을 업데이트하려면 어떻게합니까?
파일 기반 다운로드를 사용하는 유일한 방법은 다른 버전에서 사용중인 파일을 업데이트하는 것입니다. 이전에 CodeCentral의 원본 Delphi CGI 버전을 작성했을 때 누군가가 파일을 다운로드하고 올바른 이름으로 새 파일을 작성한 다음 최종적으로 파일을 정리하더라도 기존 파일의 이름을 바꿀 수 있다는 사실을 모호하게 기억합니다.
그러나 현재의 IIS 6 및 ASP.NET 2.x 또는 3.x 코드에서는 작동하지 않기 때문에 망상 일 수 있습니다. 그래서, 우리가 대신 수행 한 것은 매우 미봉책 인이하지만 결국 작동합니다
public static void FileCreate(Stream AStream, string AFileName, int AWaitInterval)
{
DateTime until = DateTime.Now.AddSeconds(AWaitInterval);
bool written = false;
while (!written && (until > DateTime.Now))
{
try
{
using (FileStream fs = new FileStream(AFileName, FileMode.Create))
{
CopyStream(AStream, fs);
written = true;
}
}
catch (IOException)
{
Thread.Sleep(500);
}
}
}
나는 우리가 간단하게 뭔가를 놓치고 생각하고, 현재있는 파일을 대체하는 더 나은 방법이있을거야 IIS와 ASP.NET을 통해 다운로드됩니다. 거기 있니?
Greg에게 문의 해 주셔서 감사합니다. 이들은 500MB 이상의 대용량 파일입니다. 또한 임시 파일이 아니라 때로는 업데이트해야하는 파일입니다. 대부분의 파일은 변경되지 않지만 변경 될 때마다 새 버전으로 대체 할 수 있어야합니다. 귀하의 질문에 다시 생각해보십시오. 아마 우리는 파일에 버전 스탬프를 삽입하고 그런 식으로 해결할 수 있습니다. –