C# 使用异步任务返回服务中的HttpPostedFile
我有如下异步任务方法:C# 使用异步任务返回服务中的HttpPostedFile,c#,asp.net-mvc,async-await,C#,Asp.net Mvc,Async Await,我有如下异步任务方法: public async Task<Slider> EditSlider(HttpPostedFileBase file) { if (file != null) { var pic = Path.GetFileName(file.FileName); var path = Path.Combine(HttpContext.Current
public async Task<Slider> EditSlider(HttpPostedFileBase file)
{
if (file != null)
{
var pic = Path.GetFileName(file.FileName);
var path = Path.Combine(HttpContext.Current.Server.MapPath("~/Content/images/slider"), pic);
file.SaveAs(path);
}
return file;
}
公共异步任务EditSlider(HttpPostedFileBase文件)
{
如果(文件!=null)
{
var pic=Path.GetFileName(file.FileName);
var path=path.Combine(HttpContext.Current.Server.MapPath(“~/Content/images/slider”),pic);
file.SaveAs(路径);
}
返回文件;
}
但是在返回文件中我得到
无法将表达式HttpPostedFileBase转换为异步方法返回类型
我怎样才能退货?
提前谢谢 首先,文件
是HttpPostedFileBase
,而不是滑块
。因此,如果有什么不同的话,那就是任务
但是,代码中没有任何内容是异步的,因此您只需返回HttpPostedFileBase
,而不是Task
您的方法也有一个误导性的名称-此处没有任何内容正在编辑。。它只是保存一个上传的文件。。但这是下一次您应该将方法签名更改为
public async Task<HttpPostedFileBase> EditSlider(HttpPostedFileBase file)
{
//your code here
}
如果要返回该类型,则需要将方法声明为返回该类型public async Task EditSlider(HttpPostedFileBase文件)
@Slaks您的方法所做的就是保存传递给它的文件。它应该是public void EditSlider(HttpPostedFileBase文件){..}
并删除返回文件代码>行。我这样做了,但现在在控制器中,我得到“无法将源类型'void'转换为目标类型字符串”转换为slider.Image=\u sliderService.editsloider(文件)代码>@Stephenmuecket与您显示的代码无关。你到底想干什么。无法将HttpPostedFileBase
转换为string
。最好的猜测是您希望将Image
的值设置为文件保存到的路径-在这种情况下,请询问一个新问题,并提供相关的详细信息(您的方法需要是private string EditSlider(HttpPostedFileBase file){..return path;}
完全正确。无需将此方法设置为异步
。谢谢!但现在还有一个问题,我在控制器中用一个变量映像将其等效为:var getphoto=\u sliderService.Edit(file);
和slider.image=getphoto;
但我得到了错误“无法将源类型HttpPostedFileBase转换为目标类型字符串”有什么想法吗?该方法可以是void
(它只是将相同的对象passd返回给它)@EdgarG,这取决于滑动条的内容。图像应为字符串。如果它是您保存的文件的路径,则需要更改方法以返回路径,而不是文件。如果在控制器中我等于数据库中的对象,则需要返回什么类型的对象?谢谢!但现在还有一个问题,我用一个可变图像来等于它在我的控制器中,如下所示:var getphoto=\u sliderService.Edit(file);
和slider.Image=getphoto;
但我得到错误“无法将源类型HttpPostedFileBase转换为目标类型string”“有什么想法吗?@EdgarG,我的坏…图像需要字符串,而您的方法返回一个文件。您应该相应地从您的方法返回正确的数据。”。
public async Task<HttpPostedFileBase> EditSlider(HttpPostedFileBase file)
{
//your code here
}
var data = await EditSlider(myfile);