【问题标题】:Unable to use File.WriteAllBytes() in asp.net MVC, cannot choose method from method group did you intend to invoke the method? [duplicate]无法在 asp.net MVC 中使用 File.WriteAllBytes(),无法从方法组中选择方法您打算调用该方法吗? [复制]
【发布时间】:2015-11-11 07:41:06
【问题描述】:

我正在尝试将我在数据库中的文件副本创建为字节数组,我正在寻找最简单的方法来做到这一点,而在 SO 和其他任何地方,答案似乎是:

File.WriteAllBytes(string newfilepath, byte[] theFile);

但是,我几乎无法使用 File 类中的任何东西,并且只要我输入 File. intellisense 在它下面画一条红线并说:

cannot choose method from method group did you intend to invoke the method?

我意识到这是一个非常笼统的问题,解决方案很可能是一个非常简单的问题,但我一生都无法弄清楚。有什么想法吗?

这是我尝试创建文件的代码:

    var labProcessOrderLetter = from obj1 in context.LabArticles
                                join obj2 in context.ProcessLabs
                                on obj1.ProcessForLabID equals obj2.ID
                                where obj1.ID == _articleId
                                select obj2.LetterAttachment;

    byte[] thePDFLetter = (byte[]) labProcessOrderLetter.FirstOrDefault();

    var uploadPath = Server.MapPath("~/_TEMP/PDF");
    var tempfilename = Guid.NewGuid().ToString();
    var tempfilenameandlocation = Path.Combine(uploadPath, Path.GetFileName(tempfilename));

    File.WriteAllBytes( tempfilenameandlocation, thePDFLetter);

编辑:显然我已经导入了 System.IO 命名空间,并且在我的项目中没有一个方法或类名为 File,甚至以 File 开头。

【问题讨论】:

  • 请显示示例代码,并检查您是否有 using System.IO; 的 using 指令
  • @JonSkeet 我更新了我的问题。
  • 在您尝试添加的类中是否有名为 File 的属性或方法?如果您键入 File 并将鼠标悬停在它上面,它会在工具提示中显示什么信息?
  • @Maarten,我的整个应用程序中没有名为 File 的属性或方法。当我输入文件时,它会变成蓝色,但是当我将鼠标悬停在它上面时,工具提示会显示我发布的错误。我已经在我的导入中调用了 System.IO 命名空间,但是我仍然收到该错误,使用 Damien 建议的完全限定名称似乎可以解决它,真的很奇怪。

标签: c# asp.net-mvc file


【解决方案1】:

听起来你有一个名为File方法 对你来说是可见的(比如说在同一个类中)。这将优先选择System.IO.File。所以你需要完全限定名称:

System.IO.File.WriteAllBytes(tempfilenameandlocation, thePDFLetter);

(事实上,问题中的线索已经足够多了。Controller.File 在范围内)

【讨论】:

  • 虽然,在我的整个项目中,我没有任何名为 File 甚至以 File 开头的方法。
  • 如果你输入File(而不是File.,你会得到任何智能感知吗?
  • 不,当我输入 File( 时,我没有收到该错误,实际上在同一个控制器中我有返回 File() 的操作。
  • @MohammadSepahvand - 我问你是否得到智能感知,而不是错误 - 事实上,你应该,因为它是 this 方法。
  • @Shimmy - 您可以通过 using directive 引入别名,例如using IOFile = System.IO.File;.
【解决方案2】:

控制器已经定义了一个文件,用于以一种很好的方式输出文件。只需使用 System.IO.File 完全限定它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 2013-10-23
    相关资源
    最近更新 更多