是否可以配置默认的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文件上并使用“在浏览器中预览”),
它返回:
<?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"}
答案 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数组,这将对您有帮助。