2017-01-04 3 views
0

Ich erhalte diesen Fehler "Anfrage URL zu lang" als ich versuchte, die Datei herunterzuladen. Die URL zeigt die Daten an, die ich herunterladen möchte, lädt sie aber nicht herunter.Anfrage URL zu lang

Wie kann ich lösen Anforderungs-URL zu lang Fehler beim

meinen Code

Javascript Download

<script> 
        function DownloadIndexController(possID) { 
         $.ajax({ 
          url: '@Url.Action("DownloadIndex", "Poss")', 
          contentType: 'application/json; charset=utf-8', 
          datatype: 'json', 
          data: { possID: possID }, 
          type: "GET", 
          success: function (returnValue) { 

           window.location = '/DownloadIndex/Poss' + returnValue; 
          } 
         }) 
        } 
      </script> 

-Controller

[HttpGet] 
    public virtual ActionResult DownloadIndex(int possID) 
    { 
     try 
     { 
      possFilename = possFilename.Replace(",", ","); 
      string fullPath = Filelocation + possFilename; 
      return File(fullPath, System.Net.Mime.MediaTypeNames.Application.Octet, possFilename); 

     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 
+3

Welche bestimmte Codezeile in Ihrer Frage erzeugt diese Ausnahme? –

+0

Ich habe Debug und es gibt keinen Fehler. nur dieser Fehler zeigt im Browser und auf der Konsole –

+0

Hang on, geben Sie eine Datei als eine 'GET' Operation zurück, und dann wird die Datei an die URL angehängt? Produzieren Sie tatsächlich eine URL, die aussieht wie '/ DownloadIndex/Poss '? –

Antwort

2

Sie können Ajax nicht verwenden, um eine Datei auf diese Weise herunterzuladen. Was Sie tun müssen, ist ein normalen Download-Link für jedes Element in Ihrem Raster zu erzeugen, wie:

@Html.ActionLink("Download", "DownloadIndex", "Home", new { possID = "123" }, null) 

Wo Home der Name des Controllers ist, und Sie haben dynamisch die possID für jedes Element hinzuzufügen, statt der hartcodierten 123 in meinem Beispiel.

+0

getestet Danke das funktioniert. Ich habe alle Ajax-Anrufe entfernt und es funktioniert. Danke Kumpel –

1

In Ihrem Code, laden Sie die Datei Ajax verwenden und dann zu einer URL umleiten, nachdem die vollständige Datei enthält nur '/DownloadIndex/Poss'

Sie wollen wahrscheinlich nur auf die Datei umleiten, ohne überhaupt mit Ajax:

<script> 
    function DownloadIndexController(possID) { 
     window.location = '/DownloadIndex/Poss?possID=' + possID; 
    } 
</script> 
+0

Ich bekomme immer noch den gleichen Fehler. Ich habe auf IE, Edge und Crome –