См. Этот пост о IActionResult
против ActionResult
: http://forums.asp.net/post/5980446.aspx
IActionResult
позволяет более широкий диапазон типов возврата, включая любой пользовательский код, который реализует интерфейс IActionResult
. ActionResult
ограничивается только теми классами, которые расширяют абстрактный класс ActionResult
(что можно также сделать с пользовательским кодом, но использование интерфейса допускает что-то вроде множественного наследования, тогда как расширение класса - нет).
AFAIK, по крайней мере, в Windows, это зависит от того, что пользователь делает с подсказкой, отображаемой браузером, когда он переходит по ссылке.
Если пользователь решает сохранить файл, он не будет доступен только для чтения. Если пользователь решит открыть его, файл будет сохранен во временном каталоге, и браузер может удалить его при закрытии. Я не уверен, как работает этот механизм, но предполагаю, что в каком-то месте задействована блокировка, которая делает файл доступным только для чтения.