ADODB.Connection 错误 ‘800a0e7a’

ADODB.Connection 错误 ‘800a0e7a’
错误描述:

在ASP连接Access数据库的时候,产生如下的出错提示:

ADODB.Connection 错误 ‘800a0e7a’

未找到提供程序。该程序可能未正确安装。

/conn.asp,行 12

原代码:

<%
dim conn
set coon=server.CreateObject(“adodb.connection”)
dim str
str=”provider=Microsoft.jet.OLEDB.4.0;Data Source=” & server.mappath(“blog_db.mdb”)
‘str=”DBQ=”&server.MapPath(“blog_db.mdb”)&”;Driver={Mirosoft access driver(*.mdb)}”
coon.open str
%>

环境:

Windows 2008 R2、IIS7.5、Access 2007(兼容2003)

故障解决方法:开始-运行-cmd,然后输入

cscript C:\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 true

回车运行就可解决问题

WordPress永久链接在IIS下的实现

因为IIS不支持.htaccess,所以在IIS下开启WordPress永久链接后需要在格式前加上/index.php/,例如: /index.php/%postname%.html。但/index.php/显得无意义、不美观而且增加了目录层次,所以最好还是把它去掉。以下介绍两种实现方法:

1、安装 IIS 的 ISAPI 组件

这种方法适合能自己管理服务器的同学或者和空间提供商关系好的同学,因为需要服务器的管理权限安装一个免费的ISAPI扩展,详情请参考《WordPress在Win-iis中的完美rewrite实现方法》,该扩展可在这里下载。这个方法是很方便的,安装完扩展即可使用 WordPress 的永久链接,无需额外配置,但需要空间提供商的帮助。如果是免费主机的话,建议使用下面一种方法,自主可控。

2、利用404.php实现

首先需要编写404.php页面,上传404.php文件放到wordpress根目录下,代码如下:

<?php
if (strpos($_SERVER[“SERVER_SOFTWARE”], “Apache”) === 0){ 
// Apache 
// REQUEST_URI形如”/non-exist-page.html” 
$uri = $_SERVER[‘REQUEST_URI’]; 

else{ 
// IIS 
// $_SERVER[‘QUERY_STRING’]形如”404;http://localhost/non-exist-page.html” 
$qstr = $_SERVER[‘QUERY_STRING’]; 
$_SERVER[‘QUERY_STRING’] = “”; 
$pos = strrpos($qstr, ‘://’); 
$pos = strpos($qstr, ‘/’, $pos + 4); 
$uri = substr($qstr, $pos); 

$_SERVER[‘REQUEST_URI’] = $uri; 
$_SERVER[‘PATH_INFO’] = $_SERVER[‘REQUEST_URI’]; 
// 解决重定向的页面中的页面导航问题 
$_SERVER[‘SCRIPT_NAME’] = $_SERVER[‘PATH_INFO’]; 
include(‘index.php’); 
?>

然 后需要设置IIS的404页面到wordpress根目录下的404.php。IIS下的设置步骤为:Internet信息服务窗口->右键网站或 wordpress目录->属性->自定义错误->选中404->编辑属性…->消息类型选择url->输入 /404.php(绝对路径)。

之后再wordpress后台开启永久链接后,便可以看到效果了,本站便是用此方法实现的。

WordPress在Win-iis中的完美rewrite实现方法

要说Wordpress中的完美工作环境,当然要属于Lamp平台,或是稍微逊色一点的Wamp平台;但是由于某此特殊原因,我们没有选择它们,而是选择了Windows+iis+MySql+Php,我把它统称为:Wimp平台。

这次我要说的就是如何在Wimp平台中实现Wordpress的完美URL结构!

例:http://www.wangzhengdong.com/blog/2008/06/wp-iis-isapi/ (本文的URL)

用过Wordpress的应该都知道,实现这样的URL只需要在后台中:Settings->permalinks,然后设置成自己中意的URL就行了。但是前提是您的空间支持 rewrite || 您的虚拟主机支持 .htaccess。Lamp,Wamp中只要开启加载mod_rewrite模块就行了。但是Wimp却不是这么简单的,它如果想实现rewrite功能只能借助于第三方的ISAPI组件。

如现在比较火的:http://www.helicontech.com/isapi_rewrite/ 这是一个国外的组织专门为IIS写的ISAPI Rewrite组件,非常类似于Apache的mod_rewrite。有免费版与收费版!很多网友说实现WP在IIS中的rewrite功能只需要下载一个它的组件就OK了。我在本地测试了好一阵子,没有成功,而且用它的比较麻烦,还要自己写rewrite规则!(没有成功可能是我没写正确规则,汗!)。最后我放弃了它……

下面说一下本博客中用到的ISAPI组件吧:

wp-url-rewriting.dll 下载地址:http://code.google.com/p/wp-url-rewriting-on-iis/downloads/list

这是位好心的牛人专门为工作于iiS中的WP写的ISAPI rewrite组件,用它您根本就不用写rewrite规则,您只需要将其加载到您的ISAPI中,然后进wp后台定义自己的permalinks即可。 假如你用的是虚拟主机的话,您可以联系您的空间商让其为您添加上这个组件。从此您的WP也可以完美rewrite了。

注意:本文还没有完呢!

当我们定义好permalinks后,可能您会发现,我们点击中文标量的文章链接时说找不到网址。

例:http://www.wangzhengdong.com/blog/2008/06/php%e4%b8%ad%e7%9a%84%e6%96%87%e7%ab%a0/

这是因为:WP的编码为utf-8,而这篇文章的URL中Slug(上链接红色部分)编码为gbk。然后WP取得文章Slug后,通过它来查找文章就会找不到!因为编码不同呀。

更改方法:

wp-include/classes.php中(44-50行)

PHP代码

if ( isset($_SERVER[‘PATH_INFO’]) )
$pathinfo = $_SERVER[‘PATH_INFO’];
else
$pathinfo = ”;
$pathinfo_array = explode(“?”, $pathinfo);
$pathinfo = str_replace(“%”, “%25”, $pathinfo_array[0]);
$req_uri = $_SERVER[‘REQUEST_URI’];

替换为下(转换$_SERVER[‘PATH_INFO’]和$_SERVER[‘REQUEST_URI’]的编码):

PHP代码

if ( isset($_SERVER[‘PATH_INFO’]) )
$pathinfo = mb_convert_encoding($_SERVER[‘PATH_INFO’],”utf-8″,”GBK”);
else
$pathinfo = ”;
$pathinfo_array = explode(‘?’, $pathinfo);
$pathinfo = str_replace(“%”, “%25”, $pathinfo_array[0]);
$req_uri = mb_convert_encoding($_SERVER[‘REQUEST_URI’], “utf-8″,”GBK”);

这个操作的意思就是:将Slug的编码由GBK转换为utf-8(您也可以用iconv,或是其它的函数来代替mb_convert_encoding)。

《-结束-》

IIS 下实现 WordPress 伪静态

在 IIS 下使用 WordPress ,最闹心的事莫过于对 WP 固定链接的伪静态设置。网上有很多基于 ISAPI_Rewrite 的 URL 重写规则,大部分都不是太好用,这里推荐两款适用于 IIS 环境下的 WP URL 重写组件,供有独立主机的朋友轻松配置 WordPress 伪静态。

  1. wp_url_rewriting:URL Rewriting for WordPress under IIS
  2. WordPress URL Rewrite

这两款 URL 重写组件使用都非常的简单,只需要解压后,打开 IIS 信息服务管理器,在你的 WordPress 站点属性中添加 ISAPI 筛选器,加载解压的 wp-url-rewriting.dll 或 WordPressURLRewrite32.dll ,然后重启 IIS 即可。然后到 WP 管理后台设置固定链接形式就好。

其中,WordPress URL Rewrite 可以打开 WordPressURLRewrite.ini 设置 WP 博客目录,比如 /blog 等,还可以排除不需要重写的目录。对于某些目录不需要URL重写的就将其排除,不会造成无法访问,比如 /wp-admin 等,Readme.txt里有详细说明。

WordPress URL Rewrite 分 32/64 位, 使用时选择适合自己的版本,还要注意给 dll 所在的目录加上 IIS_WPG 组的权限,如果服务器没有安装 MS VC++ 2008 Redistributable 需要运行文件夹中的 vcredist_x86.exe 来安装,否则在 ISAPI 筛选器中看到的始终是向下的红箭头状态,不可用。

备注:如果箭头红色并且向下,尝试检查组件文件夹的权限,重启一下站点就能箭头变成绿色并且向上。

另:这两款组件都不支持 .html 后缀的 URL 重写,只能以目录形式组成,比如你的固定链接使用的是 /%postname%.html 就需要改成 /%postname%/ ,希望更新版本能解决这个问题。

由于组件是外国人的,所以不支持中文的 tags ,所以,为了兼容中文的 tags ,还需要多加载 ISAPI_Rewrite 组件并配置规则 httpd.ini 来实现:

[ISAPI_Rewrite]

# 3600 = 1 hour

CacheClockRate 3600

RepeatLimit 32

RewriteRule /tag/(.*)/ /index\.php\?tag=$1

这样就能支持任意字符的 tags 了,完美解决 WordPress 的 URL 重写问题。

注意 / 问题,规则正则结尾带 / ,设置固定链接时使用 /%postname%/ ,最后面要加 / 。

除此之外,用过 Discuz! 论坛的朋友都知道 Discuz!提供有 Rewrite 组件,配置方法和效果与 ISAPI_Rewrite 相同。

Windows IIS主机中wordpress永久链接伪静态的方法

前提条件是服务器提供商的控制面板有自定义404错误页面的选项。

你只需创建一个404错误页面,并且写入下列4行代码即可简单优雅的实现无插件完美支持windows iis主机的永久固定链接的伪静态化地址格式。去掉网页地址中的index.php!

<?php
$qs = $_SERVER[‘QUERY_STRING’];
$_SERVER[‘REQUEST_URI’] = substr($qs, strpos($qs, ‘:80’)+3);
$_SERVER[‘PATH_INFO’] = $_SERVER[‘REQUEST_URI’];
include(‘index.php’);
?>
这样即可固定REQUEST_URI和PATH_INFO参量并且包括进去index.php,剩下的将交给wordpress完成任务(说实话,这参数定义代码偶也不清楚,依葫芦画瓢即可)。

具体设置步骤:
1.新建一个记事本,在里面写入上面代码,保存,连同txt格式重新命名为wp-404-handler.php。
2.设置404自定义错误指向wp-404-handler.php,一般来说,绝大多数服务器控制面板均提供该选项。
3.进入wordpress管理后台,设置(Options)-永久链接(Permalinks),你就当自己的主机是linux主机使好了,任意、随便设置自己喜欢的伪静态地址格式及静态地址后缀。
4.Enjoy!
推荐链接地址层次不要太深,并且伪静态化地址加上html/htm,不过也有人推荐不要加上伪静态后缀,因为那样搜索引擎可能会认为那种地址是一个分类目录,而不是一个具体的网页,从而获得更高的搜索排名权重,现在wordpress个人博客也比较流行那种伪静态格式。

解决”操作必须使用一个可更新的查询”

将SQLSERVER转成ACCESS时,提交更新数据的操作,经常出现"操作必须使用一个可更新的查询"的错误.

原因:
有几个主要的错误原因:
这个错误发生在当你的程序试图执行更新数据库或其它类似操作时。这是因为
ADO由于以下的几个原因而不能够写数据库造成的。
1、最普遍的原因是匿名用户帐号(IUSR_MACHINE)对该数据库文件没有写权限。
 要解决这个问题,在管理器中调整数据库文件的属性,让匿名用户有正确的权限。当使用ACCESS数据库时,不仅要给文件写的权限,还要给该目录写 的权限,因为Jet需要在该目录建立一个.ldb文件。
// 2003 系统要加 Authenticated Users 的权限
2、第二个原因是数据库没有使用正确的模式打开。应该使用下面的方法打开。
  SQL = "UPDATE Products Set UnitPrice = 2;"
  Set Conn = Server.CreateObject("ADODB.Connection")
  Conn.Mode = 3   ’3 = adModeReadWrite
  Conn.Open "myDSN"
  Conn.Execute(SQL)
  Conn.Close
  注意默认的Mode是设置0(adModeUnknown),它是允许更新的。
3、还有可能是在ODBC管理器中将该DSN的只读选项选中。
4、你是在同时更新两个表中的字段,也会出现这个错误信息,解决办法是分开来更新这两个表中各自字段。
5、当你使用了一个从低版本中(如ACCESS2.0,ACCESS7.0)载入到高版本(ACCESS 2000)中的查询时,在执行这个查询是会出现该错误

重新安装.NET环境后修复IIS

要为 asp.net 修复 iis 映射,请运行 aspnet_regiis.exe 实用工具:
1. 单击“开始”,然后单击“运行”。
2. 在“打开”框中,键入 cmd,然后按 enter。
3. 在命令提示符下键入以下内容,然后按 enter:
"%windir%\microsoft.net\framework\version\aspnet_regiis.exe" -i
在此路径中,version 代表在服务器上安装的 .net framework 的版本号。键入此命令时,必须将此占位符替换为实际版本号。

WINDOWS下安装程序老提示无法复制文件的解决办法

安装IIS时,总是提示无法复制staxmem.dll,导致无法安装IIS,但在C:\WINDOWS\ServicePackFiles\i386下,有这个文件,不可理解。经过多次尝试终于找到解决办法,步骤是:

(1) 开始 > 运行    > 输入 CMD >再输入以下命令:

esentutl /p %windir%/security/database/secedit.sdb

(2) 接着屏幕上会输出如下信息:

Microsoft(R) Windows(R) Database Utilities

Version 5.2

Copyright (C) Microsoft Corporation. All Rights Reserved.

Initiating INTEGRITY mode…

Database: L:\WINDOWS\security\database\secedit.sdb

Temp. Database: TEMPINTEG2680.EDB

Checking database integrity.

Scanning Status (% complete)

0 10 20 30 40 50 60 70 80 90 100

|—|—|—|—|—|—|—|—|—|—|

……………………………………………

Integrity check successful.

Operation completed successfully in 0.841 seconds.

 
 
 
 
(3)插入安装盘再试一下,问题解决了。
 

windows2003重装iis6.0的时候出现“安装程序无法复制文件文件IISApp.vbs”等
 
重装的时候遇到“安装程序无法复制文件IISApp.vbs”等一系列错误

这就是典型的windows安全数据库出问题了,可以这样来做

在开始–运行,输入:esentutl /g C:\Windows\security\database\secedit.sdb

这个是检查资料库的完整性,要用/g

若要用如下指令:
输入:esentutl /p C:\Windows\security\database\secedit.sdb

这个就是修复这个Windows安全资料库,

参考文章\

Windows安全资料库,在%WinDir%\Security\database里。
台湾的资料库,大陆称为数据库。 在Windows作业系统里带有专门的Esentutl.exe工具,这是一个DOS工具,可用来查看和修复Windows安全资料库。

比如我有一次在安装IIS的元件时,发生了错误:
************************
复制错误 安装程式无法复制档 iisapp.vbs。 请确认下面指定的位置是正确的,或者更改它并在指定的驱动器中插入 ‘Service Pack 1 CD-ROM’。
当复制来源: C:\Windows\ServicePackFiles\i386 [浏览] [重试] [取消]

************************
这就是由于Windows安全资料库损坏所致。可用Esentutl.exe进行修复。

查看它的用法,用下面指令: esentutl /? 会显示如下提示:
Microsoft(R) Windows(R) Database Utilities Version 5.2 Copyright (C) Microsoft Corporation. All Rights Reserved. DESCRIPTION: Maintenance utilities for Microsoft(R) Windows(R) databases. MODES OF OPERATION: Defragmentation: ESENTUTL /d [options] Recovery: ESENTUTL /r [options] Integrity: ESENTUTL /g [options] Checksum: ESENTUTL /k [options] Repair: ESENTUTL /p [options] File Dump: ESENTUTL /m[mode-modifier] <<<<< Press a key for more help >>>>>
D=Defragmentation, R=Recovery, G=inteGrity, K=checKsum, P=rePair, M=file duMp =>

设置IIS的安全机制

设置IIS的安全机制

1.安装时应注意的安全问题

1)避免安装在主域控制器上

安装IIS之后,在安装的计算机上将生成IUSR_Computername匿名账户。该账户被添加到域用户组中,从而把应用于域用户组的访问权限提供给访问Web服务器的每个匿名用户,这不仅给IIS带来潜在危险,而且还可能威胁整个域资源的安全。所以要尽可能避免把IIS服务器安装在域控制器上,尤其是主域控制器上。

2)避免安装在系统分区上

把IIS安装在系统分区上,会使系统文件与IIS同样面临非法访问,容易使非法用户侵入系统分区,所以应该避免将IIS服务器安装在系统分区上。

2.用户的安全性

1)匿名用户访问权限的控制

安装IIS后产生的匿名用户IUSR_Computername(密码随机产生),其匿名访问给Web服务器带来潜在的安全性问题,应对其权限加以控制。如无匿名访问需要,则可以取消Web的匿名访问服务。具体方法:

选择“开始”选单→“程序”→“Microsoft Internet Server(公用) ”→“Internet服务管理器” →启动Microsoft Internet Service Manager→ 双击“WWW”启动WWW服务属性页→取消其匿名访问服务。

2)控制一般用户访问权限

可以通过使用数字与字母(包括大小写)结合的口令,使用长口令(一般应在6位以上),经常修改密码,封锁失败的登录尝试以及设定账户的有效期等方法对一般用户账户进行管理。

3.IIS三种形式认证的安全性

1)匿名用户访问:允许任何人匿名访问,在这三种中安全性最低。

2)基本(Basic)认证:用户名和口令以明文方式在网络上传输,安全性能一般。

3)Windows NT请求/响应方式:浏览器通过加密方式与IIS服务器进行交流,有效地防止了窃听者,是安全性比较高的认证形式(需IE 3.0以上版本支持)。

4.访问权限控制

1)设置文件夹和文件的访问权限:安放在NTFS文件系统上的文件夹和文件,一方面要对其权限加以控制,对不同的组和用户设置不同的权限;另外,还可以利用NTFS的审核功能对某些特定组的成员读、写文件等方面进行审核,通过监视“文件访问”、“用户对象的使用”等动作,来有效地发现非法用户进行非法活动的前兆,及时加以预防和制止。具体方法:

选择“开始”选单→“程序”→启动“域用户管理器” →选择“规则”选项卡下的“审核”选项→设置“审核规则”。

2)设置WWW目录的访问权限:已经设置成Web目录的文件夹,可以通过操作Web站点属性页实现对WWW目录访问权限的控制,而该目录下的所有文件和子文件夹都将继承这些安全机制。WWW服务除了提供NTFS文件系统提供的权限外,还提供读取权限——允许用户读取或下载WWW目录中的文件;执行权限——允许用户运行WWW目录下的程序和脚本。具体设置方法如下:

选择“开始”选单→“程序”→“Microsoft Internet Server(公用) ”→“Internet服务管理器” →启动Microsoft Internet Service Manager→ 双击“WWW”启动WWW服务属性页→选择“目录”选项卡→选定需要编辑的WWW目录→选择“编辑属性”中的“目录属性”进行设置。

5.IP地址的控制

IIS可以设置允许或拒绝从特定IP发来的服务请求,有选择地允许特定节点的用户访问。可以通过设置来阻止指定IP地址外的网络用户访问你的Web服务器。具体设置方法如下:

选择“开始”选单→“程序”→“Microsoft Internet Server(公用) ”→“Internet服务管理器” →启动Microsoft Internet Service Manager→双击“WWW”启动WWW服务属性页→启动Web属性页中“高级”选项卡;进行IP地址的控制设置。

6.端口安全性的实现

对于IIS服务,无论是WWW站点、Fpt站点,还是NNpt、SMpt服务等都有各自侦听和接收浏览器请求的TCP端口号(Post),一般常用的端口号为:WWW是80,Fpt是21,SMpt是25,你可以通过修改端口号来提高IIS服务器的安全性。如果你修改了端口设置,只有知道端口号的用户才可以访问,不过用户在访问时需要指定新端口号。

启用文档页脚

添加网页页脚
  在用户Web站点管理中,用户经常在每一个Web页的前面插入一个由HTML语言编写的脚本文件,作为网页页脚,以增加Web站点的内容。例如,一个用HTML语言编写的脚本文件为Web页增加一些简单的文本和标识图形,甚至包括用户Web站点管理和服务方向等内容。这些内容不但会大大地增加用户Web站点的可读性,而且还可引导访问者对用户Web站点以后内容的阅读。另外,网页页脚还可以减少Web服务器的执行的时间,如果用户的Web站点被其他访问者频繁的访问,使用文档页脚是非常有用的。要添加网页页脚,可参照下面的步骤:

  1. 创建一个HTML网页页脚文件,并把它保存在自己的Web服务器所在的硬盘上。

  2. 在Internet服务管理器的控制台目录树中,右击某一个Web站点或者目录子节点,例如,MSADC虚拟目录,从弹出的快捷菜单中,选择“属性”命令,打开“MSADC属性”对话框,单击“文档”选项卡。

  3. 在“文档”选项卡中,选择“启用文档页脚”复选框;在“启用文档页脚”文本框中输入页脚文件的完整路径。如果用户不知道页脚文件的完整路经,可单击“浏览”按钮,打开“打开”对话框进行选择。

  4. 单击“确定”按钮,返回到属性对话框,再单击“确定”按钮保存设置。

  注释:文档页脚文件并不是一个完整的HTML文档,它仅仅包含那些HTML标签信息,说明如何安排页脚的内容的显示。例如,通过一个页脚文件,在每一个Web页的前面增加用户所在组织的名称,则该页脚文件应该包含文本内容和如何格式文本的字体及颜色。

  四、安全与权限设置

  安全与权限设置是IIS保证其站点安全的最重要的保护措施,它可用来控制怎样验证用户的身份以及他们的访问权限。在权安全与限设置过程中,管理员不但可以设置权限和站点安全的继承关系,而且还可以选择要应用的设置,包括验证方法、访问许可、IP地址限制等设置。权限与安全设置过程如下:

  1. 选择“所有任务” -“权限向导”命令,打开“权限向导”对话框。单击“下一步”按钮,打开“安全设置”对话框。

  2.如果要从父站点或者虚拟目录继承安全性设置,应选择“继承所有的安全设置”单选按钮;如果需要选取新的安全性设置,应选择“请从模板选取新的安全设置。

  3. 单击“下一步”按钮,打开“ windows 目录和文件权限”对话框。

  4. 如果要保持Windows目录和文件权限,应选择“保持目录和文件权限”单选按钮;如果要保持原来windows目录和文件权限并加入新设置的权限,应选择“原封不动地保持当前的目录和文件许可配置,并加入推荐的许可权限”单选按钮。这里选择“推荐替换全部的目录和文件访问权限”单选按钮,以新设置的权限替换原有的目录和文件权限。

  5. 单击“下一步”按钮,打开“安全摘要”对话框,在设置列表框中选择要应用的设置,包括验证方法、访问许可、IP地址限制和文件ACL将不能被修改等设置。

  6. 单击“下一步”按钮,打开“您已成功的完成IIS 5.0“权限向导”对话框,再单击“完成”即可完成设置。

  五、安全认证

  在windows 2000中,对于通过HTTP协议访问,Internet 信息服务提供了三种登录认证方式,它们分别是匿名方式、明文方式和询问/应答方式。用户采用那种方式取决于用户建立Internet信息服务器的的目的。

  如果用户建立站点的目的是为了做广告,那么可以选择匿名方式。因为访问者中的大多数是第一次访问用户的站点,用户不可能也没有必要为他们建立帐户。如果希望通过自己的Internet信息服务器为访问者提供电子邮件寄存或信息交付等网络服务,则需要选用明文方式。因为在这种方式下,访问者必须使用用户名和密码进行访问,可有效的保护私人邮件或信息的安全性。如果用户的Internet信息服务器的访问者主要是企业内部的员工,并且希望服务器中的信息受到最安全的保护,可选择询问/应答方式。这种方式要求访问者在访问之前先进行访问请求,在得到许可后才可进行访问;这样,访问者对用户服务器的访问在用户直接控制下进行。不过这种方式要求访问者使用的浏览器必须是IE浏览器,因为其他浏览器不支持这种认证方式。

  由于在许多Internet信息服务器上,对Web、ftp及SMTP虚拟服务器的访问都是匿名的,本节就以匿名访问为例介绍如何进行安全认证设置。

  1. 单击“目录安全性”选项卡。

  2. 在“匿名访问和验证控制”选项区域中,单击“编辑”按钮,打开“验证方法”对话框。

  3. 要选择匿名认证方式,启用“匿名访问”复选框,并单击“编辑”按钮,打开“匿名账号”对话框进行设置。