Asp.net core .Net Core-类型名称空间名称';异步结果';不能';找不到

Asp.net core .Net Core-类型名称空间名称';异步结果';不能';找不到,asp.net-core,.net-core,Asp.net Core,.net Core,我正在将MVC应用程序迁移到.NETCore中,我必须对工作区AsyncResult类进行代码更改 错误:找不到类型或命名空间名称“AsyncResult”(是否缺少using指令或程序集引用?)** 经过基础研究,我发现.net内核中不存在异步结果。我正在尝试使用Task Run和async/await实现,但没有信心。请您提供代码更改解决方案,谢谢。此代码不应在.NET Framework中使用,更不用说.NET Core了。自2012年.NET 4.5引入async/await以来,无需使

我正在将MVC应用程序迁移到.NETCore中,我必须对工作区AsyncResult类进行代码更改

错误:找不到类型或命名空间名称“AsyncResult”(是否缺少using指令或程序集引用?)**


经过基础研究,我发现.net内核中不存在异步结果。我正在尝试使用Task Run和async/await实现,但没有信心。请您提供代码更改解决方案,谢谢。

此代码不应在.NET Framework中使用,更不用说.NET Core了。自2012年.NET 4.5引入
async/await
以来,无需使用
IAsyncResult
BeginInvoke/EndInvoke

由于启动操作的代码丢失,因此不清楚此代码试图执行什么操作。从名称
CopyMemoryStreamToFile
中,我假设它尝试将一个流异步复制到另一个流。在.NET Framework 4.5及更高版本中,您可以使用:

要使用
wait
,调用方法也必须是异步的。所有当前的ASP.NET堆栈(MVC、Web API、Razor页面、Blazor)都使用异步编程。您可以通过向签名添加
async Task
来创建一个异步ASP.NET核心API操作,其中
T
将替换为要返回的结果类型

例如,本文介绍了如何将上载的文件存储到磁盘:

public async Task<IActionResult> OnPostUploadAsync(List<IFormFile> files)
{
    long size = files.Sum(f => f.Length);

    foreach (var formFile in files)
    {
        if (formFile.Length > 0)
        {
            var filePath = Path.GetTempFileName();

            using (var stream = System.IO.File.Create(filePath))
            {
                await formFile.CopyToAsync(stream);
            }
        }
    }

    // Process uploaded files
    // Don't rely on or trust the FileName property without validation.

    return Ok(new { count = files.Count, size });
}
公共异步任务onpostPloadSync(列表文件)
{
long size=files.Sum(f=>f.Length);
foreach(文件中的var formFile)
{
如果(formFile.Length>0)
{
var filePath=Path.GetTempFileName();
使用(var stream=System.IO.File.Create(filePath))
{
等待formFile.CopyToAsync(流);
}
}
}
//处理上载的文件
//未经验证,请勿依赖或信任FileName属性。
返回Ok(新的{count=files.count,size});
}
异步操作在整个ASP.NET Core中使用,并在教程中介绍。例如,在ASP.NET Core MVC入门教程中,与数据库对话的操作是异步的:

// GET: Movies/Edit/5
public async Task<IActionResult> Edit(int? id)
{
    if (id == null)
    {
        return NotFound();
    }

    var movie = await _context.Movie.FindAsync(id);
    if (movie == null)
    {
        return NotFound();
    }
    return View(movie);
}
//获取:电影/Edit/5
公共异步任务编辑(int?id)
{
if(id==null)
{
返回NotFound();
}
var movie=wait_context.movie.FindAsync(id);
如果(电影==null)
{
返回NotFound();
}
返回视图(电影);
}

即使在.NET旧版本中,这也是错误的代码。自2012年引入
async/await
以来,您不需要
IAsyncResult
BeginInvoke
。修复代码。使用正确的异步方法事实上,所有这些代码都想做什么?实际代码在样板中丢失。如果要将一个流异步复制到另一个流,请使用
stream.CopyToAsync
您能告诉我如何使用async/awit修复此代码吗。这是一个旧的应用程序,所以我们没有移动到核心。不只是旧的,但超过10年的过时。您应该在迁移之前修复错误。否则,您要么最终迁移错误,要么同时迁移并修复错误。请提供一些代码资料。我已更新了代码资料。你能检查一下吗。请提供解决方案感谢ans。。这对我有用。
using(var fileStream=File.Create(targetPath))
{
    await sourceStream.CopyToAsync(fileStream)l
}
public async Task<IActionResult> OnPostUploadAsync(List<IFormFile> files)
{
    long size = files.Sum(f => f.Length);

    foreach (var formFile in files)
    {
        if (formFile.Length > 0)
        {
            var filePath = Path.GetTempFileName();

            using (var stream = System.IO.File.Create(filePath))
            {
                await formFile.CopyToAsync(stream);
            }
        }
    }

    // Process uploaded files
    // Don't rely on or trust the FileName property without validation.

    return Ok(new { count = files.Count, size });
}
// GET: Movies/Edit/5
public async Task<IActionResult> Edit(int? id)
{
    if (id == null)
    {
        return NotFound();
    }

    var movie = await _context.Movie.FindAsync(id);
    if (movie == null)
    {
        return NotFound();
    }
    return View(movie);
}