ASP.NET WebService测试表单

时间:2013-07-22 06:35:43

标签: asp.net json web-services

是否可以配置默认的ASP.NET WebService测试表单以支持JSON? 我是指在.NET框架中内置的测试表单...

目前我有一个用[ScriptService]修饰的WebService,但是当我使用内置的测试表单页面测试它时,它会返回XML ...我想,这是因为测试页面默认发送Content-Type XML

由于

编辑(示例)
我上课了:

public class Person
{
  public string FirstName { get; set; }
  public string LastName { get; set; }
}

现在我有ASP.NET WebService:

[ScriptService]
public class PersonService : WebService
{
  [WebMethod]
  public Person GetDave()
  {
    Person dave = new Person();

    dave.FirstName = "Dave";
    dave.LastName = "Test";

    return dave;
  }
}

当我使用jQuery AJAX从网页调用此WebService时,我在JavaScript中收到JSON Person对象{"FirstName":"Dave","LastName":"Test"}(不是字符串),但是当我从ASP.NET WebService Test Form调用此WebService时(当我右键单击时)在ASMX文件上并使用“在浏览器中预览”),

enter image description here

它返回:

<?xml version="1.0" encoding="utf-8" ?> 
<Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
  <FirstName>Dave</FirstName> 
  <LastName>Test</LastName> 
</Person>

当我从测试页面调用服务时,想要看到相同的输出:

{"FirstName":"Dave","LastName":"Test"}

3 个答案:

答案 0 :(得分:1)

您可以使用以下代码

[WebMethod(Description = "Some Description")]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string FunctionName()
{           
    // Return JSON data
    JavaScriptSerializer js = new JavaScriptSerializer();
    string retJSON = js.Serialize(Object);
    return retJSON;
}

您还需要添加引用。

<强>更新

以下是解释extending an existing ASP.NET Web Service to support JSON

的链接

希望有所帮助

答案 1 :(得分:1)

看起来我找到了一个解决方案......它仍然没有完整的解决方案,但这是要走的路:)

[Drive]:\[WindowsDir]\Microsoft.NET\Framework\[Version]\CONFIG文件夹中,存在名为DefaultWsdlHelpGenerator.aspx的文件。该文件包含使用WSDL自动生成测试页所需的全部代码。现在我可以使用这段代码编写自己的测试页面并使用jQuery创建请求而不使用HTML表单...然后我可以输入配置文件,这应该可行。

<webServices>
      <wsdlHelpGenerator href="WSTestPage.aspx"/>
</webServices>

也许某处存在更简单/现成的方式,但我仍然没有找到它......

答案 2 :(得分:0)

首先添加以下参考资料

using System.Web.Script.Services;
using System.Web.Script.Serialization;

在您的方法中使用以下代码,将任何数据转换为最终的

中的JSON数据格式
JavaScriptSerializer serializer = new JavaScriptSerializer();
return serializer.Serialize(dr);

dr是来自DataTable.Hope的DataRows数组,这将对您有帮助。