Apertura File

martedì 08 aprile 2008 - 09.18

toniovigi Profilo | Expert

Sperando come sempre in una risposta o consiglio,

Ho realizzato una piccola applicazione web che mi permette di scrivere su un file excel:

Quando il file dove vado a scrivere e in un disco locale , viene scritto tranquillamente,

se il file si trova su un disco di rete, quindi mettendo il path assoluto \\server\cartella... non riesco a scrivere per il seguente errore:

Impossibile trovare " \\server\cartella...." .Controllare l'ortografia del nome del file e verificare che la posizione del file sia corretta.
Se Si sta tentando di aprire il file dall'elenco dei file più recenti del menu File, assicurarsi che il file non sia stato rinominato,spostato o eliminato

Il file esiste , ho letto delle guide che parlano di lunghezza del path..ma ho controllato il path ma nn arriva a quella lunghezza,altre guide m parlando di controllare i caratteri jolly , ma caratteri jolly non cè ne sono
il path è "\\ennfsif5\dbstudi3\dbwseci\test"

consigli??risolvimenti?aiuti??

v ringrazio in anticipo

tony

Anonimo Profilo | Senior Member

Da quanto ne so se non ti mappi correttamente non hai i diritii di accesso, a tal fine ho creato una classe, copiala e modificala come più ti serve:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Ciao e buon lavoro.

Team Icon - Software Engineering
------------------------------
Unicredit Global Information Services Spa
Senior Developer

toniovigi Profilo | Expert



...nn e facile...mmm tutto sto casino?vie migliorI??Più che altro non capisco cosa modificare e cosa richiamare:D

cmq grazie!:D

tony

toniovigi Profilo | Expert

cmq il mio drive di rete dove scrivere era gia mappato

DOMANDA il problema puo essere che il disco e di tipo UNIX e nn WINDOWS?

Anonimo Profilo | Senior Member

...

1) Bisogna mettere la classe in qualche punto.
2) Devi istanziare l'oggetto e settarne la proprietà ShareName dove ti serve scrivendo ad esempio:
NetworkDrive myObj= new NetworkDrive(); myObj.ShareName="\\\\miopc\\miacartella"; myObj.MapDrive();
3) prima di uscire dalla tua funzione ricordati di scrivere:
myObj.UnMapDrive();

Se hai dubbi chiedi.

Team Icon - Software Engineering
------------------------------
Unicredit Global Information Services Spa
Senior Developer

Anonimo Profilo | Senior Member

Come fai a dire che era già mappato, come hai fatto?

Team Icon - Software Engineering
------------------------------
Unicredit Global Information Services Spa
Senior Developer

toniovigi Profilo | Expert

da windows..sulle risorse di rete e gia mappato:D:D..

mm adex provo la tua soluzione

Anonimo Profilo | Senior Member

... purtroppo non è la stessa cosa, devi farlo da codice come ho scritto sopra.

Ciao, fammi sapere.

Team Icon - Software Engineering
------------------------------
Unicredit Global Information Services Spa
Senior Developer

toniovigi Profilo | Expert

ciao mi da errore su questa parte della classe:


[DllImport("mpr.dll")]
private static extern int WNetAddConnection2A(ref structNetResource pstNetRes, string psPassword, string psUsername, int piFlags);
[DllImport("mpr.dll")]
private static extern int WNetCancelConnection2A(string psName, int piFlags, int pfForce);
[DllImport("mpr.dll")]
private static extern int WNetRestoreConnectionW(int phWnd, string psLocalDrive);
[DllImport("kernel32.dll")]
private static extern int GetDriveTypeA(string ndrive);

[StructLayout(LayoutKind.Sequential)]


in particolare dice che manca una direttiva using o riferimento ad un assembly ( mpr.dll , kernel32.dll e poi StructLayout)

Anonimo Profilo | Senior Member

Ovviamente devi aggiungere le dll di sistema al progetto. Sull'using controllo.
Team Icon - Software Engineering
------------------------------
Unicredit Global Information Services Spa
Senior Developer

toniovigi Profilo | Expert

ma sai..nei riferimenti io nn ho qst librerie..ammeno che non abbiano un nome diverso..k dici?

Anonimo Profilo | Senior Member

cerca in C:\WINDOWS\system32 se non le trovassi cerco di postartele.
L'using che ti serviva è

using System.Runtime.InteropServices;

toniovigi Profilo | Expert

il riferimento nn me lo fa importare mi da un errore e mi dice "nessuna libreria dei tipi nel componetne"FORSE devo fare il gacutil d ql libreria??

toniovigi Profilo | Expert

ALT ...adesso la compilazione e andata...mi da un errore..impossibile trovare il percorso di rete

toniovigi Profilo | Expert

m da errore nel percorso di rete:
me lo da qua:

stNetRes.sLocalName = ls_Drive;
//prepare params
int iFlags = 0;
if (lf_SaveCredentials) { iFlags += CONNECT_CMD_SAVECRED; }
if (lf_Persistent) { iFlags += CONNECT_UPDATE_PROFILE; }
if (ls_PromptForCredentials) { iFlags += CONNECT_INTERACTIVE + CONNECT_PROMPT; }
if (psUsername == "") { psUsername = null; }
if (psPassword == "") { psPassword = null; }
if (lf_Force) try { zUnMapDrive(true); }
catch { }
int i = WNetAddConnection2A(ref stNetRes, psPassword, psUsername, iFlags);
if (i > 0) { throw new System.ComponentModel.Win32Exception(i); }
}

in particolare l'ultima parentesi graffa diventa gialla

cmq il percorso io ho messo:

myobj.ShareName=@"\\ennfsif5\\dbstudi3\\DBWSECI\\test.xls";

o provato anke
mynet.ShareName="\\\\ennfsif5\\dbstudi3\\DBWSECI\\test.xls";

Anonimo Profilo | Senior Member

Togli il nome del file. Prova e dimmi come va.

Team Icon - Software Engineering
------------------------------
Unicredit Global Information Services Spa
Senior Developer

toniovigi Profilo | Expert

m continua a dare errore...dho!|!|!|
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