发送Json字符串到.asmx Web服务导致HTTP 500
问题描述:
我想发送参数给我的Web服务,它提供了XML和JSON,这取决于头中的请求类型。但是,当我传递JSON参数时,服务器会以状态码回应我。发送Json字符串到.asmx Web服务导致HTTP 500
下面是我在我的web服务调用方法:
[WebMethod]
public string EchoEmployee(Employee emp)
{
return "you sent employee " + emp.Name;
}
* Employee
是一个测试类,它包含了两个字符串和int领域
的JSON字符串,我传递在Web服务方法:
{"emp":[{"Name":"Waqas Aslam","Company":"Dell"}]}
如果我看着我的方法的XML结构,这是怎么解释道:
<EchoEmployee xmlns="TestIntegrationLayer">
<emp>
<Id>int</Id>
<Name>string</Name>
<Company>string</Company>
<Address>string</Address>
<Phone>string</Phone>
<Country>string</Country>
<DOB>dateTime</DOB>
</emp>
</EchoEmployee>
我知道我只在我的JSON字符串中设置了两个键,但这有什么关系吗?我是否需要定义所有的密钥?我的JSON字符串还有什么可能是错的?
答
我有同样的问题。添加以下到我的web.config:
<system.webServer>
<handlers>
<add name="ScriptHandlerFactory" verb="*" path="*.asmx"
preCondition="integratedMode"
type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</handlers>
</system.webServer>
另外,还要确保你的服务是ScriptService由装饰类是这样的:
[ScriptService]
public class SomeService : BaseWebService
{
}
我不得不删除WebService的装饰。
为什么你的json中的emp是一个数组? – Selvin 2012-02-06 14:47:46
是的,我意识到它,并删除'[]',它的工作!谢谢 – waqaslam 2012-02-06 15:16:47