传递对象和流来休息wcf

时间:2013-12-17 13:23:50

标签: wcf rest c#-4.0 wcf-binding wcf-security

这里,当我尝试将对象和流传递给wcf操作时。我收到“不良请求400”异常。如果我只传递流,它工作正常,没有问题,我能够输出为流。非常感谢任何建议。

客户端代码:

testclass tcls = new testclass();
tcls.name = "myclass";

 HttpWebRequest req = (HttpWebRequest)WebRequest.Create(string.Format(@"http://localhost:225141/RestService.svc/getobject/tc/{0}",tcls));
 string svcCredentials = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes("bda11d91-7ade-4da1-855d-24adfe39d154"));
 req.Headers.Add("Authorization", "Basic " + svcCredentials);
 req.MaximumResponseHeadersLength = 2147483647;
 req.Method = "POST";
 req.ContentType = "application/octet-stream";

 FileStream fs = new FileStream("file1.txt", FileMode.Open, FileAccess.Read);
 MemoryStream ms = new MemoryStream();
 fs.CopyTo(ms);
 ms.Position = 0;
 byte[] dd = ms.ToArray();

 Stream strw = req.GetRequestStream();
 strw.Write(dd.ToArray(), 0, dd.Length);
 strw.Close();

 // here i am getting "bad request error"
 using (WebResponse svcResponse = (HttpWebResponse)req.GetResponse())
 {        
    MemoryStream msm = new MemoryStream();
    svcResponse.GetResponseStream().CopyTo(msm);
    msm.Position = 0;
    byte[] data = msm.ToArray();
 }
...

服务端代码:

//IRestService.cs

[ServiceContract]    
public interface IRestService
{                

   [OperationContract]          
   [WebInvoke(UriTemplate="getobject/tc/{tc}",Method="POST",
    BodyStyle=WebMessageBodyStyle.Wrapped,ResponseFormat=WebMessageFormat.Json)]
    Stream getobjectl(testclass obj,Stream tc);
}

[DataContract]
[KnownType(typeof(testclass))]
public class testclass
{
    [DataMember]
    public string name { get; set; }        
}

//RestService.cs
public Stream getobject(testclass tc, Stream st)
{          
  //code;
}

0 个答案:

没有答案