Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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# 使用异步任务返回服务中的HttpPostedFile_C#_Asp.net Mvc_Async Await - Fatal编程技术网

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);