2015-06-18 19 views
5

Ich habe dieses Codebeispiel, das als Antwort auf eine andere Frage (Send a file via HTTP POST with C#) geschrieben wurde. Es funktioniert gut, bis auf ein Problem. Er umgibt die Grenze im HTTP-Header mit doppelten Anführungszeichen:HttpContent Grenze doppelte Anführungszeichen

multipart/form-data; boundary = "04982073-787d-414b-a0d2-8e8a1137e145"

Das erstickt den Webservice, den ich anrufen möchte. Browser haben diese doppelten Anführungszeichen nicht. Ich brauche etwas, um .NET zu sagen, dass er sie abschalten soll.

private System.IO.Stream Upload(string actionUrl, string paramString, Stream paramFileStream, byte [] paramFileBytes) 
{ 
    HttpContent stringContent = new StringContent(paramString); 
    HttpContent fileStreamContent = new StreamContent(paramFileStream); 
    HttpContent bytesContent = new ByteArrayContent(paramFileBytes); 
    using (var client = new HttpClient()) 
    using (var formData = new MultipartFormDataContent()) 
    { 
     formData.Add(stringContent, "param1", "param1"); 
     formData.Add(fileStreamContent, "file1", "file1"); 
     formData.Add(bytesContent, "file2", "file2"); 
     var response = client.PostAsync(actionUrl, formData).Result; 
     if (!response.IsSuccessStatusCode) 
     { 
      return null; 
     } 
     return response.Content.ReadAsStreamAsync().Result; 
    } 
} 
+0

bereits hier beantwortet: http://stackoverflow.com/questions/21569770/wrong-content-type-header -generated-using-multipartformdatacontent –

Antwort

1

Sie können die Angebote von der Grenze entfernen, indem Sie den folgenden Code:

var boundary = formData.Headers.ContentType.Parameters.First(o => o.Name == "boundary"); 
boundary.Value = boundary.Value.Replace("\"", String.Empty);