子类化MultipartStreamProvider在Visual Studio c#中失败?

时间:2017-11-22 09:49:43

标签: c# visual-studio http multipartform-data azure-functions

我正在尝试在Visual Studio中继承MultipartStreamProvider,

System.TypeLoadException: Method 'GetStream' in type 
     'Uploadfunction.InMemoryMultipartFormDataStreamProvider' from assembly 
     'Uploadfunction, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' 
     does not have an implementation.
  in Microsoft.NET.SDK.Functions.Build.targets line 31

我的第31行是这样的

        <BuildFunctions
  TargetPath="$(TargetPath)"
  OutputPath="$(TargetDir)"/>

我有System.net程序集,并且还下载了Microsoft.net.sdk.functions(1.0.6)。

我的函数类看起来像这样 -

public static class UploadFunction
{
    [FunctionName("UploadFunction")]
    public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log)
    {


    //Check if the request contains multipart/form-data.
        if (!req.Content.IsMimeMultipartContent("form-data"))
        {
            return req.CreateResponse(HttpStatusCode.UnsupportedMediaType);
        }

      var provider = await req.Content.ReadAsMultipartAsync(new InMemoryStream());

    return req.CreateResponse(HttpStatusCode.OK, "File Uploaded");

 }

我的InMemoryStream类看起来像这样。

public class InMemoryStream : System.Net.Http.MultipartStreamProvider
{
    public override Stream GetStream(HttpContent parent, HttpContentHeaders headers)
    {
         MemoryStream s = new MemoryStream();
        return s;
    }


}

1 个答案:

答案 0 :(得分:3)

不确定MultipartStreamProvider导致问题的原因,但如果您更改为MultipartMemoryStreamProvider则可以正常使用。

我的猜测是,System.Net库存在某种程度上的不匹配,导致其中一个GetStream实现没有排队。您通常会看到具有不匹配的DLL版本的库。