简体   繁体   English

.Net 4,Web API和Visual Studio 2010的自定义MediaTypeFormatter上的编译错误

[英]Compilation error on Custom MediaTypeFormatter with .Net 4, Web API and Visual Studio 2010

I am implementing a custom MediaTypeFormatter and I am getting a compilation error on the overriden method ReadFromStreamAsync as shown in the code example. 我正在实现自定义MediaTypeFormatter,并且在重写方法ReadFromStreamAsync上遇到编译错误,如代码示例所示。 For work reasons I can't update to Visual Studio 2012 and use .net 4.5 unfortunately: 出于工作原因,不幸的是,我无法更新到Visual Studio 2012并使用.net 4.5:

ImageMediaFormatter.ReadFromStreamAsync(System.Type, System.IO.Stream, System.Net.Http.HttpContent, System.Net.Http.Formatting.IFormatterLogger)': not all code paths return a value ImageMediaFormatter.ReadFromStreamAsync(System.Type,System.IO.Stream,System.Net.Http.HttpContent,System.Net.Http.Formatting.IFormatterLogger)':并非所有代码路径都返回值

public class ImageMediaFormatter : MediaTypeFormatter
{
    public ImageMediaFormatter()
    {
        SupportedMediaTypes.Add(new MediaTypeHeaderValue("image/jpeg"));
        SupportedMediaTypes.Add(new MediaTypeHeaderValue("image/jpg"));
        SupportedMediaTypes.Add(new MediaTypeHeaderValue("image/png"));
        SupportedMediaTypes.Add(new MediaTypeHeaderValue("multipart/form-data"));
    }

    public override bool CanReadType(Type type)
    {
        return type == typeof(ImageMedia);
    }

    public override bool CanWriteType(Type type)
    {
        return false;
    }

    public override Task<object> ReadFromStreamAsync(
        Type type, Stream stream, HttpContent request,
        IFormatterLogger formatterContext)
    {

        if (!request.IsMimeMultipartContent())
        {
            throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
        }

        var streamProvider = new MultipartMemoryStreamProvider();
        var task = request.ReadAsMultipartAsync(streamProvider)
            .ContinueWith(
               t =>
               {
                   var content = streamProvider.Contents.First(x =>
                    SupportedMediaTypes.Contains(x.Headers.ContentType));

                   string fileName = content.Headers.ContentDisposition.FileName;
                   string mediaType = content.Headers.ContentType.MediaType;

                   var imgstream = content.ReadAsStreamAsync().ContinueWith(x =>
                                                                                {
                                                                                    byte[] imagebuffer = ReadFully(x.Result);
                                                                                    return new ImageMedia(fileName, mediaType, imagebuffer);  
                                                                                });




               }
         );

        //return task.Result;

    }

    private byte[] ReadFully(Stream input)
    {
        byte[] buffer = new byte[16*1024];
        using (MemoryStream ms = new MemoryStream())
        {
            int read;
            while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
            {
                ms.Write(buffer, 0, read);
            }
            return ms.ToArray();
        }
    }
}

好的, ReadFromStreamAsync()方法必须返回Task<object>但是您已经注释了return语句(它可能应该只是return task; ),因此显然不会编译。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在Visual Studio 2010中的ASP .NET网页中插入视频 - Inserting a video in asp .net web page in visual studio 2010 视觉工作室 2010 web 服务 - visual studio 2010 web service Visual Studio编译错误UWP - Visual Studio compilation error UWP 错误:Microsoft Visual Studio 2010上的“ .Net Framework许可证编译器” devexpress - Error: “.Net Framework license compiler” devexpress on Microsoft Visual Studio 2010 Visual Studio 2010中的Luxand API? - Luxand API in Visual Studio 2010? Visual Studio 2010中的Project WPF .Net 3.5导致错误 - Project WPF .Net 3.5 in visual studio 2010 cause error Visual Studio 2010 ///.NET MVC应用程序-空白项目出现404错误 - Visual Studio 2010 //.NET MVC Application - 404 Error on blank project 从ASP.NET 4网站项目迁移到Visual Studio 2010中的Web应用程序项目是否导致所有控件引发错误? - Migrating from ASP.NET 4 website project to web application project in Visual Studio 2010 Causing all controls to throw error? MediaTypeFormatter在web api中序列化枚举字符串值 - MediaTypeFormatter serialize enum string values in web api 没有MediaTypeFormatter可用于在asp.net web api中读取“Advertisement”类型的对象 - No MediaTypeFormatter is available to read an object of type 'Advertisement' in asp.net web api
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM