我编写了一些应用程序,它应该与byte[]
一样使用文件。因此,我创建了ConfigDto
类来获取用户的文件路径,并通过AutoMapper
将其映射到Config
类:
public class ConfigDto
{
public string SelectedFilePath { get; set; }
}
public class Config
{
public Stream SelectedFile { get; set; }
public string SelectedFileName { get; set; }
}
对于AutoMapper
我有以下资料:
public class ConsoleMapperProfile : Profile
{
public ConsoleMapperProfile()
{
CreateMap<ConfigDto, Config>()
.ForMember(
dst => dst.SelectedFile,
m => m.MapFrom(src => File.OpenRead(src.SelectedFilePath))
).ForMember(
dst => dst.SelectedFileName,
m => ma.MapFrom(src => Path.GetFileName(src.SelectedFilePath)
);
}
}
要表示我创建FileEntity
类:
public class FileEntity : IFileEntity
{
public string Name { get; set; }
public byte[] Content { get; set; }
}
我尝试通过以下方法将文件读入FileEntity
:
public async Task<IFileEntity> GetFile(ConfigDto configDto)
{
using (var srcStream = configDto.SelectedFile)
{
using (var dstStream = new MemoryStream())
{
await srcStream.CopyToAsync(dstStream);
var content = dstStream.ToArray();
try
{
return new FileEntity()
{
paramsDto.CamouflageName,
content
}
}
catch (Exception ex)
{
_logger.Exception(ex);
}
}
}
}
所有这些代码都在.NET Framework Class Library
项目中,MyProject.Core
名称和.NET Framework
版本4.6.1
当然,我有一个名为.NET Framwork Console
的{{1}}项目,该项目使用此库。
但是当我编译并运行我的控制台应用程序时,它会崩溃,因为它说MyProject.Console
是File.Content
。当我尝试调试它时,我得到一个非常奇怪的错误。我逐行检查我的代码,当我从null
移动到下一行时 - 调试器崩溃了。没有任何事情发生,没有例外或类似的事情。行为类似于var content = dstStream.ToArray();
快捷方式。
这种奇怪行为的原因是什么?我该如何解决这个错误?
感谢您的帮助。
答案 0 :(得分:0)
这可能是由于调试器本身的异常
我想你正在寻找的是
StreamReader str= new StreamReader(dstStream);
var content = str.ReadToEnd();