很多朋友在用IIS6架网站的时候遇到不少问题,而这些问题有些在过去的IIS5里面就遇到过,有些是新出来的,俺忙活了一下午,做了很多次试验,结合以前的排错经验,做出了这个总结,希望能给大家帮上忙: 问题1:未启用父路径
0 E; d9 l$ ~# Q. F H
1 ~9 b, o5 m( ?6 d$ [ 症状举例:) S4 J) |3 M7 I" I7 f
% U' f6 f6 G* H
Server.MapPath() 错误 ASP 0175 : 80004005" t6 I5 g5 R/ G/ Y& j
0 J$ ~( S4 s! \+ S
不允许的 Path 字符
2 c" m& O* e7 H" D1 L
8 V0 @! e* G( ~5 x /0709/dqyllhsub/news/OpenDatabase.asp,行 4
6 d' v2 k4 l8 K0 k# T' e% x
s( W0 l) H& A, ]; m 在 MapPath 的 Path 参数中不允许字符 ...
) J2 C$ E' E& C& V) X( M
9 e8 {7 n& ]5 P+ N3 j1 s! Y' B 原因分析:
( O' X" N/ X# v
! Q& r0 a' v& d3 `3 R: f 许多Web页面里要用到诸如../格式的语句(即回到上一层的页面,也就是父路径),而IIS6.0出于安全考虑,这一选项默认是关闭的.
# A' M9 ^* c& K
- ]8 |8 B; I# e$ `# x2 x 解决方法:; B) J) g1 _4 C0 C* }' W0 [% ^
+ B( G" l n7 ~8 ]% v 在IIS中属性->主目录->配置->选项中.把"启用父路径"前面打上勾.确认刷新.: o7 T0 @0 N: z: R& K; t/ Z H
( O% ~3 ]8 h4 t) M
问题2:ASP的Web扩展配置不当(同样适用于ASP.NET、CGI)/ J i3 x: U& |. Q
8 j5 e& d8 @) }1 P$ H2 J
症状举例:
! z& o& y0 J2 k! T
. R+ H& k' z+ g' D9 M, B" Z6 w HTTP 错误 404 - 文件或目录未找到./ K6 E+ q: P: u( p4 E2 o+ W
( t) ?( x5 P7 b" u* K
原因分析:
& F" p/ K0 r, I9 W9 D, m. m6 ^, E; A, g0 [+ t
在IIS6.0中新增了web程序扩展这一选项,你可以在其中对ASP、ASP.NET、CGI、IDC等程序进行允许或禁止,默认情况下ASP等程序是禁止的.4 Z' f! j. j S$ [
0 N5 k4 @4 }5 u R- h 解决方法:
T/ T' P3 C5 `* h! m- |: {) ^
( q) e1 ?& N/ ]" s' a 在IIS中的Web服务扩展中选中Active Server Pages,点击"允许".
$ ^) @" z: u8 v/ @7 f0 {6 i" b" E) b+ |- S5 @9 A: ?2 G
问题3:身份认证配置不当
( \3 G6 R" W5 {$ i, }- Y$ ^& r& F
症状举例:
4 p6 U( K, A6 A& k: l" m/ _+ l% K3 j1 i0 o, _+ D- P
HTTP 错误 401.2 - 未经授权:访问由于服务器配置被拒绝.
( { e: A1 q$ c3 B1 d2 Z
* J5 J8 G$ P3 J; o 原因分析:IIS 支持以下几种 Web 身份验证方法:& T5 H; f' [+ J3 s6 a
& K, V. \2 Q( a 匿名身份验证1 M$ y* o _7 v
- `7 I$ D5 y) N) c0 [ IIS 创建 IUSR_计算机名称 帐户(其中 计算机名称 是正在运行 IIS 的服务器的名称),用来在匿名用户请求 Web 内容时对他们进行身份验证.此帐户授予用户本地登录权限.你可以将匿名用户访问重置为使用任何有效的 Windows 帐户.6 i2 D9 }5 b: q2 s3 k) j/ O0 s5 A, Y
) ^$ r7 w& `* H$ G 基本身份验证+ h, z) r- } E" O6 e* C
+ P* [1 X& r u9 v 使用基本身份验证可限制对 NTFS 格式 Web 服务器上的文件的访问.使用基本身份验证,用户必须输入凭据,而且访问是基于用户 ID 的.用户 ID 和密码都以明文形式在网络间进行发送.* I S2 e0 ~0 b7 `% g$ V- x
& |& ~) G# k. o5 j% y
Windows 集成身份验证
( X4 e% D5 W4 r& w* j+ Z, J5 N& [* o+ g% x
Windows 集成身份验证比基本身份验证安全,而且在用户具有 Windows 域帐户的内部网环境中能很好地发挥作用.在集成的 Windows 身份验证中,浏览器尝试使用当前用户在域登录过程中使用的凭据,如果尝试失败,就会提示该用户输入用户名和密码.如果你使用集成的 Windows 身份验证,则用户的密码将不传送到服务器.如果该用户作为域用户登录到本地计算机,则他在访问此域中的网络计算机时不必再次进行身份验证.
d" \6 K9 w/ p) z
0 Q% J9 o/ }1 f# x& U7 N- u" ^9 D* f 摘要身份验证5 U9 {$ T' D6 d7 o0 {# H
* h& L; o) a% e 摘要身份验证克服了基本身份验证的许多缺点.在使用摘要身份验证时,密码不是以明文形式发送的.另外,你可以通过代理服务器使用摘要身份验证.摘要身份验证使用一种挑战/响应机制(集成 Windows 身份验证使用的机制),其中的密码是以加密形式发送的.
4 H9 z; V( D' K- n
$ w+ I2 D' }0 J- j .NET Passport 身份验证! w5 }* o, n6 r1 o: I
6 S. A6 l7 B! k( v, _( @) M Microsoft .NET Passport 是一项用户身份验证服务,它允许单一签入安全性,可使用户在访问启用了 .NET Passport 的 Web 站点和服务时更加安全.启用了 .NET Passport 的站点会依靠 .NET Passport 中央服务器来对用户进行身份验证.但是,该中心服务器不会授权或拒绝特定用户访问各个启用了 .NET Passport 的站点.
0 U1 a5 c7 Q J3 u0 }0 E* X+ [7 r- w
解决方法:. L" f8 h9 n+ Q5 Z
* Y9 i/ x7 w g4 b" ` 根据需要配置不同的身份认证(一般为匿名身份认证,这是大多数站点使用的认证方法).认证选项在IIS的属性->安全性->身份验证和访问控制下配置
: ?* q0 O( h/ i3 q- L5 m3 `, Y+ ~ ^1 _$ [$ }1 F# h8 ~" J3 a r
问题4:IP限制配置不当
. {9 L7 \" j/ N% d* Z4 @+ f" e8 x( g. |# W
症状举例:
% V! g0 O( d ]# a. f# K/ u1 q/ r/ W( b5 }
HTTP 错误 403.6 - 禁止访问:客户端的 IP 地址被拒绝.) H6 w' F8 Z* D
9 U2 K2 r/ ?7 @" M' a+ z9 { 原因分析:
1 P. u A" k4 s5 f4 {% z$ @: W3 g/ |1 C( T$ R+ M* J. z/ M
IIS提供了IP限制的机制,你可以通过配置来限制某些IP不能访问站点,或者限制仅仅只有某些IP可以访问站点,而如果客户端在被你阻止的IP范围内,或者不在你允许的范围内,则会出现错误提示.
: {) H3 s' M. i; z4 H g! a; Z$ g
6 A7 n O$ M/ f 解决方法:2 U) ~# I7 a# a! g, I' X( |
/ t! Q' P* }0 n7 | o# X, y. m. C 进入IIS的属性->安全性->IP地址和域名限制.如果要限制某些IP地址的访问,需要选择授权访问,点添加选择不允许的IP地址.反之则可以只允许某些IP地址的访问.) P b7 A. N) |$ T
( G z+ Q/ z; w
问题5:IUSR账号被禁用
% {# j, j; R% M/ L' I: m, a. z( {* g2 K: f* e. H
症状举例:
- P/ i/ G6 S( Y0 E# l6 c( [5 k# O7 r, |6 U
HTTP 错误 401.1 - 未经授权:访问由于凭据无效被拒绝.
: p2 Y9 ^7 `! ~# q3 I8 t' N% m
/ D2 E+ N$ y# A0 E 原因分析:7 x. b9 B% Q9 _" D
: x* g- J7 {: Q$ x K! h; X) g
由于用户匿名访问使用的账号是IUSR_机器名,因此如果此账号被禁用,将造成用户无法访问.
2 w( g9 v$ {* }' B1 Q& x3 W Z: i6 b) J3 [
解决办法:& f7 {2 F- Y" a4 `7 p7 I% I! G5 s9 s
+ s, o [/ s' R6 k5 h
控制面板->管理工具->计算机管理->本地用户和组,将IUSR_机器名账号启用.
6 W! Y) ]) j2 s7 n
1 u0 r: G, @$ B 问题6:NTFS权限设置不当
2 x; {0 m- ^' w* a! E7 _2 M& y, f+ J) i) N
症状举例:. M8 j* A9 _2 q- V1 R. Q. i6 {
% y$ J/ w; m* K3 s6 E) v
HTTP 错误 401.3 - 未经授权:访问由于 ACL 对所请求资源的设置被拒绝.; i, E, s, a v' h5 z) }* F
0 [' G# k, H+ m2 L/ D1 o 原因分析:
, O, b2 L8 j7 i, f% P5 M
& S0 v6 d* ^4 `5 I Web客户端的用户隶属于user组,因此,如果该文件的NTFS权限不足(例如没有读权限),则会导致页面无法访问.
2 U7 ~4 X6 N( R% d5 A ?
; X; I: X* a n( T0 Q 解决办法:
; p1 G. J6 h% u8 g/ `3 ?3 M* T+ t0 g
* c' W/ y( I' M0 e: c- A: H 进入该文件夹的安全选项卡,配置user的权限,至少要给读权限.关于NTFS权限设置这里不再馈述.& F) f( A) O- b- {* t
- c- _$ v% D* q
问题7:IWAM账号不同步: Z* O' Q" x4 W# V5 r3 F
* {2 @# c% x- v9 X6 X 症状举例:; L* u6 k# L# l& k7 _ B% `
: l2 n! o0 W- j. v% s/ p+ N HTTP 500 - 内部服务器错误5 H( ~. I& @# E! F5 ~4 [9 [
, n% v \( P+ P2 j. r9 F) h 原因分析:
( q7 Q& m; q2 m
& {! H d9 d/ Y! m, e" ]7 { IWAM账号是安装IIS时系统自动建立的一个内置账号.IWAM账号建立后被Active Directory、IIS metabase数据库和COM+应用程序三方共同使用,账号密码被三方分别保存,并由操作系统负责这三方保存的IWAM密码的同步工作.系统对IWAM账号的密码同步工作有时会失效,导致IWAM账号所用密码不统一.$ E8 {" D, c# ~8 |
3 _9 M9 j5 q, ^ W* r 解决办法:6 @, M% w. O: J4 y3 ?' W. q8 S
. |) y# E' B `* R3 O! i
如果存在AD,选择开始->程序->管理工具->Active Directory用户和计算机.为IWAM账号设置密码.
5 O: x# x5 ]2 Z1 E& l7 g% _) r- q8 [5 |& X
运行c:\Inetpub\AdminScripts>adsutil SET w3svc/WAMUserPass +密码 同步IIS metabase数据库密码2 t* {# @1 Z/ r' `: I
" ]1 b ] S; F9 x; \ H- d5 X 运行cscript c:\inetpub\adminscripts\synciwam.vbs -v 同步IWAM账号在COM+应用程序中的密码
8 m0 O/ n6 v& Y8 R5 E3 j1 c" G& a; c7 e8 G+ U& v
问题8:MIME设置问题导致某些类型文件无法下载(以ISO为例)
; D- X! g5 V: @8 g8 o0 l6 v0 j/ M- H Z4 p) }
症状举例:% S: u; [& g! k5 O4 Y* ^' D
# r5 t; z+ s& {: y9 m% H3 ]& W0 n HTTP 错误 404 - 文件或目录未找到.' x8 m& ]5 D+ k5 z. Y$ [( ^# {5 Q) \0 \
! t# U! n3 V* b% s! Y8 h: u" s* @
原因分析:
: \6 _" H, k2 F; h, Q% U6 `
) i/ ?- C1 A( f9 e IIS6.0取消了对某些MIME类型的支持,例如ISO,致使客户端下载出错.
$ l4 Z- o8 L( ~( b* `" [# A3 I! J2 s6 J; d2 E( f
解决方法:+ v6 D4 |# b6 a5 ~8 U/ }) ~
, z$ d" D1 }0 \) S' K' t! q* | 在IIS中属性->HTTP头->MIME类型->新建.在随后的对话框中,扩展名填入.ISO,MIME类型是application.
6 X2 B4 }( \0 O$ L" D a* {8 Y. d, W D: y& b
另外,防火墙阻止,ODBC配置错误,Web服务器性能限制,线程限制等因素也是造成IIS服务器无法访问的可能原因,这里就不再一一馈述了.
- G, B3 H5 v# J5 e3 t' q( {+ q/ q |