win2008 IIS7 ASP 的 405 错误

    两天前突然接到测试的报告,说网络查询没有数据,很纳闷,这个系统跑了很多年,还没有出现过这个问题。

    数据是服务器A去另一个服务器B上取来的,用的是:   

Set oXMLHTTP = CreateObject("MSXML2.ServerXMLHTTP")

  

    responsebody取回来数据后经过转化:

 1 Function BytesToBstr(body,Cset)
 2     dim objstream
 3     set objstream = Server.CreateObject("adodb.stream")
 4     objstream.Type = 1
 5     objstream.Mode =3
 6     objstream.Open
 7     objstream.Write body
 8     objstream.Position = 0
 9     objstream.Type = 2
10     objstream.Charset = Cset
11     BytesToBstr = objstream.ReadText   
12     objstream.Close
13     set objstream = nothing
14 End Function

     服务器B不止有一台,运行的系统 有win2003和win2008,调试输出BytesToBstr =

objstream.ReadText这一行,发现win2003系统下跑的系统正常返回数据,win2008下的就会出现405错误。
  
   
     405错误是谓词错误,服务器不认识或者拒绝执行谓词(Get、Post之类)。当时想的是可能是win2008的权限问题。
 
    可以几乎把所有可以开的权限都打开了还是没能解决问题,而这已经花去了一天多的时间,是在让人郁闷。
 
   
     搜索引擎,发帖询问都无果,后来询问了一个朋友,他提示了下大小写问题,由于asp对大小写不敏感,所以之前没有想到这个问题。
 
   
XMLHTTP.open "GET","http://catcoder.com/",true

  

    上一条语句中原来是“Get”,改成“GET”后,问题居然就这样解决了,当时的感觉,真有砸电脑的冲动。
 
    但问题总算解决,但本质问题还是不太理解,猜想可能是IIS7中对“谓词”审查比较严,但我也配置过兼容IIS6,所以真正的问题根源并不清楚。
 
    大小写,OH MY GOD!!
 
  原文:http://catcoder.com/index.php/2013/01/09/win2008-iis7-asp-405/
原文地址:https://www.cnblogs.com/mnight/p/2852895.html