Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET核心iPostBack_C#_Asp.net Core - Fatal编程技术网

C# .NET核心iPostBack

C# .NET核心iPostBack,c#,asp.net-core,C#,Asp.net Core,当我尝试下载文件时,单击计数增加5,有时增加6,而不是增加1。我尝试使用Task.Delay(5000)但它不起作用。我想我可以用!ispostback方法。在asp.net核心中,此方法的等效项是什么?如何解决此问题 public IActionResult Download(int id) { var essay = _essayBussRepository.GetWithId(id); essay.NumberOfDownlo

当我尝试下载文件时,单击计数增加5,有时增加6,而不是增加1。我尝试使用
Task.Delay(5000)但它不起作用。我想我可以用!ispostback方法。在asp.net核心中,此方法的等效项是什么?如何解决此问题

public IActionResult Download(int id)
        {
            var essay = _essayBussRepository.GetWithId(id);
            essay.NumberOfDownloads = essay.NumberOfDownloads + 1;
            Task.Delay(5000);
            _essayBussRepository.Update(essay);


            string fileName = essay.PdfName;
            string path = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/w_essay_pdf/" + fileName);


            byte[] fileBytes = System.IO.File.ReadAllBytes(path);

            return File(fileBytes, "application/force-download", fileName);
        }

我通过转换为异步解决了这个问题

public async Task<IActionResult> Download(int id)
        {
            var essay = _essayBussRepository.GetWithId(id);
            essay.NumberOfDownloads = essay.NumberOfDownloads + 1;
            await Task.Delay(3000);
            _essayBussRepository.Update(essay);


            string fileName = essay.PdfName;
            string path = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/w_essay_pdf/" + fileName);


            byte[] fileBytes = System.IO.File.ReadAllBytes(path);

            return File(fileBytes, "application/force-download", fileName);
        }

公共异步任务下载(int-id)
{
var-those=_-essayBussRepository.GetWithId(id);
随笔.NumberOfDownloads=随笔.NumberOfDownloads+1;
等待任务。延迟(3000);
_更新(随笔);
字符串文件名=随笔.PdfName;
字符串path=path.Combine(Directory.GetCurrentDirectory(),“wwwroot/w_随笔_pdf/”+文件名);
byte[]fileBytes=System.IO.File.ReadAllBytes(路径);
返回文件(fileBytes,“应用程序/强制下载”,文件名);
}

您确定没有多次调用此终结点吗?您是从浏览器(例如通过fetch或AJAX)、邮递员还是其他什么方式调用此API?
Task.Delay(5000)
是异步的,您需要等待
iti这样调用:
,因为没有回发的概念,但有其他方法来管理状态,如ViewBag、TempData和模型绑定。您可以在本文中尝试这些方法作为解决方法。这将帮助您轻松处理这些问题。
wait
关键字有效非常感谢。我不知道我怎么会这么粗心……没关系,但这个问题的解决方案是错误的,依我看。听起来你有一个更大的问题,应该解决,作为一个长期的解决方案。