Bir HTTP sunucusuna (OWINHost tarafından barındırılan) bir akış göndermek istiyorum, aşağıdaki kod parçacığına bakın. StringContent ile bir String aktardığımda iyi çalışıyor. Ancak bir StreamStream ile StreamContent aktarmak istiyorsanız, sunucu tarafında alınan akım boş (MemoryStream'in test amacıyla istemci tarafında serpiştirilmesiyle doğrulandığını doğruladım). Neyi yanlış yapıyorum?HttpRequestMessage/StreamContent, boş Sunucu tarafında akış
istemci tarafı:
...
var request = new HttpRequestMessage(HttpMethod.Post, Configuration.ServiceBaseAddress);
// this works fine!
//request.Content = new StringContent("This is a test!!");
request.Content = new StreamContent(stream);
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
HttpResponseMessage response = await client.SendAsync(request);
...
sunucu tarafı:
public class Startup {
public void Configuration(IAppBuilder app) {
app.Run(async context =>
{
var stream = new MemoryStream();
await context.Request.Body.CopyToAsync(stream);
stream.Seek(0, SeekOrigin.Begin);
// this works fine when I send StringContent
//StreamReader reader = new StreamReader(stream);
//String str = reader.ReadToEnd();
// when I send StreamContent the stream object is empty
IFormatter formatter = new BinaryFormatter();
ServiceRequest requestTest = (ServiceRequest)formatter.Deserialize(stream);
context.Response.ContentType = "text/plain";
await context.Response.WriteAsync("Hello World!");
});
}
}
Yazılıma zaten bir şeyler yazdınız mı? Bunu ilk kod parçasında görmüyorum, ama belki zaten yapıyorsun. Sadece bir çek. – Sjips
Evet Bir nesneyi akışa yazdım. Test amaçlı söylediğim gibi, akışını istemci tarafında salıverdim ve nesne geri yüklendi. Açıklık için kodu ihmal ettim. – matt77
Windows 7 ve Microsoft.Owin ve OwinHost 3.0 kullanıyorum, Visual Studio Express 2013'de hata ayıklama modunda çalışıyor – matt77