2012-02-06 110 views
1

我想發送參數給我的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字符串還有什麼可能是錯的?

+1

爲什麼你的json中的emp是一個數組? – Selvin 2012-02-06 14:47:46

+0

是的,我意識到它,並刪除'[]',它的工作!謝謝 – waqaslam 2012-02-06 15:16:47

回答

0

我有同樣的問題。添加以下到我的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的裝飾。