title: not a valid virtual path - when trying to return a file from a url
body: <p>We download a file from our CdN and then return a url to that downloaded file to the user.  I'm trying to get this implemented so that when a user clicks the download buttton, it goes and test that url to that downloaded file then forces a save prompt based on that local url.</p>
  
  <p>So for example if there is a button called download on the page for a specific .pdf, we ultimately have code in our controller going to the cdn and downloading the file, zipping it then returning a url such as:  <a href="http://www.ourLocalAssetServer.com/assets/20120331002728.zip" rel="nofollow">http://www.ourLocalAssetServer.com/assets/20120331002728.zip</a></p>
  
  <p>I'm not sure if you you can use the File() method to return the resource to the user as to cause a save prompt when you have a url to the file, not a system directory virtual path.</p>
  
  <p>So how can I get this working with the url?  I need the download button to ultimately force a save prompt on their end given a url such as what is generated per this example above?  Not I am using POST, not a GET, so not sure which I should use in this case either besides this not working overall to force a save prompt.  It is hitting my GetFileDownloadUrl but ultimately errors saying it's not a virtual path.</p>
  
  <p>Here's my code:</p>
  
  <pre><code>@foreach (CarFileContent fileContent in ModelCarFiles)
  {
      using (Html.BeginForm("GetFileDownloadUrl", "Car", FormMethod.Get, new { carId = Model.CarId, userId = Model.UserId, @fileCdnUrl = fileContent.CdnUrl }))
      {
          @Html.Hidden("userId", Model.UserId);
          @Html.Hidden("carId", Model.CarId);
          @Html.Hidden("fileCdnUrl", fileContent.CdnUrl);        
          &lt;p&gt;&lt;input type="submit" name="SubmitCommand" value="download" /&gt; @fileContent.Name&lt;/p&gt;
      }
  }
  
      public ActionResult GetFileDownloadUrl(string fileCdnUrl, int carId, int userId)
      {
          string downloadUrl = string.Empty;
  
          // take the passed Cdn Url and go and download that file to one of our other servers so the user can download that .zip file
          downloadUrl = GetFileZipDownloadUrl(carId, userId, fileCdnUrl;
  
          // now we have that url to the downloaded zip file e.g. http://www.ourLocalAssetServer.com/assets/20120331002728.zip
          int i = downloadUrl.LastIndexOf("/");
  
          string fileName = downloadUrl.Substring(i);
  
          return File(downloadUrl, "application/zip", fileName);
      }
  </code></pre>
  
  <p>error: not a valid virtual path</p>