我正在尝试在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;
}
}
答案 0 :(得分:3)
不确定MultipartStreamProvider
导致问题的原因,但如果您更改为MultipartMemoryStreamProvider
则可以正常使用。
我的猜测是,System.Net库存在某种程度上的不匹配,导致其中一个GetStream
实现没有排队。您通常会看到具有不匹配的DLL版本的库。