7

He escrito un servicio web ASMX, que ha estado funcionando durante años. Hoy, de repente, los clientes de Java están lanzando errores al intentar analizar la respuesta. Tenemos un seguimiento hacia abajo para una lista de materiales (Byte Order Mark) que aparece antes de la declaración XML:¿Por qué veo una marca de orden de bytes en mi servicio web .NET de repente?

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... 

el código no ha cambiado en más de un año. El servicio web se ejecuta en el sitio MOSS 2007 en IIS, como se puede ver en el encabezado HTTP anterior, pero tiene su propio sitio web.config.

No ha habido ningún cambio importante en la configuración del servidor, por lo que podemos decir, pero debe haber sido algo. ¿Alguna idea de lo que pudo haber causado esto?

Si no podemos rastrear y revertir el cambio, la siguiente pregunta es, ¿puedo arreglar esto en mi código?

Es un servicio web ASMX de vainilla con el archivo .asmx que se parece a esto:

<%@ WebService Language="c#" Codebehind="MyStuff.asmx.cs" Class="MyStuff.MyService" %> 

y .asmx.cs archivo que se parece a esto:

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) { 
     ... 
    } 
} 

que he visto some posts que hablan sobre el problema de la BOM, pero como acabo de devolver un documento XML y el marco se está encargando de volver a enviarlo al cliente, no estoy seguro si puedo hacer algo al respecto.

Actualización: Descubrí que los problemas de la lista de materiales NO existen en nuestro servidor de escenario. Lo que podría ser otra pista es; cuando soapUI muestra la respuesta bruta de prod, tiene la BOM y el formato XML de SOAP tiene formato (multilíneas y sangría). Cuando miro en el escenario, no hay lista de materiales y toda la respuesta está en una sola línea. Entonces otro también se agregó con la lista de materiales.

+0

¿Actualizaciones de Windows? Volvería y revisaré * cualquier * cambio al servidor desde el último conocido-bueno. –

+0

Estamos tratando de hacer eso. Estaba trabajando el martes. El miércoles, los administradores instalaron una plantilla DocAv y restablecieron IIS. –

+0

Interesante. También veo este problema * a veces *, con formularios de InfoPath. –

Respuesta

2

Oruga el problema a la siguiente entrada en 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> 

Era una configuración añadido como parte de una implementación de elementos Web Cognos que luego fue comentada. Por alguna razón, SharePoint decidió volver a instalarlo.

Further reading sugieren que la solución es "Actualizar a IBM Cognos Business Intelligence 10.1 Fix Pack 1".

también, al mismo tiempo, los usuarios reportaron que el Editar en hoja de datos y Exportación a Excel características de SharePoint rompieron. It's the same root cause.

Cuestiones relacionadas