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.
¿Actualizaciones de Windows? Volvería y revisaré * cualquier * cambio al servidor desde el último conocido-bueno. –
Estamos tratando de hacer eso. Estaba trabajando el martes. El miércoles, los administradores instalaron una plantilla DocAv y restablecieron IIS. –
Interesante. También veo este problema * a veces *, con formularios de InfoPath. –