2016-04-12 14 views
0

ServiceStack web hizmetimin Raw verilerini servicerunner kullanarak yazmaya çalışıyorum. Bu SOAP istekleri için çalışıyor, ancak REST isteği için GetRawBody() boş dönüyor. İsteği enjekte edecektirGetRawBody() REST istekleri için boş dönüyor

public class MyRequest : IRequiresRequestStream 
{ 
    Stream RequestStream { get; set; } 
} 

: Varsayılan web sunucuları tarafından

public override void BeforeEachRequest(IRequest requestContext, T request) 
    { 
     Logger.Write(requestContext.GetRawBody()); 
    } 
+0

kullandığınız gerçek HTTP fiil nedir: Daha sonra kendiniz bir ön isteği filtre kullanarak buffer the Request için ServiceStack anlatmaya gerek İsteği Bedeninden yeniden okumak? POST? REST, tanımlanmış bir protokol değil, mimari bir strüktür. Ayrıca bkz. Http://stackoverflow.com/questions/17514754/can-servicestack-runner-get-request-body – PatrickSteele

cevap

1

sadece implementing IRequiresRequestStream on your Request DTO tarafından talep Çayı'ndan okuyabilir böylece salt ileri sen deserialization atlamak için ServiceStack söyleyebilir Akışı talep sağlamak yerine örneğin İsteği DTO deserializing ait video akışı: Eğer ServiceStack isteği serisini atmak isterseniz

public class object Any(MyRequest request) 
{ 
    var requestBody = request.RequestStream.ReadFully().FromUtf8Bytes(); 
} 

ve istediğiniz - GET

appHost.PreRequestFilters.Add((httpReq, httpRes) => { 
    httpReq.UseBufferedStream = true; 
}); 
İlgili konular