Я написал веб-сервис ASMX, который работает уже несколько лет.Сегодня внезапно Java-клиенты выдают ошибки при попытке разобрать ответ.Мы отследили его до BOM (Byte Order Mark), появившегося до объявления XML:
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: text/xml; charset=utf-8
Content-Encoding: gzip
Expires: -1
Vary: Accept-Encoding
Server: Microsoft-IIS/7.0
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
MicrosoftSharePointTeamServices: 12.0.0.6300
Date: Wed, 22 Jun 2011 19:59:49 GMT
Content-Length: 3629
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap...
Код не изменился за год.Веб-служба работает под сайтом MOSS 2007 в IIS, как вы можете видеть из заголовка HTTP выше, но имеет свой собственный web.config.
В конфигурации сервера не было каких-либо серьезных изменений,насколько мы можем судить, но это должно быть что-то.Есть идеи, что могло послужить причиной этого?
Если мы не сможем отследить и отменить изменение, следующий вопрос: можно ли это исправить в моем коде?
Это ванильная сеть ASMXсервис с файлом .asmx, который выглядит следующим образом:
<%@ WebService Language="c#" Codebehind="MyStuff.asmx.cs" Class="MyStuff.MyService" %>
и файл .asmx.cs, который выглядит следующим образом:
public class MyService : System.Web.Services.WebService {
...
[WebMethod(CacheDuration = 30, Description = "This does something", MessageName = "GetMyStuff")]
public XmlDocument GetMyStuff(string param) {
return doGetStuff(param)
}
private XmlDocument doGetStuff(string param) {
...
}
}
Я видел некоторые сообщения , который говорит о проблеме спецификации, но так как я просто возвращаю XML-документ, а инфраструктура заботится о потоковой передаче обратно клиенту, я не уверен, что смогу что-нибудь с этим сделать.
Обновление: Я обнаружил, что проблемы спецификации не существует на нашем сервере стадии.Что может быть другой подсказкой;когда soapUI показывает необработанный ответ от prod, он имеет спецификацию, а SOAP XML выглядит отформатированным (многострочным и с отступом).Когда я смотрю на сцене, там нет спецификации, и весь ответ находится в одной строке.Так что другие были добавлены с спецификацией.