이미지를 반환하는 간단한 컨트롤러가 있습니다.FileStreamResult와 FilePathResult의 차이점은 무엇입니까?
public class ImageController : Controller
{
[AcceptVerbs(HttpVerbs.Get)]
[OutputCache(CacheProfile = "StationeryImageCache")]
public FileResult Show(int customerId, string imageName)
{
try
{
var path = string.Concat(Config.ImageDir, customerId, @"\", imageName);
return new FileStreamResult(new FileStream(path, FileMode.Open), "image/jpeg");
}
catch(System.IO.FileNotFoundException ex)
{
throw new MissingImageException(imageName);
}
}
}
내 관리자가 코드 검토 중에 FileStreamResult를 발견하고이를 다음과 같이 바꾸어야한다고 언급했습니다.
return new FilePathResult(path, "image/jpeg");
. 그러나 며칠 후 우리의 다른 개발자 중 한 명이 내가 되찾고있는 이미지 중 일부가 다시 손상되었다고보고했습니다. 특히, 어떤 시점에서 차단 된 많은 이미지가있었습니다. 이미지의 크기는 정확했지만 바닥의 25 % - 이미지의 40 %가 사라졌습니다.
파일 시스템에서 원본 이미지를 볼 때 아무 문제가 없었습니다. 나는 브라우저에서 이미지를 그렸고 잘 보였다. 하지만 내 컨트롤러는 이미지의 일부만 반환했습니다. 더 나쁜 것은 문제가되는 이미지들 중 약 30 %에 불과하다는 것입니다 ... 나는 일하는 사람들과 그렇지 않은 사람들 사이에 특별한 차이점을 찾을 수는 없지만.
이 디버깅을 시도하는 동안 작업의 결과가 FileStreamResult로 되 돌렸고 갑자기 모든 것이 다시 작동했습니다.
누구든지 이것에 대한 설명을 알고 있습니까?
니스 찾기! 나는 근원지를 파헤 치려하고 있었지만, 내가 가지고 있었다고해도 나는 이것을 알지 못했을 것이다. –