. NET выдает исключение при попытке получить доступ / вернуть файл, который не существует. Это исключение перехватывается IIS (если ваше приложение не обрабатывает его), которое возвращает HTTP-ответ с кодом состояния 500
.
Решение состоит в том, чтобы проверить, существует ли файл, ie File.Exists("folder/filename")
И если он вернет false
, дайте ему знать о действии вашего контроллера, которое, как он получит, может вернуть ответ с 404
кодом состояния:
public ActionResult ControllerAction(string filename)
{
var theFile = TryFindFile(filename, out fileFound);
if (fileFound == false)
return new HttpNotFoundResult(); // this returns a HTTP response with 404 status code
return theFile;
}