通过javascript中的ref / out参数调用Webmethod

时间:2018-11-22 07:25:11

标签: c# asp.net ajax web-services webforms

这是我的webmethod

[WebMethod]
    public string CheckService(string name, ref string msg)
    {
        return "Hello" + name;
    }

这是我的ajax通话

$(document).ready(function () {
                $.ajax({
                    type: "POST",
                    url: "<%= ResolveUrl("integrator.asmx/CheckService") %>",
                    data: '{name: "zakki",msg:"" }',
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    async: false,
                    success: function (data1) {
                        console.log('', data1.d);
                    }
                });
            });

它引发错误

Cannot convert object of type 'System.String' to type 'System.String&'

1 个答案:

答案 0 :(得分:1)

简短的答案是:在标记有ref属性的方法中,不能对参数使用传递引用(带有out / [WebMethod]关键字)。

以下是解释为什么从this reference中提取&作为第二种System.String类型的异常消息的原因:

  

解码此消息源的关键是位于“   文本的结尾。这是传递参数时使用的语法   到功能BYREF(按参考)并在   C-符号表示“通过AddressOf”变量名。即使你编码   C#/ VB.NET中的WebService,Microsoft会将其转换/编译为C类型   它作为程序集输出时的符号。

因此,使用[WebMethod]属性的方法内的所有参数都必须通过删除ref关键字来使用传递值:

[WebMethod]
public string CheckService(string name, string msg)
{
    // return string here
}