2013-04-09 24 views
5

Napisałem kod w C# i wydrukować wyniki do terminalu, aby potwierdzić, że działa. Obecnie jestem w trakcie przesyłania części kodu do kontrolera MVC 4 i byłem w stanie sukcesywnie łączyć większość z nich, ale mam problemy z jedną częścią.C# ASP.NET MVC do FileStream Crossover

Chciałbym odczytać plik bazy danych (database.dat), a później na Pragnę napisać do tego samego pliku.

W moim kontroler mam:

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

i

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

w obu przypadkach 'Plik' w File.OpenRead i File.Open jest podkreślony i otrzymuję błąd:

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

Czy istnieje sposób można osiągnąć ten sam rezultat w MVC?

Odpowiedz

9

Musisz dodać w pełni kwalifikowaną nazwę, jeśli chcesz używać klasy File w System.IO (http://msdn.microsoft.com/en-us/library/system.io.file.aspx). Więc coś jak to powinno działać:

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

@BASmith wyjaśnienie: Jest to metoda pliku w kontrolerze MVC Dlatego się błąd dotyczący System.Web.Mvc.Controller.File, więc trzeba zapewnić pełna nazwa System.IO.File, aby uzyskać zwykłą klasę statyczną File. –

+0

Dzięki za wskazanie tego, całkiem banalną rzecz, którą prawdopodobnie powinienem był zobaczyć, ale czasami po prostu odpowiedzi są trudne do zobaczenia. Niestety ustalające ten problem ujawnił kolejny jednak, że nie lubi „deserializowania (strumień)” i mówi mi „SerializationException był nieobsługiwany przez kod użytkownika” – benallansmith

+1

Nevermind z tym poprzednim komentarzu, że to ze względu na fakt, że byłem próbując wymusić dostarczenie jej pliku database.dat z poprzedniej wersji, a wersje się nie zgadzały. Rekompilacja w celu utworzenia własnego pliku database.dat powinna to naprawić. – benallansmith