Like mentioned in Solution 1, you cannot force the client machine to download anything, and the browser won't let your application to do that either. However, instead of "application/pdf" you can set the content type to octet-stream to force the Save File dialog and it will ask the user to save the file.
@{
var file = Server.MapPath("~/documents/" + fileName);
Response.AppendHeader("content-disposition", "attachment; filename=" + fileName);
Response.ContentType = "application/octet-stream";
Response.TransmitFile(file);
}
In the above method, I simply tried to pass the file down the stream, you can pass your own file that you just generated perhaps. A good method would be to actually store the file somewhere, and then use that filename (Guid, maybe) and then stream that file down to the users.
Remember: even with this method, user is the king, he has the final decision.
HttpResponse.TransmitFile Method (String) (System.Web)[
^]