|
|
很多朋友在用IIS6架网站的时候遇到不少问题,而这些问题有些在过去的IIS5里面就遇到过,有些是新出来的,做了很多次试验,结合以前的排错经验,做出了这个总结,希望能给大家帮上忙。' S p& F1 c+ u {8 O* f; _
7 q" C6 S& R. p0 E! O/ } u问题1:未启用父路径
6 G1 W! r/ f3 k9 V' X' ^7 }: B$ K症状举例: * ]0 O, S# R% b
" S* r, R" ^( d- h( v1 M. F Server.MapPath() 错误 \'ASP 0175 : 80004005\'
$ A* @' e% }% y& k# ^5 U
6 B- [, ~! h) V4 i; h0 q8 {4 n 不允许的 Path 字符* A# S2 U1 V' i
% b4 b& ^; P4 s- C /0709/dqyllhsub/news/OpenDatabase.asp,行 4
) S5 j& _4 x5 u) S% a w/ b# a1 ~% B1 Z: H l# G
在 MapPath 的 Path 参数中不允许字符 \'..\'。
$ @9 b8 ]3 m- @/ y2 {% P' O
: l! D0 ~4 I* x0 n2 ~. `: d/ R' Z7 i% |9 C8 b$ ]; g
原因分析:0 f1 z( @" B/ I& t! R
' r4 A! r1 f1 @" b% g, A 许多Web页面里要用到诸如../格式的语句(即回到上一层的页面,也就是父路径),而IIS6.0出于安全考虑,这一选项默认是关闭的。 如果是使用LEADBBS论坛的朋友就要注意了,DV的不会出现问题。8 y4 _) y# Q# Q8 R) x% p: A- y, i
: ~9 z6 z, h+ W* R% o4 `; |( h$ R- h1 m
解决方法:- ?1 r' ~7 L6 l. X" w! v$ A
8 T) `+ C+ e& u# ^+ m7 `
在IIS中属性->主目录->配置->选项中。把”启用父路径“前面打上勾。确认刷新。
- a, x! }; j3 |3 T2 `$ [( b' Y- g. M& O( K0 |- z
问题2:ASP的Web扩展配置不当(同样适用于ASP.NET、CGI)
' Q; T. e6 x6 x2 q& N& s' a! }. I3 O3 Q7 U
症状举例:
8 @9 N b' e X' K/ j: E/ O9 E7 | C9 ^2 W* {
HTTP 错误 404 - 文件或目录未找到。
) S6 R2 ` X( R& e, F* X3 y `. g. G( R3 F
原因分析:. P/ [* l) p% b `1 A* I. Q
9 M4 A2 f H, x) u$ Z: E Q! w3 A3 f6 r+ P( H9 L4 K; M+ T, ?
在IIS6.0中新增了web程序扩展这一选项,你可以在其中对ASP、ASP.NET、CGI、IDC 等程序进行允许或禁止,默认情况下ASP等程序是禁止的。3 @3 J3 i% o }
9 d# H# |7 [6 m: H% T, k0 D解决方法:- C: ]% t9 o! Q5 ?& M+ q) P i. v
0 W: x: L% a6 f: m9 G" e$ @( ^在IIS中的Web服务扩展中选中Active Server Pages,点击“允许”。
% W! `+ W! f& p; L
9 W& q3 s( A" x' q. T! W问题3:身份认证配置不当
+ L! u8 ]/ Q: {7 p; [# ?$ o! c9 x4 ?* N" x
症状举例:0 z' N4 k- G7 \, U1 G6 Q/ G! {
9 L: u- Y! N% X& U HTTP 错误 401.2 - 未经授权:访问由于服务器配置被拒绝。
( `: K% @* v/ |% J+ o1 k
3 m& T; H6 \* f; M; z1 n# O g原因分析:+ s, ~+ [# c3 P. z; W
6 ?/ c/ D+ \3 x( B: f/ \5 b1 t
IIS 支持以下几种 Web 身份验证方法:
2 M- o( b1 d( f: F) }: i$ E1 t+ ~0 f% p4 a3 S9 ~ `, Q" M1 ~
(1)匿名身份验证
8 [& {2 N; o4 m' Y, R- h/ S1 @9 Y6 i0 A. k, ]6 E
IIS 创建 IUSR_计算机名称帐户(其中计算机名称是正在运行 IIS 的服务器的名称),用来在匿名用户请求 Web 内容时对他们进行身份验证。此帐户授予用户本地登录权限。你可以将匿名用户访问重置为使用任何有效的 Windows 帐户。' f5 I# f$ N3 w/ U6 B
7 d- B5 X2 Y# D5 a! p3 U a" Q4 R8 e
(2)基本身份验证3 h2 ?" b0 w3 x a
8 O7 I- H9 N( y3 L8 J 使用基本身份验证可限制对 NTFS 格式 Web 服务器上的文件的访问。使用基本身份验证,用户必须输入凭据,而且访问是基于用户 ID 的。用户 ID 和密码都以明文形式在网络间进行发送。. ?1 @* l Y& X4 R, |: [8 c
: E9 j2 Q4 @) F( g: `
(3)Windows 集成身份验证# |' l4 V" q. C( O& r. f
; w4 X; @: m# e {+ z# x( R
Windows集成身份验证比基本身份验证安全,而且在用户具有Windows域帐户的内部网环境中能很好地发挥作用。在集成的Windows 身份验证中,浏览器尝试使用当前用户在域登录过程中使用的凭据,如果尝试失败,就会提示该用户输入用户名和密码。如果你使用集成的Windows身份验证,则用户的密码将不传送到服务器。如果该用户作为域用户登录到本地计算机,则他在访问此域中的网络计算机时不必再次进行身份验证。) r' I9 d( f3 N3 \7 P
8 ]7 P& M/ d' W7 m& Y
(4)摘要身份验证1 o( ~: m) Y+ H" s& V, p
^: w0 R& @- v" ~0 t1 E
摘要身份验证克服了基本身份验证的许多缺点。在使用摘要身份验证时,密码不是以明文形式发送的。另外,你可以通过代理服务器使用摘要身份验证。摘要身份验证使用一种挑战/响应机制(集成 Windows 身份验证使用的机制),其中的密码是以加密形式发送的。
q' ?: g0 N' c/ t7 g) N6 g
5 m) B( R) L1 G) w Q/ U- }.NET Passport 身份验证
6 @2 ]$ Y6 N/ j* P( d6 D6 V1 F8 S! _# p; E6 H* j
Microsoft .NET Passport 是一项用户身份验证服务,它允许单一签入安全性,可使用户在访问启用了 .NET Passport 的 Web 站点和服务时更加安全。启用了 .NET Passport 的站点会依靠 .NET Passport 中央服务器来对用户进行身份验证。但是,该中心服务器不会授权或拒绝特定用户访问各个启用了 .NET Passport 的站点。$ ~% u% K6 t3 w) O3 z
- f, M, \" _, ~# s: q. V4 p解决方法:
5 K0 P1 T3 `: P% l
5 M2 }: @! e0 r9 m# r根据需要配置不同的身份认证(一般为匿名身份认证,这是大多数站点使用的认证方法)。认证选项在IIS的属性->安全性->身份验证和访问控制下配置。7 D: E0 X" x) E. Y& E
, y/ `! I: C$ S4 c) M m( i7 r1 u" @3 q" A' \- A+ T
问题4:IP限制配置不当- g/ G$ B3 B; V: V
0 P# A/ F7 ~) x7 ?" Z: Y
症状举例:
2 i( `, g b: c" K. G: X: C0 F4 l8 e+ u5 Q, s
# n' D8 G0 {: f! e6 g ]
HTTP 错误 403.6 - 禁止访问:客户端的 IP 地址被拒绝。* {) n: Q n2 F B5 X% [2 R3 G
$ {' x1 a. I) @# ~原因分析:
y+ P- T6 E, H) r$ X, E
" B, N2 Z. ~. ?+ p$ T# q# {% G( v' }+ t1 l+ ?3 p# f
IIS提供了IP限制的机制,你可以通过配置来限制某些IP不能访问站点,或者限制仅仅只有某些IP可以访问站点,而如果客户端在被你阻止的IP范围内,或者不在你允许的范围内,则会出现错误提示。& T$ B/ h, h/ T. s; T
6 s, F" P' ]6 J解决方法:7 B% |1 e' e ~( h
9 q' ^% D H/ j8 a
进入IIS的属性->安全性->IP地址和域名限制。如果要限制某些IP地址的访问,需要选择授权访问,点添加选择不允许的IP地址。反之则可以只允许某些IP地址的访问。8 B- u8 H$ ?# V
8 p9 g& ]& `6 F- ?/ U
问题5:IUSR账号被禁用9 |' r( _; X. R1 |# D4 B4 I( F4 z& {
. Y5 |7 @$ w4 J2 R; T
症状举例:* X9 B1 c: U4 J; E7 [ n
! e( O# X# P; P
/ k# \ W% t" m# q/ s1 n HTTP 错误 401.1 - 未经授权:访问由于凭据无效被拒绝。) F7 r, Z) B1 O1 X# o
3 S: a2 V7 v2 l, O5 Q- n* W5 v: H, r
原因分析:; R X3 f0 A5 K: H7 [' E
2 f2 v6 w- Z" Z- {: r. ~% I% u+ h7 h
由于用户匿名访问使用的账号是IUSR_机器名,因此如果此账号被禁用,将造成用户无法访问。1 O4 B: g, D9 y# t1 q/ w1 E
/ u$ y! Z. L* |1 @- A5 X: k解决办法:5 Q: Q) z ]/ L7 g& V
$ Q7 L! T$ z% t7 @5 @+ Y6 j- W控制面板->管理工具->计算机管理->本地用户和组,将IUSR_机器名账号启用。8 U7 H# U: w/ A( P' j- Q9 q
) _: x1 [( _% o- u1 e4 [& W% n问题6:NTFS权限设置不当- v1 y' t1 ^4 }! }) S
症状举例:
9 D& J3 X u5 a
. B. D3 f! Q9 Q/ e, }! I: L* E/ ?$ s c. C& G
HTTP 错误 401.3 - 未经授权:访问由于 ACL 对所请求资源的设置被拒绝。8 `7 s% H# o5 ^; u4 n& v
3 P; S1 ^6 g& u1 k1 K5 G5 M原因分析:
' L# d1 o+ U0 m* B! f! K. c) \6 n. m% C& k" ^% F" u' h
, H6 H# Z8 Z0 t% }/ G& ?4 ?$ t
Web客户端的用户隶属于user组,因此,如果该文件的NTFS权限不足(例如没有读权限),则会导致页面无法访问。; ]9 j4 D/ ^+ J4 D4 L5 R
" s( u2 l7 E u解决办法:$ s. _1 w( N0 x6 k) V5 f
7 f+ Q: l, ]2 ~/ U% W3 U; `' o/ z9 L7 W0 J5 k
进入该文件夹的安全选项卡,配置user的权限,至少要给读权限。关于NTFS权限设 置这里不再馈述。( o" H* Z3 \; h J( _( [
6 L7 K' d0 }! C, u: E9 _
问题7:IWAM账号不同步. ~$ o$ u! f$ U7 X9 b0 e
9 K8 T0 o/ V* `3 g9 a注意:这个问题经常出现!!!!
5 p+ v) V. z A) t7 J6 H# r6 _4 O症状举例:! m9 U6 r6 d; {. G) C( N4 | D4 z
+ D4 ~8 H+ i/ w4 t0 {0 ^# w9 a. N
( ^0 w/ o: S0 b HTTP 500 - 内部服务器错误
4 w! x8 p& ~3 `6 k+ H! R. u( _$ ^) i6 O; V2 g+ f
原因分析:2 a. e9 y, d9 K' t. R9 y4 R$ [
/ F& M3 P4 x7 y2 {/ W3 b, b
+ @9 r" i a6 K2 ~ IWAM账号是安装IIS时系统自动建立的一个内置账号。IWAM账号建立后被Active Directory、IIS metabase数据库和COM+应用程序三方共同使用,账号密码被三方分别保存,并由操作系统负责这三方保存的IWAM密码的同步工作。系统对IWAM账号的密码同步工作有时会失效,导致IWAM账号所用密码不统一。; q+ R- S" E2 l' Q0 ~+ U- z
0 h* H6 T, L. k2 S' r, A" m) {
解决办法:
; U* ^9 x. X; @+ s/ b; n5 [/ D, |) m) T$ y
: i; Z9 G. K9 m/ D 如果存在AD,选择开始->程序->管理工具->Active Directory用户和计算机。为IWAM账号设置密码。运行c:\Inetpub\AdminScripts>adsutil SET w3svc/WAMUserPass +密码同步IIS metabase数据库密码运行cscript c:\inetpub\adminscripts\synciwam.vbs -v 同步IWAM账号在COM+应用程序中的密码0 M) _; s: {6 z/ `% n' p
0 ?. g: s, o5 h; ^
问题8:MIME设置问题导致某些类型文件无法下载(以ISO为例)6 n9 C6 e% }4 k0 e
* B Q) h8 m0 f8 j症状举例:
, t, w6 R* }$ J$ l/ _+ K: v
7 u H) ~( b+ ], R HTTP 错误 404 - 文件或目录未找到。4 t) t8 }+ E A$ A) X
( v# x3 ?7 w3 F: ]原因分析:" `' r; H0 _ l }2 l' Z( d
* D) Q. G/ k/ B' p0 ` IIS6.0取消了对某些MIME类型的支持,例如ISO,致使客户端下载出错。7 C/ `, W" J3 L# g8 |
1 c3 a. K/ t( Q8 o解决方法:1 {) D3 R1 m- p
. e$ i% c" f! g/ v 在IIS中属性->HTTP头->MIME类型->新建。在随后的对话框中,扩展名填入.ISO,MIME类型是application。
" S% P# a+ W/ H9 r7 S- \3 P' W$ s8 Y8 @# G5 Y; B# m
另外,防火墙阻止,ODBC配置错误,Web服务器性能限制,线程限制等因素也是造成IIS服务器无法访问的可能原因,这里就不再一一馈述了。* {9 o: l; m1 D! z9 D3 `, `
|
|