atr*_*joe 5 c# asp.net rest wcf json
我有这个简单的Web服务,现在它只是查看部件号是否为A123456789然后它返回一个型号.这将被连接到数据库以检查partno的逻辑所取代,然后返回实际的型号.但此时我只需要它返回一些虚拟JSON数据.然而,当我使用Fiddler并查看http:// localhost:PORT/Scan/Model/A123456789的web broswer中的调用时,它返回此
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">Model: CVS-1679</string>
Run Code Online (Sandbox Code Playgroud)
但是当我在同一个URI的fiddler中进行GET时,我得到了
"Model: CVS-1679"
Run Code Online (Sandbox Code Playgroud)
仅在textview选项卡下.
当我将ResponseFormat设置为JSON时,为什么它以XML(在Fiddler中的浏览器和文本中)而不是JSON返回?
我的代码:
[WebGet(UriTemplate = "Model/{partno}", ResponseFormat = WebMessageFormat.Json)]
public string Model(string partno)
{
if (partno == "A123456789")
{
string modelno = "CVS-1679";
return "Model: " + modelno;
}
else
{
string modelno = "CVS-1601";
return "Model: " + modelno;
}
}
Run Code Online (Sandbox Code Playgroud)
ASP.NET webservice默认返回XML/SOAP消息.如果要返回Json字符串,则需要使用[ScriptService]属性修饰Webservice.这告诉IIS,ASP.NET AJAX调用将使用此服务.这些属性是System.Web.Extensions的一部分.
您可以通过使用ScriptMethod属性修改web方法来定义Web方法响应格式.
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
Run Code Online (Sandbox Code Playgroud)
但是,即使在通过这些属性修改webservice和webmethod之后,响应仍然可以是XML格式.当发出请求的客户端未将Request Header内容类型设置为"application/json"时,会发生此行为.
在使用JavaScriptSerializer将方法调用从webmethod serialize返回到Json字符串之前
使用Fiddler调试WebService
使用fiddler测试webservice非常容易.下图是如何调用返回json字符串的Webservice的示例.请注意,请求内容类型设置为application/json.webserivce期望的参数在Request Body部分中进行了测量.
请注意,请求内容类型设置为application/json.
| 归档时间: |
|
| 查看次数: |
5996 次 |
| 最近记录: |