Il metodo SaveAs è configurato per richiedere un percorso radicato, e il percorso non è radicato

StackOverflow https://stackoverflow.com/questions/2831839

  •  26-09-2019
  •  | 
  •  

Domanda

OK ho visto un paio di persone con questo problema - ma sto già utilizzando un percorso di file, non è un percorso relativo. Il mio codice funziona bene sul mio PC, ma quando un altro sviluppatore va a caricare un'immagine ottengono questo errore. Ho pensato che fosse una cosa autorizzazioni di protezione per la cartella - ma l'account di sistema ha pieno accesso alla cartella (anche se mi confondo su come verificare quale account l'applicazione è in esecuzione in). Inoltre di solito in esecuzione a livello locale spesso non si dà troppi problemi di sicurezza :)

Codice Un frammento di codice:

        Guid fileIdentifier = Guid.NewGuid();
        CurrentUserInfo currentUser = CMSContext.CurrentUser;
        string identifier = currentUser.UserName.Replace(" ", "") + "_" + fileIdentifier.ToString();
        string fileName1 = System.IO.Path.GetFileName(fileUpload.PostedFile.FileName);
        string Name = System.IO.Path.GetFileNameWithoutExtension(fileName1);
        string renamedFile = fileName1.Replace(Name, identifier);
        string path = ConfigurationManager.AppSettings["MemberPhotoRepository"];

        String filenameToWriteTo = path + currentUser.UserName.Replace(" ", "") + fileName1;
        fileUpload.PostedFile.SaveAs(filenameToWriteTo);

Dove il mio valore impostazioni di configurazione è:

Ancora una volta questo funziona bene sul mio PC! (E ho controllato l'altra persona ha la cartella sul proprio PC).

Qualche suggerimento sarebbe apprezzato - grazie:)

È stato utile?

Soluzione 2

Non sono sicuro che il problema era come diventava sempre più palese. Non abbiamo avuto il tempo di debug come era su PC un non dello sviluppatore e ho avuto una soluzione per lui di continuare il suo lavoro, mentre ho studiato le possibili cause. Così forse è stato il modo in cui ha aggiornato / ran le autorizzazioni del sito o dei file fisse afferrando una copia della mia directory.

Almeno so che ha bisogno di percorsi di file fisici quindi speriamo non si troverà di fronte di nuovo!

Altri suggerimenti

Ovviamente quello che dice è che il vostro filenameToWriteTo non è un percorso radicato ... cioè è un percorso relativo, e la configurazione del server non lo fa così. Utilizzare Server.MapPath per ottenere i percorsi reali ... qualcosa come ...

string realPhysicalPath = Path.Combine(Server.MapPath(" "), filenameToWriteTo);
fileUpload.PostedFile.SaveAs(realPhysicalPath);

Nel caso in cui stampare la filenameToWriteTo per vedere se il suo percorso relativo o fisico. Se si tratta di uso relativo al metodo di cui sopra.

, assicurarsi che la cartella in cui si sta salvando il file esiste. Se la cartella non esiste, non verrà creato per voi e per il metodo SaveAs getterà eccezione si hanno ora.

Grazie.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top