2013-04-09 9 views
5

Ho scritto il codice in C# e ho stampato i risultati sul terminale per confermare che funzioni. Attualmente sto trasferendo parte del codice a un controller MVC 4 e sono riuscito a unire successivamente la maggior parte ma ho problemi con una parte.C# in ASP.NET MVC FileStream Crossover

Desidero leggere un file di database (database.dat) e successivamente desidero scrivere sullo stesso file.

Nel mio regolatore ho:

using (FileStream stream = File.OpenRead("database.dat")) database = (List)formatter.Deserialize(stream);

e

using (Stream stream = File.Open("database.dat", FileMode.Create)) formatter.Serialize(stream, database);

In entrambi i casi 'File' in File.OpenRead e File.Open è sottolineato e ricevo l'errore:

'System.Web.Mvc.Controller.File(byte[], string)' is a 'method', which is not valid in the given context ..."

È possibile ottenere lo stesso risultato in MVC?

risposta

9

È necessario aggiungere il nome completo se si desidera utilizzare la classe File in System.IO (http://msdn.microsoft.com/en-us/library/system.io.file.aspx). Quindi, qualcosa come questo dovrebbe funzionare:

using (FileStream stream = System.IO.File.OpenRead("database.dat")){ 
    database = (List)formatter.Deserialize(stream); 
} 
+1

@BASmith per chiarire: C'è un metodo file nel controller MVC è per questo che si ottiene un errore su System.Web.Mvc.Controller.File, quindi è necessario fornire la nome completo di System.IO.File per ottenere la normale classe File statica. –

+0

Grazie per avermelo fatto notare, una cosa piuttosto banale che probabilmente avrei dovuto vedere ma a volte semplicemente le risposte possono essere difficili da vedere. Purtroppo risolvere questo problema ha rivelato un altro però, non gli piace il "Deserialize (stream)" e mi sta dicendo "SerializationException non è stato gestito dal codice utente" – benallansmith

+1

Non importa con quel commento precedente, è dovuto al fatto che ero cercando di forzare il mio feed database.dat da una build precedente, e le versioni non corrispondono. Ricompilare per rendere il proprio database.dat dovrebbe risolvere questo problema. – benallansmith