Tôi đã viết một dịch vụ web ASMX, đã hoạt động trong sản xuất trong nhiều năm. Ngày nay, tất cả các khách hàng Java đột nhiên đang ném lỗi khi cố gắng phân tích cú pháp phản hồi. Chúng tôi đã theo dõi nó xuống một BOM (Dấu đơn hàng) xuất hiện trước khai báo XML:Tại sao tôi lại thấy một Dấu đơn hàng Byte trong Dịch vụ Web .NET của tôi đột ngột?
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...
Mã không thay đổi sau một năm. Dịch vụ web chạy dưới trang MOSS 2007 trong IIS, như bạn có thể thấy từ tiêu đề HTTP ở trên, nhưng có web.config riêng của nó.
Không có bất kỳ thay đổi lớn nào đối với cấu hình máy chủ, theo như chúng tôi có thể nói, nhưng nó phải là một cái gì đó. Bất kỳ ý tưởng gì có thể đã gây ra điều này?
Nếu chúng tôi không thể theo dõi và hoàn nguyên thay đổi, câu hỏi tiếp theo là, tôi có thể sửa lỗi này trong mã của mình không?
Đó là một dịch vụ web vani ASMX với file .asmx mà trông như thế này:
<%@ WebService Language="c#" Codebehind="MyStuff.asmx.cs" Class="MyStuff.MyService" %>
và .asmx.cs tập tin mà trông như thế này:
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) {
...
}
}
Tôi đã nhìn thấy some posts mà nói về vấn đề BOM, nhưng kể từ khi tôi chỉ trả lại một tài liệu XML và khung công tác đang chăm sóc streaming trở lại cho khách hàng, tôi không chắc chắn nếu tôi có thể làm bất cứ điều gì về nó.
Cập nhật: Tôi thấy rằng các vấn đề BOM KHÔNG tồn tại trên máy chủ giai đoạn của chúng tôi. Điều gì có thể là một đầu mối khác là; khi soapUI hiển thị phản hồi thô từ sản phẩm, nó có BOM và XML SOAP có định dạng (đa dòng và thụt lề). Khi tôi nhìn vào sân khấu, không có BOM và toàn bộ câu trả lời là trên một dòng. Vì vậy, khác cũng đã được bổ sung với BOM.
Cập nhật Windows? Tôi sẽ quay lại và xem lại * bất kỳ * thay đổi nào đối với máy chủ kể từ lần cuối được biết đến. –
Chúng tôi đang cố gắng làm điều đó. Nó đã làm việc vào thứ ba. Hôm thứ Tư, các quản trị viên đã cài đặt một mẫu DocAv và IIS được phục hồi. –
Thú vị. Tôi cũng thấy vấn đề này * đôi khi *, với biểu mẫu InfoPath. –