C# 类型为'的首次机会例外;System.ArgumentException';发生在mscorlib.dll中

C# 类型为'的首次机会例外;System.ArgumentException';发生在mscorlib.dll中,c#,C#,我正在尝试为文件创建校验和。在调试文件内容时,文件内容显示为红色,但在“filestream”行中出现了“mscorlib.dll中发生了类型为“System.ArgumentException”的第一次意外异常”错误 您只需更正对GetChecksum函数的调用 现在,您正在将checksum.txt的完整内容作为字符串传递给GetChecksum的m_fileinput参数。但是File.OpenRead需要的是文件路径,而不是文件的内容 你所要做的就是更新你的主函数,所以它看起来像下面的代

我正在尝试为文件创建校验和。在调试文件内容时,文件内容显示为红色,但在“filestream”行中出现了“mscorlib.dll中发生了类型为“System.ArgumentException”的第一次意外异常”错误

您只需更正对
GetChecksum
函数的调用

现在,您正在将checksum.txt的完整内容作为字符串传递给
GetChecksum
的m_fileinput参数。但是
File.OpenRead
需要的是文件路径,而不是文件的内容

你所要做的就是更新你的主函数,所以它看起来像下面的代码

class Program
{
    public static string GetChecksum(string m_fileinput)
    {


        string m_checksum;
        using (FileStream stream = File.OpenRead(m_fileinput))
        {
            SHA256Managed sha = new SHA256Managed();
            byte[] checksum = sha.ComputeHash(stream);
            m_checksum =
              BitConverter.ToString(checksum).Replace("-", String.Empty);
        }

        return m_checksum;
    }

    static void Main(string[] args)
    {
        string fileContent = File.ReadAllText("C://Users//wiproat3//Desktop//checksum.txt");
        string checksum = GetChecksum(fileContent);
        Console.WriteLine(checksum);
        Console.ReadLine();
    }
}

阅读异常消息。您正在将文件内容传递给需要文件名的方法。您实际的问题可能是“如何从字符串创建流”,这是一个完整的文档。@CodeCaster理论上讲,
checksum.txt
包含一行保存路径和文件名的可能性很小。…@rene是的,但不会引发ArgumentException。
static void Main(string[] args)
{
    string checksum = GetChecksum("C://Users//wiproat3//Desktop//checksum.txt");
    Console.WriteLine(checksum);
    Console.ReadLine();
}