ASP网站部署https证书后,网站后台生成提示msxml3.dll 错误 '800c0005' 系统未找到指定的资源错误,经过检查分析是Microsoft.XMLHTTP控件请求https的问题,这个控件无法访问请求https的链接资源,导致生成出错。
先把请求的URL修改回http,在网站服务器里面修改hosts文件,C:\Windows\System32\drivers\etc\hosts里面添加一行 127.0.0.1 blog.mydns.vip,然后在web.config里面添加以下规则,处理以后就能正常生成了(注意网址域名改成自己实际域名)。
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="301" stopProcessing="true"> <match url="^(.*)$" ignoreCase="false" /> <conditions logicalGrouping="MatchAll"> <add input="{HTTPS}" pattern="^on$" negate="true" /> <add input="{REMOTE_ADDR}" pattern="127.0.0.1" negate="true" /> </conditions> <action type="Redirect" url="https://blog.mydns.vip/{R:1}" redirectType="Permanent" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
方法二:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="301" stopProcessing="true"> <match url="^(.*)$" ignoreCase="false" /> <conditions logicalGrouping="MatchAll"> <add input="{HTTPS}" pattern="^on$" negate="true" /> <add input="{HTTP_X_FORWARDED_FOR}" pattern="x.x.x.x" negate="true" /> </conditions> <action type="Redirect" url="https://blog.mydns.vip/{R:1}" redirectType="Permanent" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
规则中x.x.x.x替换为网站服务器ip地址。
方法三:
参考说明:ASP程序代码使用Microsoft.XMLHTTP对象请求https时出错解决
原理总结:
由于Microsoft.XMLHTTP控件无法请求https资源,网站又启用了并强制跳转到了https,所以导致生成时无法通过,修改hosts文件将生成请求全部指向服务器端本地,再通过web.config规则文件里面排除127.0.0.1的请求,达到即不影响生成,又不影响https访问网站的需求。
方法二中利用HTTP_X_FORWARDED_FOR来获取来访者ip,生成时服务器内部请求HTTP_X_FORWARDED_FOR会是本机ip,所以生成的时候不会跳转到https,而外部访问的时候HTTP_X_FORWARDED_FOR是访问者自己的ip,符合跳转规则就会跳转。
方法三是更改控件。
» 本文链接地址:https://blog.mydns.vip/2117.html
最新评论
我的站目前每天120个IP,其中刷的是100个。 不知道为什么升级到4H8G5M的标准服务器还是偶尔会崩,CPU占满,但是内存一般这种时候只占50%左右,这是为什么呢?max_children我也设
麻烦发下检测工具
让我下载