【问题标题】:C# to ASP.NET MVC FileStream Crossover [duplicate]C# 到 ASP.NET MVC FileStream 交叉[重复]
【发布时间】:2013-04-09 12:43:54
【问题描述】:

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

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

在我的控制器中,我有:

使用 (FileStream 流 = File.OpenRead("database.dat")) 数据库 = (List)formatter.Deserialize(stream);

使用 (Stream stream = File.Open("database.dat", FileMode.Create)) formatter.Serialize(流, 数据库);

在这两种情况下,File.OpenRead 和 File.Open 中的“文件”都带有下划线,我收到错误消息:

'System.Web.Mvc.Controller.File(byte[], string)' 是一个'方法',它 在给定的上下文中无效..."

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

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案1】:

    如果您想在System.IO (http://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);
    }
    

    【讨论】:

    • @BASmith 澄清一下:MVC 控制器中有一个 File 方法,这就是您收到有关 System.Web.Mvc.Controller.File 错误的原因,因此您需要提供 System.Web 的全名。 IO.File 获取常规 File 静态类。
    • 感谢您指出这一点,这是一件很琐碎的事情,我可能自己应该看到,但有时很难看到简单的答案。不幸的是,修复该问题揭示了另一个问题,它不喜欢“反序列化(流)”并告诉我“SerializationException 未被用户代码处理”
    • 不要介意之前的评论,这是因为我试图从以前的版本中强制将我的 database.dat 提供给它,并且版本不匹配。重新编译它以使其成为自己的 database.dat 应该可以解决此问题。
    猜你喜欢
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    • 2010-11-30
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多