413 messaggi dal 22 giugno 2007
Vorrei creare un contatore per un link che sacrica a sua volta un file.

<asp:Label ID="setDinPLabel" runat="server" Text="Label"></asp:Label>
<asp:LinkButton ID="setupDinPLinkButton" runat="server" OnClick="downloadLinkButton_Click"
CommandArgument="1" CommandName="~/file/..">Setup Completo</asp:LinkButton>


protected void downloadLinkButton_Click(object sender, EventArgs e)
{
 LinkButton link = sender as LinkButton;
 Int32 idDownload = Convert.ToInt32(link.CommandArgument);
 
 COD.Download_DataSetTableAdapters.DownloadTableAdapter ta = new Dinamico.COD.Download_DataSetTableAdapters.DownloadTableAdapter();
  ta.Update_download(idDownload);
  ta.Dispose();
                
  string url = link.CommandName;
  string path = Server.MapPath(url);
  string nomeFile = Path.GetFileName(path);
  Response.Clear();
  Response.ContentType = "application/exe";
  Response.AddHeader("Content-Disposition", "attachment; filename=" + nomeFile);
  Response.WriteFile(path, false);
  Response.End();


I problemi sono 2
1. al Response.End(); mi da questo errore: Thread interrotto
2. vorrei aggiornare la Label dopo il click ma ho usato il UpdatePanel ma non funziona.

Qualcuno sa aiutarmi oppure consigliarmi uno script corretto?
Grazie mille
2.198 messaggi dal 30 novembre 2001
Ma il contatore si trova nella stessa pagina del link del file da scaricare?
413 messaggi dal 22 giugno 2007
Si è la Label, che nel Load della Page vado a leggere il valore dal Database e lo imposto così:

setDinPLabel.Text = cont.ToString();

dove cont è il dato che vado a recuperare.
2.198 messaggi dal 30 novembre 2001
quello che vuoi fare tu lo devi fare in un'altra pagina che effettua il download del file, altrimenti ti darà sempre thread interrotto perchè non ha finito l'elaborazione della pagina.
Io ho utilizzato un handler per memorizzare tutti i file scaricati di un certo tipo, per esempio pdf o zip, tu puoi metterci il contatore, inoltre x il download da codice utilizza:

HttpContext.Response.TransmitFile(nomeFile);
413 messaggi dal 22 giugno 2007
Tipo una cosa del genere:
http://www.charith.gunasekara.web-sphere.co.uk/2010/08/how-to-update-aspnet-page-at-same-time.html

L'avevo provato ma mi sa che sbaglio qualcosa perchè non mi scarica il file.

Oppure potresti spiegarmi meglio quello che intendi "devi fare in un'altra pagina che effettua il download del file"

Grazie mille.
413 messaggi dal 22 giugno 2007
chiccosimo ha scritto:
inoltre x il download da codice utilizza:

HttpContext.Response.TransmitFile(nomeFile);


Usando questo mi da il seguente errore:
Occorre un riferimento a un oggetto per la proprietà, il metodo o il campo non statico 'System.Web.HttpContext.Response.get

In cosa sbaglio?
2.198 messaggi dal 30 novembre 2001
Scusa avevo omesso il Current, perchè il codice l'avevo preso dall'handler, quindi:
HttpContex.Current.Response.TransmitFile(nomeFile);

Per pagina che effettua il download, devi creare una nuova pagina in cui ci mette il codice che hai scritto nell'evento del linkButton, in cui il nome del file da scaricare lo passi in querystring, quindi dalla pagina chiamante devi aprire una nuova finestra del browser.
L'handler dell'esempio l'hai inserito nella cartella App_Code?
413 messaggi dal 22 giugno 2007
No nella stessa cartella della pagina, in questo modo:

string fileName = "Contratto_Licenza_Dinamico_Educational.pdf";
string script = string.Format("window.location.href='{0}DownloadHandler.ashx?fileName={1}'", this.RootUrl, fileName);
this.ClientScript.RegisterStartupScript(this.GetType(), this.GetType().Name, script, true);


ma non passa proprio sull'handler non capisco proprio perche..

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.