Возникла проблема, которая серьезно вызвала некоторое раздражение и не смогла найти решение этой конкретной проблемы.Я использую сообщение ajax с json для своего веб-сервиса, а затем использую возвращаемое значение.Все работает, как и ожидалось в Firefox, но не в других местах (например, Chrome, Safari).
В других браузерах, однако, он всегда будет работать идеально, если я возвращаю более сложные значения (например, мои собственные объекты), но более стандартные переменные (строки, bool, int [] и т. Д.) Будут потеряны впуть и возвращенные данные ответа будут пустыми (хотя все успешно до этого момента).Таким образом, все работает, за исключением того, что возвращаемое значение в non-ff является нулевым, если пользовательские объекты.
Два интересных примечания:
- Полное удаление спецификации contentType делает его успешно возвращающим простые переменные, хотя вызовиначе не получится.Возможно, можно поиграть с этим и заставить его работать, хотя проблемы будут возникать при возврате пустых списков и тому подобное.И не совсем правильное решение.
- Использование fiddler не перехватывает запросы на публикацию в IE, только ff.в ff он выдает следующую ошибку (даже если результат позже в порядке): «Несоответствие длины содержимого: заголовок ответа потребовал 1767884 байта, но сервер отправил 1772317 байтов.»
довольно стандартный постметод (воспроизводитсяс другими аргументами, такими как кеш и т. д. безрезультатно):
/* Excutes a remote method */
function executeMethod(location, methodName, methodArguments, onSuccess, onFail) {
$.ajax({
type: 'POST',
url: location + "/" + methodName,
data: methodArguments,
contentType: "application/json",
dataType: "json",
success: onSuccess,
error: onFail
});
}
Метод веб-сервиса:
namespace Domain1.ClientServices
{
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceContract(Namespace = "")]
public class AjaxService
{
....
[OperationContract]
public string PrintTransportNote(int meansOfTransport, int deliveryId)
{
return "string1";
}
}
}
sidenote, я использую Telerik стороннего поставщика, если это может быть причиной какой-либобеспокойство.