Я видел много примеров веб-сервисов json с WCF в asp.net, которые принимают один входной параметр. Мне нужен мой сервисный метод, чтобы принимать много параметров и возвращать список вроде этого;
Это мой Сервис.svc:
public class Car
{
public string Title;
public int Number;
}
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Service
{
[OperationContract]
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]
public List<Car> GetCarById(int userid, string password , List<Cars> carlist)
{
//Doing some stuff here
}
}
В моем web.config:
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="ServiceAspNetAjaxBehavior">
<enableWebScript />
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<services>
<service name="Service">
<endpoint address="" behaviorConfiguration="ServiceAspNetAjaxBehavior"
binding="webHttpBinding" contract="Service" />
</service>
</services>
</system.serviceModel>
Как я могу вызвать эту услугу, если я хочу передать все эти параметры? Когда я пытаюсь вызвать метод с помощью идентификатора пользователя, пароля и карлиста, все они равны нулю. Это то, что я отправляю на http://localhost/Service.svc/GetCarById, используя POST в приложении Fiddler:
HEADERS:
Host: localhost
Content-Length: 136
Content-Type: application/json; charset=utf-8
BODY:
{"d":{"password":"test","userid":123,"carlist":[{"__type":"Car","Number":1,"Title":"BMW"},{"__type":"Car","Number":2,"Title":"Honda"}]}}
Ответ: {"d": null} Метод возвращает список, поэтому я знаю, что метод вызывается, и этот список равен нулю. Если я изменю метод на возвращение строки, например «Ошибка», я получу ее обратно, поэтому я знаю, что метод называется ..
У вас есть представление, что я делаю не так?