Я могу вызвать свой веб-сервис, используя jQuery, если contentType = "application / x-www-form-urlencoded; charset = utf-8"
Это, однако, вернет xml: <string>[myjson]</string>
Если я пытаюсь отправить POST в службу, используя «application / json; charset = utf-8», я получаю ошибку 500 с пустыми StackTrace и ExceptionType. Моя функция веб-сервиса никогда не срабатывает, поэтому я не совсем уверен, как отладить эту ситуацию.
Мои методы и классы имеют соответствующие атрибуты и настроены на использование JSON в качестве типа ответа (как и мои файлы wsdl и disco). У меня установлены расширения Ajax и необходимые записи в web.config.
Это на ферме SharePoint, но я не уверен, что это имеет большое значение. Я развернул изменения web.config на всех WFE, а также установил расширения ajax. Опять же, служба работает, она просто не будет принимать ничего, кроме типа содержимого по умолчанию.
Не уверен, что мне здесь не хватает, ребята ...
мой вызов ajax:
$.ajax({
type: "POST",
url: "/_vti_bin/calendar.asmx/Test",
dataType: "json",
data: "{}",
contentType: "application/json; charset=UTF-8",
success: function(msg){
alert(msg);
},
error: function(xhr, msg){ alert(msg + '\n' + xhr.responseText); }
});
Мой класс веб-сервиса:
[WebService(Namespace = "http://namespace")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService()]
public class CalendarService : WebService
{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string Test()
{
return "Hello World";
}
}