diff --git a/src/Utility/TypeExtensions.cs b/src/Utility/TypeExtensions.cs index e49b5c64..2247939c 100644 --- a/src/Utility/TypeExtensions.cs +++ b/src/Utility/TypeExtensions.cs @@ -58,7 +58,11 @@ private static HttpRequestContext ToHttpRequestContext (this RpcHttp rpcHttp) if (rpcHttp.RawBody != null) { - httpRequestContext.RawBody = rpcHttp.RawBody.ToObject(); + object rawBody = rpcHttp.RawBody.DataCase == TypedData.DataOneofCase.String + ? rpcHttp.RawBody.String + : rpcHttp.RawBody.ToObject(); + + httpRequestContext.RawBody = rawBody; } return httpRequestContext; diff --git a/test/Unit/Utility/TypeExtensionsTests.cs b/test/Unit/Utility/TypeExtensionsTests.cs index c698b1bd..8ed9aab7 100644 --- a/test/Unit/Utility/TypeExtensionsTests.cs +++ b/test/Unit/Utility/TypeExtensionsTests.cs @@ -90,6 +90,7 @@ public void TestTypedDataToObjectHttpRequestContextBodyData() var method = "Get"; var url = "https://example.com"; var data = "Hello World"; + var rawData = "{\"Foo\":\"Bar\"}"; var input = new TypedData { @@ -103,7 +104,7 @@ public void TestTypedDataToObjectHttpRequestContextBodyData() }, RawBody = new TypedData { - String = data + String = rawData } } }; @@ -121,7 +122,7 @@ public void TestTypedDataToObjectHttpRequestContextBodyData() Assert.Equal(httpRequestContext.Method, method); Assert.Equal(httpRequestContext.Url, url); Assert.Equal(httpRequestContext.Body, data); - Assert.Equal(httpRequestContext.RawBody, data); + Assert.Equal(httpRequestContext.RawBody, rawData); Assert.Empty(httpRequestContext.Headers); Assert.Empty(httpRequestContext.Params); Assert.Empty(httpRequestContext.Query);