2015-09-25 12 views
8

Ich muss eine HTTP-Anforderung als MultiPartFormData an einen REST-Controller senden. Es funktionierte, aber jetzt die Überprüfung, die ich auf meinem Controller habe behauptet, dass die Anfrage nicht vom richtigen Typ ist, auch wenn ich im Debugger sehen kann, dass die Anfrage auf den richtigen Typ ist. Als Referenz:HttpRequest.Content.IsMimeMultipartContent() gibt false zurück, wenn es true zurückgeben soll

enter image description here

Hier ist die Konsole app-Code, der es ruft:

using System; 
using System.IO; 
using System.Net.Http; 
using System.Net.Http.Headers; 
using System.Text; 

namespace QuickUploadTestHarness 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      using (var client = new HttpClient()) 
      using (var content = new MultipartFormDataContent()) 
      { 
       // Make sure to change API address 
       client.BaseAddress = new Uri("http://localhost"); 

       // Add first file content 
       var fileContent1 = new ByteArrayContent(File.ReadAllBytes(@"C:\<filepath>\test.txt")); 
       fileContent1.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") 
       { 
        FileName = "testData.txt" 
       }; 

       //Add Second file content 
       var fileContent2 = new ByteArrayContent(File.ReadAllBytes(@"C:\<filepath>\test.txt")); 
       fileContent2.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") 
       { 
        FileName = "Sample.txt" 
       }; 

       content.Add(fileContent1); 
       content.Add(fileContent2); 

       // Make a call to Web API 
       var result = client.PostAsync("/secret/endpoint/relevant/bits/here/", content).Result; 

       Console.WriteLine(result.StatusCode); 
       Console.ReadLine(); 
      } 
     } 
    } 
} 

Wie ist es möglich, dass es als nicht MultiPartFormData interpretiert wird? Beachten Sie die „mit MultiPartFormDataContent“ für die Anfrage

Antwort

5

Für MultiPartFormDataContent können Sie versuchen, die content.Add Überlastung zu verwenden, die eine name und filename Argument. MSDN MultipartFormDataContent.Add Method (HttpContent, String, String)

Grüße

+0

Das funktionierte! Vielen Dank! – Matt

+0

Schön zu hören! :) –

+0

Sorry ... Ich kann es nicht verstehen. Kannst du mir sagen, was ich an meinem Controller ändern muss, um IsMimeMultiPartContent() true zurück zu geben? Ich sende die Datei von einem Web-Client, nicht asp, und empfange auf meinem Webapi-Controller. –

Verwandte Themen