发送多个参数 XMLHttpRequest 和 WCF

Sending multiple parameters XMLHttpRequest and WCF

我正在尝试将多个参数发送到 WCF 服务。服务器端我记录传入的数据。其中记录了错误 1 ​​和 2,但没有记录错误 3 和 4。我尝试调试以单步执行,但客户端 javascript 调用未触发我的服务器端代码,因此我可以单步执行。

我错过了什么?

从 Chrome 开发者控制台请求负载:

<script type="text/javascript">
 
    $(document).ready(function () {
        var xhr = new XMLHttpRequest();
        xhr.open('POST', 'https://www.example.com/api/multipleparams');
        xhr.setRequestHeader('Content-Type', 'application/json'); 
        xhr.send(JSON.stringify({ str: { "idtoken": "e46541", "lang": "dfgfdgfdg" } }));
    });

</script>   

<Runtime.Serialization.DataContract>
Public Class oAuthUserSigninDetails

    Private _idtoken As String
    <Runtime.Serialization.DataMember>
    Public Property idtoken As String
        Get
            Return _idtoken
        End Get
        Set(ByVal value As String)
            _idtoken = value
        End Set
    End Property

    Private _lang As String
    <Runtime.Serialization.DataMember>
    Public Property lang As String
        Get
            Return _lang
        End Get
        Set(ByVal value As String)
            _lang = value
        End Set
    End Property
End Class



<OperationContract()>
<Web.WebInvoke(Method:="POST", ResponseFormat:=Web.WebMessageFormat.Json, BodyStyle:=Web.WebMessageBodyStyle.Bare, UriTemplate:="multipleparams")>
Function multipleparams(ByVal str As oAuthUserSigninDetails) As Stream

Public Function multipleparams(ByVal str As oAuthUserSigninDetails) As Stream Implements Iapi.multipleparams
    LogError("1 multipleparams")
    LogError("2 str", str.ToString)
    LogError("3 idtoken", str.idtoken.ToString)
    LogError("4 lang", str.lang.ToString)

End Function

我认为 3 和 4 没有记录,因为它们有空值,而 ToString 会导致空异常,并且由于它们都是字符串,所以您根本不需要使用 ToString。

当您在 OperationContract 中接受 class 作为参数时,我认为您在发布 JSON 请求时不需要指定参数名称。

xhr.send(JSON.stringify({ "idtoken": "e46541", "lang": "dfgfdgfdg" }));