Download einer Datei eines beliebigen Typs in Asp.Net MVC mithilfe von FileResult?

Mir wurde vorgeschlagen, FileResult zu verwenden, um Benutzern das Herunterladen von Dateien aus meiner Asp.Net MVC-Anwendung zu ermöglichen. Aber die einzigen Beispiele dafür, die ich finden kann, haben immer mit Bilddateien zu tun (Angabe des Inhaltstyps image / jpeg).

Aber was ist, wenn ich den Dateityp nicht kenne? Ich möchte, dass Benutzer so ziemlich jede Datei aus dem Dateibereich meiner Website herunterladen können.

Ich hatte eine Methode dafür gelesen (siehe einvorherigen Pos für den Code), das funktioniert tatsächlich einwandfrei, mit einer Ausnahme: Der Name der Datei, die im Dialogfeld Speichern unter angezeigt wird, wird aus dem Dateipfad mit Unterstrichen (folder_folder_file.ext) verknüpft. Außerdem scheinen die Leute zu denken, ich sollte ein FileResult zurückgeben, anstatt diese benutzerdefinierte Klasse zu verwenden, die ich für BinaryContentResult gefunden habe.

Kennt jemand die "richtige" Methode, um einen solchen Download in MVC durchzuführen?

EDIT: Ich habe die Antwort (unten) erhalten, dachte aber nur, ich sollte den vollständigen Arbeitscode posten, wenn jemand anderes daran interessiert ist:

public ActionResult Download(string filePath, string fileName)
{
    string fullName = Path.Combine(GetBaseDir(), filePath, fileName);

    byte[] fileBytes = GetFile(fullName);
    return File(
        fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}

byte[] GetFile(string s)
{
    System.IO.FileStream fs = System.IO.File.OpenRead(s);
    byte[] data = new byte[fs.Length];
    int br = fs.Read(data, 0, data.Length);
    if (br != fs.Length)
        throw new System.IO.IOException(s);
    return data;
}

Antworten auf die Frage(14)

Ihre Antwort auf die Frage