如何避免<string xmlns ="http://schemas.microsoft.com/2003/10/Serialization/">?

Pie*_*let 8 vb.net serialization json web-services

我使用VB.NET"WCF Rest Service Application"项目模板构建了一个非常简单的Web服务(这是一个不错的选择吗?).我工作得很好,除了有事实

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
...
</string>
Run Code Online (Sandbox Code Playgroud)

添加到我的答案.

我已将我的返回值声明为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
Run Code Online (Sandbox Code Playgroud)

所以不要回答这个:

{"logged":false,"userID":"0","message":"Empty body"}
Run Code Online (Sandbox Code Playgroud)

我明白了:

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
{"logged":false,"userID":"0","message":"Empty body"}
</string>
Run Code Online (Sandbox Code Playgroud)

有什么方法可以避免我的字符串答案的这种不必要的序列化?

Aar*_*ide 4

我刚刚遇到了这个问题,并通过将XmlSerializerFormat属性应用到服务契约来解决它。

这是 ac# 片段 - 希望对您有所帮助。

[ServiceContract(Namespace = "")]
[XmlSerializerFormat]
interface IHuggies
{
    [OperationContract]
    [WebInvoke(
        Method = "POST",
        UriTemplate = "/CheckIfConsumerExists")]
    bool CheckIfConsumerExists(string parameters);
}
Run Code Online (Sandbox Code Playgroud)