特殊字符处理仅在服务器环境中失败。无法在本地重现

时间:2014-01-27 13:01:29

标签: xml wcf serialization asp-classic com+

我的团队遇到了一个特殊字符问题,这些问题只会导致Web服务器出现问题。我们在本地调试时尝试重现此错误,但到目前为止还没有成功。我们会提供任何帮助,以便找出在本地运行时我们没有收到此错误的原因。有什么区别使它只在我们的测试环境中失败?

我们正在尝试将COM +组件迁移到WCF,作为这一步,我们通过将记录集serizalizing / deserializing到XML直接从传统的ASP页面调用WCF服务。

当我们尝试保存像',<这样的特殊字符时,会出现问题。或者&'。我们对这些的编码进行了特殊处理,如下所示:

Function XMLEncode(byVal string)
    Dim tmp, i
    tmp = string
    For i = 160 to 255
        tmp = Replace(tmp, chr(i), "&#" & i & ";")
    Next
    tmp = Replace(tmp, chr(34), """) ' "
    tmp = Replace(tmp, chr(39), "'") ' '
    tmp = Replace(tmp, chr(60), "&lt;") ' <
    tmp = Replace(tmp, chr(62), "&gt;") ' >
    tmp = Replace(tmp, chr(38), "&amp;") ' &
    XMLEncode = tmp
End Function

它似乎在本地工作正常,但在测试环境中运行网站时,我们会收到与这些字符相关的错误消息。

我们需要提示还有什么可能导致服务器上的故障,而不是本地计算机上的故障。

我们尝试过的事情:

  
      
  • 在本地运行Web,目标是测试环境数据库和WCF服务,这应该排除与WCF或数据的任何差异。
  •   
  • 比较本地使用的web.config与测试环境中使用的web.config,但没有发现差异。
  •   
  • 比较本地开发计算机与测试环境服务器的语言区域设置,而不会发现差异。它被设置为“英语(美国)”。
  •   
  • 将请求标题和文档模式与IE中的F12开发人员工具进行比较,但未发现编码或类似内容的任何差异。
  •   

Web项目是.NET 2.0,当我们在IIS7.5中运行本地时,在Test环境服务器上运行它是IIS6。我们正在使用MsXml2在Web端序列化/反序列化。

提前致谢

1 个答案:

答案 0 :(得分:0)

谢谢Paul,在最初的问题下面的评论中提出了答案。

使用ChrW而不是Chr解决了这个问题。工作代码在下面剪断。

Function XMLEncode(byVal string)
    Dim tmp, i 
    tmp = string
    For i = 160 to 255
        tmp = Replace(tmp, chrw(i), "&#" & i & ";")
    Next

    tmp = Replace(tmp, chrw(34), "&quot;") ' "
    tmp = Replace(tmp, chrw(39), "&apos;") ' '
    tmp = Replace(tmp, chrw(60), "&lt;") ' <
    tmp = Replace(tmp, chrw(62), "&gt;") ' >
    tmp = Replace(tmp, chrw(38), "&amp;") ' &

    XMLEncode = tmp
End Function