System.UnauthorizedAccessException in caricamento file

martedì 30 settembre 2008 - 15.21

muccio04 Profilo | Newbie

ciao a tutti,
utilizzando la libreria NeatUpload:

http://www.brettle.com/Default.aspx?pageid=32

per il caricamento di files su server, incappo nel seguente errore runtime :

System.UnauthorizedAccessException .

credo sia un errore di permesso sulle directory, qualcuno sa indicarmi come risolverlo?.
grazie a tutti.
Simone

rossimarko Profilo | Guru

Ciao,

puoi accedere al server e configurare i permessi delle cartelle oppure è un servizio di hosting a cui ti fanno accedere solo via ftp? Nel secondo caso di solito ti forniscono anche una cartella apposta per poter scrivere i file
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

muccio04 Profilo | Newbie

no è un problema in locale...c'e qalche parametro nel file web.config da settare? .
il problema è che se eseguo il salvataggio da comune file upload , funziona, se invece utilizzo il tool di neatUpload (per effettuare il caricamento con una barra di progresso) mi da errore.

rossimarko Profilo | Guru

Se usi il file system ntfs devi verificare le impostazioni di sicurezza nelle proprietà della cartella dove vai a salvare.
A questo link (sezione "Create the Data directory" ) trovi come fare nel caso di IIS 6: http://support.microsoft.com/?scid=kb%3Ben-us%3B323245&x=16&y=15
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

muccio04 Profilo | Newbie

ciao, ho deciso di provare ad implementarlo, magari se ci riesco potrebbe essere una cosa che serve ad altri.
ti posto il codice (non sono tante righe) che per adesso non sono riuscito a fare girare del tutto, nel senso che non so per quale motivo non vengono aggiornate le label che indicano i bites uploadati.
spero tu mi possa dare una mano.
qua sotto riporto il codice.

pensavo di sfruttare ajax e ogni tot secondi (tramite timer) chiedere al web server sia la dimesione del file, che i bytes caricati.


protected void Timer1_Tick(object sender, EventArgs e)
{
//metto la dimensione totale del file
//LabelDimensioneTotale.Text = "dimensione del file da caricare: ";
//LabelDimensioneTotale.Text += dimensioneFile.ToString();
//LabelDimensioneTotale.Text += " ";

//metto la di dimensione attualmente caricata
LabelDimensioneCaricata.Text = "byte attualmente caricati: ";


try
{
//tento di aprire il file
FileStream f = new FileStream(nomeFile, FileMode.Open);

//mi prendo la dimensione attuale del file caricato
LabelDimensioneCaricata.Text += f.Seek(0, SeekOrigin.End).ToString();
long dim = f.Seek(0, SeekOrigin.End);

f.Close();
}
catch(Exception ex)
{
LabelErrore.Text = ex.GetType().ToString();
}

}

protected void Button1_Click(object sender, EventArgs e)
{

dimensioneFile = FileUpload1.PostedFile.ContentLength;
LabelDimensioneTotale.Text = "dimensione del file da caricare: ";
LabelDimensioneTotale.Text += dimensioneFile.ToString();
LabelDimensioneTotale.Text += " ";

//setto l'intervallo del tick
Timer1.Interval = 6000;

nomeFile = "d:\\inetpub\\webs\\labottegadellamotoit\\public\\" + FileUpload1.PostedFile.FileName;
//setto la variabile di caricamento file a true
try
{
caricametoFile = true;
FileUpload1.PostedFile.SaveAs(nomeFile);
}
catch (Exception ex)
{
LabelErrore.Text = nomeFile;
LabelErrore.Text += " ";
LabelErrore.Text += ex.GetType();
}
}

p.s. grazie mille per il tempo che mi dedichi

rossimarko Profilo | Guru

Sei riuscito a risolvere il problema dei permessi?

Per l'aggiornamento delle label dipende se sono dentro ad un updatePanel o meno e se è stato registrato correttamente il trigger...
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

muccio04 Profilo | Newbie

il problema dei permessi è strano, perche se faccio il salvataggio da comune fileUpload, me lo salva, se invece chiamo il metodo

InputFile1.MoveTo(Server.MapPath("public"), MoveToOptions.None);

del controllo fornito da NeatUpload mi lancia l'eccezzione di prima.
da notare che il caricamento avviene nella stessa cartella, quindi non ci dovrebbe essere il problema di permessi

qua sotto riporto l'altra parte del codice contenente il form:

<form id="form1" runat="server">
<asp:ScriptManager ID="scriptManager" runat="server"/>
<asp:UpdatePanel ID="updPnl1" runat="server">
<ContentTemplate>
<asp:Label ID="LabelDimensioneTotale" runat="server" Text="Label"></asp:Label><br /><br />
<asp:Label ID="LabelDimensioneCaricata" runat="server" Text="Label"></asp:Label><br /><br />
<asp:Label ID="LabelErrore" runat="server" Text="Label"></asp:Label><br /><br />
<asp:Timer ID="Timer1" Interval="3000" runat="server" OnTick="Timer1_Tick"/>
</ContentTemplate>
</asp:UpdatePanel>

<asp:FileUpload ID="FileUpload1" runat="server" /><br /><br />
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />

</form>

rossimarko Profilo | Guru

Ho visto che la funzione lato server era riferita ad un timer. Per aggiornare l'updatepanel ad ogni tick del timer devi inserire un trigger come riportato nel punto 13 di questa guida: http://msdn.microsoft.com/it-it/library/bb386404.aspx
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5