Почему в моем веб-сервисе .NET внезапно появляется метка порядка байтов? - PullRequest
7 голосов
/ 23 июня 2011

Я написал веб-сервис 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 выглядит отформатированным (многострочным и с отступом).Когда я смотрю на сцене, там нет спецификации, и весь ответ находится в одной строке.Так что другие были добавлены с спецификацией.

1 Ответ

2 голосов
/ 23 июня 2011

Отследил проблему до следующей записи в web.config:

   <webServices>
      <soapExtensionTypes>
        <add type="Cognos.Portal.Services.SoapPatchExtension, Cognos.BI.WebPart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cb3c72729d0875cd" priority="1" group="0" />
      </soapExtensionTypes>
    </webServices>

Это была конфигурация, добавленная как часть развертывания Cognos Web Part, которая затем была закомментирована. По какой-то причине SharePoint решил вернуть его обратно.

Дальнейшее чтение предполагает, что исправление заключается в «Обновлении до IBM Cognos Business Intelligence 10.1 Fix Pack 1.»

Кроме того, в то же время пользователи сообщали, что возможности SharePoint Редактировать в таблице и Экспорт в Excel не функционировали. Это та же самая основная причина .

...