微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

发送多个参数 XMLHttpRequest 和 WCF

如何解决发送多个参数 XMLHttpRequest 和 WCF

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

我错过了什么?

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

enter image description here

<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 中接受一个类作为参数时,我认为您不需要在发布 JSON 请求时指定参数名称。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。