为什么Internet Explorer(8)认为这是XML

时间:2010-12-10 18:38:05

标签: xml internet-explorer-8 ihttphandler response.contenttype

这是从服务器生成的Raw响应(使用Fiddler2)

HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/plain; charset=utf-8
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
MicrosoftOfficeWebServer: 5.0_Pub
MS-Author-Via: MS-FP/4.0
Date: Fri, 10 Dec 2010 18:19:18 GMT
Content-Length: 594

Contents of 24194_XXXXXXXXXX.log as of 10/12/2010 19:19:18
w3wp.exe Information: 0 : START: New Alarm [9]
w3wp.exe Information: 0 : 12/10/2010 19:14:56 - <?xml version="1.0"?>
<CALLS>
  <CALL>
    <CALL_ID>9_1</CALL_ID>
    <BODY>004|007|015|058|1_ToConfirm|2_ToDecline</BODY>
    <LANGID>321</LANGID>
    <TO1>99999999999</TO1>
    <TO2 />
  </CALL>
</CALLS>
w3wp.exe Information: 0 : END: New Alarm [9]
w3wp.exe Information: 0 : 12/10/2010 19:15:30 - <RESULT><CALL_ID>9_1</CALL_ID><CALLRESULT1>0</CALLRESULT1><DTMF1>2</DTMF1><CALLRESULT2></CALLRESULT2><DTMF2></DTMF2></RESULT>

在我的asp.net IHttpHandler中,我设置了

           context.Response.ContentType = "text/plain";

它显然正在回归。在IE8中,我看到了这个: IE8 trying to be clever...

当我尝试目标另存为... 时,我得到了这个(请注意保存类型:): alt text

2 个答案:

答案 0 :(得分:1)

IE对于猜测内容类型而臭名昭着。据推测,他们正在做内容嗅探,而<?xml version="1.0"?>正在绊倒它。

尝试使用text / plain或application / octet-stream以外的其他内容类型来查看是否获得相同的行为。看起来它只是尝试嗅探这两种类型,试图解决配置错误的Web服务器:

另见http://msdn.microsoft.com/en-us/library/ms775147(VS.85).aspx#introduction

答案 1 :(得分:0)

它正在查看您的实际内容,其中包含xml:

<?xml version="1.0"?>

当你没有任何html元素(如html,head或body)时,很容易理解为什么。如果您希望xml显示为文本,那么您需要包含在html中并正确地转义标记。