2013-04-09 33 views
5

我已经在C#中编写代码并将结果打印到终端以确认它正在工作。我目前正在将一些代码转移到MVC 4控制器,并且我已经能够连续合并大部分代码,但是我遇到了一部分问题。C#到ASP.NET MVC FileStream交叉点

我希望读取数据库文件(database.dat),稍后我希望写入同一个文件。

在我的控制,我有:

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);

在这两种情况下File.OpenRead和File.Open '文件' 是下划线和我收到的错误:

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

是否有办法在MVC中实现相同的结果?

回答

9

如果要使用System.IOhttp://msdn.microsoft.com/en-us/library/system.io.file.aspx)中的File类,则必须添加完全限定名称。所以,这样的事情应该工作:

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

@BASmith澄清:有一个在MVC控制器,这就是为什么你会得到关于System.Web.Mvc.Controller.File一个错误文件的方法,所以你需要提供System.IO.File的全名以获得常规的File静态类。 – 2013-04-09 04:44:04

+0

感谢您指出这一点,我可能应该看到自己的一件小事,但有时只是简单的答案很难看清。 不幸的是,解决这个问题已经揭示了另一个虽然,它不喜欢“反序列化(流)”,并告诉我“SerializationException未被用户代码处理” – benallansmith 2013-04-09 05:04:49

+1

与前面的评论没有关系,这是由于我是试图强制喂它从我以前的版本database.dat,并且版本不匹配。重新编译它,使其自己的database.dat应该解决这个问题。 – benallansmith 2013-04-09 05:07:39