2013-04-09 25 views
5

Tôi đã viết mã bằng C# và kết quả in tới thiết bị đầu cuối để xác nhận nó đang hoạt động. Tôi hiện đang trong quá trình chuyển một số mã trên cho một bộ điều khiển MVC 4 và tôi đã có thể liên tục hợp nhất hầu hết nó nhưng tôi đang gặp vấn đề với một phần.C# tới ASP.NET MVC FileStream Crossover

Tôi muốn đọc tệp cơ sở dữ liệu (database.dat) và sau đó tôi muốn ghi vào cùng một tệp.

Trong điều khiển của tôi, tôi có:

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

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

Trong cả hai trường hợp 'File' trong File.OpenRead và File.Open được nhấn mạnh và tôi nhận được lỗi:

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

Có cách nào tôi có thể đạt được kết quả tương tự trong MVC không?

Trả lời

9

Bạn sẽ phải thêm tên đủ điều kiện nếu bạn muốn sử dụng lớp File trong System.IO (http://msdn.microsoft.com/en-us/library/system.io.file.aspx). Vì vậy, một cái gì đó như thế này sẽ làm việc:

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

@BASmith để làm rõ: Có một phương pháp tệp trong bộ điều khiển MVC đó là lý do bạn gặp lỗi liên quan đến System.Web.Mvc.Controller.File, vì vậy bạn cần cung cấp tên đầy đủ của System.IO.File để có được lớp tĩnh File thông thường. –

+0

Cảm ơn bạn đã chỉ ra điều đó, một điều nhỏ nhặt mà tôi có lẽ đã thấy nhưng đôi khi chỉ đơn giản là câu trả lời có thể khó nhìn thấy. Thật không may khi khắc phục sự cố đó đã tiết lộ một vấn đề khác, nó không giống như "Deserialize (stream)" và đang nói với tôi "SerializationException bị unhandled bởi mã người dùng" – benallansmith

+1

Nevermind với nhận xét trước đó, đó là do thực tế là tôi cố gắng cấp dữ liệu cho nó cơ sở dữ liệu của tôi từ một phiên bản trước và các phiên bản không khớp. Biên dịch lại nó để làm cho database.dat của chính nó phải sửa lỗi này. – benallansmith