2014-06-30 20 views
6

durante il caricamento del file dalla macchina locale al server, che mi sta mostrando laimmagine caricamento non funziona sul server di

"Server Error in '/' Application. 
Access to the path 'G://images\blog-image2.jpg' is denied." 

qualcuno può aiutarmi in questo .... Per favore. il mio codice C# è questo:

protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
    //Get Filename from fileupload control 
    string filename = Path.GetFileName(fileuploadimages.PostedFile.FileName); 
    //Save images into Images folder 
    fileuploadimages.SaveAs(Server.MapPath("~/images/" + filename)); 

    //Getting dbconnection from web.config connectionstring 
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["dbconnection"].ToString()); 
    //Open the database connection 
    con.Open(); 
    //Query to insert images path and name into database 
    SqlCommand cmd = new SqlCommand("Insert into tblimgs(ImageName,ImagePath) values(@ImageName,@ImagePath)", con); 
    //Passing parameters to query 
    cmd.Parameters.AddWithValue("@ImageName", filename); 
    cmd.Parameters.AddWithValue("@ImagePath", "~/images/" + filename); 
    cmd.ExecuteNonQuery(); 
    //Close dbconnection 
    con.Close(); 
    Response.Redirect("default.aspx"); 
} 

cosa c'è di sbagliato in questo?

+0

Penso che sia necessario consentire le autorizzazioni di scrittura sul server in questa directory: G: \ images \ dall'utente IUSER o qualcosa del genere. –

+0

Prova questo 'Server.MapPath (" ~ \\ images \\ "+ filename)' – meda

+0

Ho provato anche questo, ma nulla è cambiato .... – Neil

risposta

1

Assicurati che l'account che stai utilizzando abbia accesso a quel percorso di file.

Inoltre, sarebbe probabilmente utile fornire accesso a tale cartella per l'account utente IIS (IUSR credo).

+0

come posso dare l'accesso a quel percorso? – Neil

+0

Vai a G: \ immagini in Windows Explorer e fai clic con il pulsante destro del mouse sulla cartella e vai su Proprietà -> vai alla scheda Sicurezza -> fai clic su Modifica -> fai clic su Aggiungi -> digita IUSR nella casella dei nomi -> fai clic su verifica nomi -> seleziona il il primo se si ottiene un popup passato. -> Fare clic su OK -> Fare clic sulla voce IUSR nella casella di riepilogo -> selezionare Controllo completo dove si dice Autorizzazioni per IUSR -> Fare clic su Applica -> Fare clic su OK. Successivamente l'utente di IIS dovrebbe avere accesso alla directory. – asven

1

È necessario verificare in quale utente viene eseguita l'applicazione, è possibile che l'account utente non disponga delle autorizzazioni per scrivere in qualsiasi sottocartella per motivi di sicurezza. Consenti a quell'utente di scrivere le autorizzazioni per la cartella delle immagini e assicurarsi che sia l'unica cartella a cui gli si assegnano le autorizzazioni di scrittura in modo che il rischio per la sicurezza sia ridotto al minimo.

Si potrebbe anche refactoring del codice a:

fileuploadimages.SaveAs(Path.Combine(Server.MapPath("~/images"),filename))); 

dal MapPath() non aggiunge una barra rovesciata finale al percorso tracciato perché non ha modo di sapere se il percorso è una directory o un file (si non controlla se il percorso specificato esiste effettivamente).

EDIT: Per concedere le autorizzazioni corrette per quella cartella, in primo luogo è necessario trovare fuori dal pool di applicazioni per il sito web che cosa è l'identità è in esecuzione sotto (per impostazione predefinita è Identità pool di applicazioni). Cerca l'utente IIS APPPOOL\DefaultAppPool. Vedi questo article sul sito ufficiale di IIS per maggiori dettagli.

Se ciò non funziona, verificare se il proprio account asp.net {MACHINE}\ASPNET ha accesso in scrittura a tale posizione di immagini. Considera la possibilità di concedere i diritti di accesso alla risorsa all'identità della richiesta ASP.NET. Per fare ciò, fare clic destro sul download della cartella Properties > Security Tab > Edit > Add > locations > choose your local machine > click OK > Digitare ASPNET sotto "Enter the object name to select" > Fare clic su Check Names Selezionare le caselle per l'accesso desiderato (Controllo completo). Se ciò non funziona, prova a fare lo stesso con Network Service.

Ora questo dovrebbe mostrare l'account locale {MACHINENAME}\ASPNET, quindi si imposta il permesso di scrittura su questo account.

In caso contrario, se l'applicazione sta impersonando tramite <identity impersonate="true"/>, l'identità sarà l'utente anonimo (in genere IUSR_MACHINENAME) o l'utente della richiesta autenticata.

+0

Mi sta ancora mostrando lo stesso errore ... come posso dare i permessi alla cartella? stavo provando da ftp ..è giusto? è perfettamente funzionante quando lo eseguo dalla mia macchina locale. carica tutte le immagini nella cartella delle immagini sullo stesso server .... perché non funziona quando lo sto caricando sul server ..? – Neil

Problemi correlati