2013-04-09 14 views
5

Çalıştığını onaylamak için C# 'da yazılı kod yazdım ve sonuçları yazdırmak için terminale yazdım. Şu anda kodun bir kısmını bir MVC 4 Kontrolörüne aktarma sürecindeyim ve bunların çoğunu başarılı bir şekilde birleştirebildim ancak bir kısımla ilgili sorunlarım var.C# ASP.NET MVC için FileStream Crossover

Bir veritabanı dosyasını (database.dat) okumak istiyorum ve daha sonra aynı dosyaya yazmak istiyorum. altı çizili File.OpenRead ve File.Open hem olgulardada 'Dosya' in

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

ve

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

ve ben hata alırsınız: Benim denetleyicisi olarak

Ben

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

Aynı sonucu MVC'de elde edebilmem mümkün mü? Eğer System.IO (http://msdn.microsoft.com/en-us/library/system.io.file.aspx) içinde File sınıfını kullanmak istiyorsanız

cevap

9

Sen tam nitelikli adı eklemek gerekecek. Yani böyle bir şey çalışması gerekir:

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

@BASmith netleştirmek için: Eğer System.Web.Mvc.Controller.File ilgili bir hata alıyorum yüzden MVC denetleyicisi bir dosya yöntemi yoktur, belirtmeniz gereken böylece düzenli Dosya statik sınıfını almak için System.IO.File tam adı. –

+0

Bunu işaret ettiğin için, muhtemelen kendimi görmem gereken, ama bazen basit cevapları görmesi çok zor bir şey. Ne yazık ki bu sorunu düzeltmek başka bir şeyi ortaya çıkardı, "Deserialize (stream)" i sevmiyor ve bana "SerializationException kullanıcı kodu tarafından işlenmemiş" olduğunu söylüyor. – benallansmith

+1

Bu önceki yorumla birlikte Nevermind, aslında bir önceki yapıdan benim database.dat beslemeye zorlamak ve sürümleri eşleşmedi. Bunu kendi veritabanı yapmak için yeniden derleyin. – benallansmith