I have built a very simple web service using the VB.NET "WCF Rest Service Application" project template (Is this a good choice?). I works well except the fact that there is
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
...
</string>
added to my answer.
I have declared my return value as a String :
<WebInvoke(UriTemplate:="member/login", Method:="POST",
responseformat:=WebMessageFormat.Json,
BodyStyle:=WebMessageBodyStyle.Bare)>
Public Function Create(data As IO.Stream) As String
Dim strData As String = New IO.StreamReader(data).ReadToEnd()
Dim UserAccessForm As LoginAccess = Me.getAnswer(strData)
Dim jsonAnswer As String
jsonAnswer = Newtonsoft.Json.JsonConvert.SerializeObject(UserAccessForm, Newtonsoft.Json.Formatting.None)
Return jsonAnswer
End Function
So instead of having as answer this :
{"logged":false,"userID":"0","message":"Empty body"}
I get :
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
{"logged":false,"userID":"0","message":"Empty body"}
</string>
Is there any way I can avoid this unwanted serialization of my string answer?
I just ran into this problem and solved it by applying the XmlSerializerFormat
attribute to the service contract.
Here's a c# snippet - hope it helps you.
[ServiceContract(Namespace = "")]
[XmlSerializerFormat]
interface IHuggies
{
[OperationContract]
[WebInvoke(
Method = "POST",
UriTemplate = "/CheckIfConsumerExists")]
bool CheckIfConsumerExists(string parameters);
}
I think this will work, note the Stream
as return argument.
<WebInvoke(UriTemplate:="member/login", Method:="POST",
responseformat:=WebMessageFormat.Json,
BodyStyle:=WebMessageBodyStyle.Bare)>
Public Function Create(data As IO.Stream) As Stream
Dim strData As String = New IO.StreamReader(data).ReadToEnd()
Dim UserAccessForm As LoginAccess = Me.getAnswer(strData)
Dim jsonAnswer As String
jsonAnswer = Newtonsoft.Json.JsonConvert.SerializeObject(UserAccessForm, Newtonsoft.Json.Formatting.None)
Return New MemoryStream(ASCIIEncoding.Default.GetBytes(jsonAnswer));
End Function
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With