C# .NET核心iPostBack
当我尝试下载文件时,单击计数增加5,有时增加6,而不是增加1。我尝试使用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
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
关键字有效非常感谢。我不知道我怎么会这么粗心……没关系,但这个问题的解决方案是错误的,依我看。听起来你有一个更大的问题,应该解决,作为一个长期的解决方案。