2017-04-08 5 views
0

私は、Webサービスにbyte []またはFromBase64String文字列を投稿しようとしています。私は404エラーを取得し続けます。私は["Content-type"]を "text/plain"に変更しましたが、それでもエラーが発生します。しかし、私がbyteArrayをコメントアウトすると、すべて正常です。誰にでも提案はありますか?WCFはバイト[]を送付しますか?

クライアント:

 Object _object = new Object 
     { 
      Param1String = "data", 
      Param2String= "data",   
      Param3String = "data", 
      ByteArray = ReadAllBytes(@"C:\Folder\test.pdf") 
     }; 

     try 
     { 
      WebClient Proxy = new WebClient();     
      Proxy.Headers["Content-type"] = "application/json";     
      MemoryStream stream = new MemoryStream(); 
      DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Object)); 
      serializer.WriteObject(stream, _object); 
      byte[] data = Proxy.UploadData("http://localhost:4589/TestService.svc/FileUpload", "POST", stream.ToArray()); 

      stream = new MemoryStream(data); 
      serializer = new DataContractJsonSerializer(typeof(Object)); 
      var result = serializer.ReadObject(stream) as Object; 
      Console.WriteLine(result.Param1String); 
      Console.ReadKey(true); 
     } 
     catch (Exception ex) 
     { 

     } 

サービス:

[OperationContract] 
    [WebInvoke(Method = "POST", UriTemplate = "/FileUpload")] 
    void FileUpload(Patron patron); 

    public void FileUpload(Object patron) 
    { 

      byte[] newBytes = null; 
      BinaryWriter Writer = null; 
      string Name = @"C:\\Temp\\" + object.Param1String + ""; 
      //byte[] bData = Helper.CopyToArray(object.ByteArray); 

      try 
      { 
       newBytes = Convert.FromBase64String(patron.ByteArray); 
       Writer = new BinaryWriter(File.OpenWrite(Name));      
       Writer.Write(newBytes); 
       Writer.Flush(); 
       Writer.Close(); 
      } 
      catch 
      {      
       //return false; 
      } 
     } 

答えて

0

あなたがオブジェクトをシリアル化する前に、base64でエンコードを含むFileContentを必要としています。もう片方のバイト[]に変換する

Object _object = new Object 
    { 
     Param1String = "data", 
     Param2String= "data",   
     Param3String = "data", 
     Base64ByteArray = Convert.ToBase64String(ReadAllBytes(@"C:\Folder\test.pdf")) 
    }; 
関連する問題