【问题标题】:Why am I seeing a Byte Order Mark in my .NET Web Service all of a sudden?为什么我突然在我的 .NET Web 服务中看到字节顺序标记?
【发布时间】:2011-09-20 17:45:16
【问题描述】:

我编写了一个 ASMX Web 服务,该服务已在生产环境中运行多年。今天,Java 客户端在尝试解析响应时突然抛出错误。我们追踪到出现在 XML 声明之前的 BOM(字节顺序标记):

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

代码一年多没有改变。 Web 服务在 IIS 中的 MOSS 2007 Site 下运行,从上面的 HTTP 标头可以看出,但有自己的 web.config。

据我们所知,服务器的配置没有任何重大变化,但肯定有什么变化。有什么想法可能导致这种情况吗?

如果我们无法追踪并恢复更改,那么下一个问题是,我可以在我的代码中解决这个问题吗?

这是一个带有 .asmx 文件的普通 ASMX Web 服务,如下所示:

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

我看到some posts 谈到了 BOM 问题,但是由于我只是返回一个 XML 文档并且框架正在处理流回客户端,所以我不确定我是否可以做任何事情关于它。

更新:我发现我们的舞台服务器上不存在 BOM 问题。另一个线索可能是;当 soapUI 显示来自 prod 的原始响应时,它具有 BOM 并且 SOAP XML 看起来已格式化(多行和缩进)。当我在舞台上看时,没有 BOM,整个响应都在一条线上。因此 BOM 中也添加了其他。

【问题讨论】:

  • Windows 更新?我会返回并查看自上次已知良好以来对服务器的任何更改。
  • 我们正在努力做到这一点。它在星期二工作。周三,管理员安装了 DocAv 模板并恢复了 IIS。
  • 有趣。我也看到这个问题有时,带有 InfoPath 表单。

标签: .net web-services sharepoint-2007 character-encoding byte-order-mark


【解决方案1】:

将问题追踪到 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 部件推出的一部分添加的配置,随后被注释掉。出于某种原因,SharePoint 决定将其放回原处。

Further reading 建议修复是“升级到 IBM Cognos Business Intelligence 10.1 Fix Pack 1”。

同时,用户报告说 SharePoint 的 在数据表中编辑导出到 Excel 功能损坏。 It's the same root cause.

【讨论】:

    猜你喜欢
    • 2014-06-09
    • 1970-01-01
    • 1970-01-01
    • 2010-09-30
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多