Я могу вызвать свой веб-сервис с помощью 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";
}
}