35 messaggi dal 06 ottobre 2007
Salve a tutti,

ho un altro problema che mi tormenta.
Sono due semplici funzioni C# che scrivono e leggono su file .txt.
In locale mi funziona bene, con qualunque percorso del file metto.
Il problema nasce quando lo pubblico.
Mi ritorna un errore. Sicuramente sarà dovuto al percorso del file.

Ecco il codice:

void Scrivi()
{
FileStream file = new FileStream("http://oracolo.ch/sessioni/infoSessioni.txt", FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter sw = new StreamWriter(file);
sw.WriteLine("Nome: " + LNome.Text + " " + "Email: " + LEmail.Text);
sw.Close();
file.Close();
}

void Leggi()
{
FileStream file = new FileStream("http://oracolo.ch/sessioni/infoSessioni.txt", FileMode.OpenOrCreate, FileAccess.Read);
StreamReader sr = new StreamReader(file);
string s = sr.ReadToEnd();
sr.Close();
file.Close();
LabelFile.Text = s;
}
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
L'http è un protocollo che non puoi usare come se fosse un filesystem.
Devi scrivere il percorso corretto che farà riferimento ai dischi del server. Se vuoi prendere altri file su un server usa il webrequest.
Ciao
.
35 messaggi dal 06 ottobre 2007
Grazie per la risposta.

Ho provato ha mettere tutti i percorsi possibili... hai qcl idea?

Cmq il percorso relativo dovrebbe funzionare sempre, ho mi sbaglio?

Nel senso un tag img per le immagini non ha bisogno del percorso assoluto, gli basta quello relativo...

Insomma...
io conosco il nome della cartella del mio sito che è wwwroot e sbatto tutto dentro come percorso relativo.

Il percorso assoluto non lo conosco e non devo conoscerlo...
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
Aspetta, stai facendo un po' di confusione

Tutto ciò che richiami via web (pagine, immagine, ecc...) le richiami grazie ad un percorso virtuale con il protocollo http... dietro a
http://www.miosito.xx/pagina.aspx c'è file reale inserito su un server in un percorso fisico assoluto reale, per esempio:
c:\inetpub\wwwroo\sito\pagina.aspx.

Il percorso per la visualizzazione delle immagini, essendo sul client, dev'essere relativo al sito in questione, ma l'accesso da codice .net (che ricordo è elaborato sul server) deve avvenire per percorso assoluto anche se ci sono ovviamente facilitazioni per non trattare direttamente quello.
Se tu vuoi leggere un file di testo dal tuo codice da C#, devi utilizzare i percorsi assoluti. Per esempio, per sapere qual è la root del tuo sito, puoi scrivere:

Request.MapPath("~")

Vuoi accedere al file di testo inserito nella directory "appunti" da C#?
string
contenuto=System.IO.File.ReadAll(Request.MapPath("~/appunti/file.txt"));
Ciao
35 messaggi dal 06 ottobre 2007
Ho provato come dici tu ma mi torna un errore...

Compiler Error Message: CS0117: 'System.IO.File' does not contain a definition for 'ReadAll'

A quanto pare ReadAll non lo conosce la classe System.IO.File....

Con PHP sono riuscito usando solo il nome del file (che si trovava direttamente in wwwroot) con ASP sempre problemi.... uffa...

Questo pezzo di codice di PHP funziona benissimo e ho usato solo il nome del file come percorso.

if (!$p_file = fopen("messaggi.txt", "a+"))
{
echo "ERRORE!!";
}
$TEMP_NOME = $_REQUEST['nome']; $TEMP_TESTO = $_REQUEST['testo'];
fputs($p_file, "Messaggio: \n"); fputs($p_file, "\n"); fputs($p_file, "Nome: $TEMP_NOME\n"); fputs($p_file, "Messaggio: $TEMP_TESTO\n"); fclose($p_file);

Se funziona con php non vedo perchè non dovrebbe funzionare con asp il percorso relativo...


Modificato da selecthelp il 05 aprile 2008 18.13 -
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
selecthelp wrote:
Ho provato come dici tu ma mi torna un errore...

Compiler Error Message: CS0117: 'System.IO.File' does not contain a definition for 'ReadAll'

A quanto pare ReadAll non lo conosce la classe System.IO.File....

Mio refuso... il metodo era ReadlAllString. Se provavi con VS, per esempio, o con il Reflector a guardare i metodi presenti nella classe File, avresti trovato senza problemi il problema.

Con una riga hai tutto il contenuto del file:
contenuto=System.IO.File.ReadAllFile(Request.MapPath("~/appunti/file.txt"));
Ciao
35 messaggi dal 06 ottobre 2007
Grazie mille di tutto.

Proverò... subito.
35 messaggi dal 06 ottobre 2007
Mi ritorna qcl errore di compilazione... Appena riesco a sistemarlo metterò qui per gli altri la soluzione...

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.