<webmethod()>属性从2.0更改为3.5 </webmethod()>

时间:2010-12-08 17:45:10

标签: json asmx webmethod

我的方法如下:

<WebMethod()> _
Public Function Search(ByVal q As String) As String

从.net 2.0更新到3.5似乎打破了这一点。

我们对返回的值执行data.split(),并且生成错误 - 看起来返回的值现在是json结构,而不是简单的字符串。

有没有办法恢复到先前的行为?

2 个答案:

答案 0 :(得分:0)

您必须导入System.Web.Script.Services

然后,尝试添加此属性:

<WebMethod()> _
<ScriptMethod(ResponseFormat:=ResponseFormat.Xml)> _

您是如何调用Web方法的?通过javascript?

答案 1 :(得分:0)

我们遇到了类似的问题。使用Webmethod和jquery ajax调用2.0的基本设置,它返回一个字符串(js中的类型字符串)或字符串数​​组(js中的类型对象),在3.5中它总是返回一个对象,返回的实际数据在.d时返回像字符串或字符串数​​组一样的原语。

到目前为止,我最好的解决方案是检查.d。

的javascript方法
    function getResponse(r){
        if(r.d!=null){
            return r.d;
        }else{
            return r;
        }
    }

我必须同时支持2.0和3.5的过渡调用,而不必耗费太多精力,因为2.0很快就会消失。

但我宁愿找到更好的解决方案。