|
|
很多朋友在用IIS6架网站的时候遇到不少问题,而这些问题有些在过去的IIS5里面就遇到过,有些是新出来的,做了很多次试验,结合以前的排错经验,做出了这个总结,希望能给大家帮上忙。
2 m' b! [' n& i7 ?8 ~& W/ S& z
@3 m: e. y/ x9 D问题1:未启用父路径$ I2 X* q# G9 x" b/ T4 L' K
症状举例: / g; G8 S& a- m: k ]
' R y/ V2 o/ _* W Server.MapPath() 错误 \'ASP 0175 : 80004005\'
; T( A) u; h \6 r0 Y! @
: v$ K+ i+ H$ @, u- z& D0 X 不允许的 Path 字符! k5 A0 C3 P7 R& w9 ~9 ^( k7 t( D
3 i i7 E: w4 G$ Q0 g8 o0 t /0709/dqyllhsub/news/OpenDatabase.asp,行 4
: O; [8 a, ?& A/ T, L; c
& D( ?) J; T( h6 M 在 MapPath 的 Path 参数中不允许字符 \'..\'。
5 r* A1 ~$ `: G+ Z2 v( |# V* G0 ?( ]% u8 @
- T( a( y) c& |
原因分析:
1 i0 }% o( h' D* S% N# j3 Z+ Y
/ Q& _, A$ C) x9 g# S 许多Web页面里要用到诸如../格式的语句(即回到上一层的页面,也就是父路径),而IIS6.0出于安全考虑,这一选项默认是关闭的。 如果是使用LEADBBS论坛的朋友就要注意了,DV的不会出现问题。! h& j3 t' \5 E
1 F1 j2 A' g+ u* q解决方法:5 F( z$ [' @' z3 [
$ W1 V* x6 r* X. r# c
在IIS中属性->主目录->配置->选项中。把”启用父路径“前面打上勾。确认刷新。- [8 a8 T9 h0 Q8 d% j- A4 V- j
0 _- r* a1 o& [7 U; R- Z
问题2:ASP的Web扩展配置不当(同样适用于ASP.NET、CGI)
3 n5 i3 a2 h3 ^# G6 K2 q. H' a& N& c0 g% M* A9 X, C0 W
症状举例:
2 s, O3 t" `) O* G/ w
; K% j7 N0 n4 x. ~9 T0 {; r1 GHTTP 错误 404 - 文件或目录未找到。 ]) q$ m; Z* I4 a! B) P6 A3 W
$ @5 e& G) l6 w: V# j; k4 W原因分析:
7 m& N& S8 m' ]6 _+ l% @
6 K( K4 h; g6 m) u6 O
9 j' V8 p5 ]7 K( X d$ |+ L 在IIS6.0中新增了web程序扩展这一选项,你可以在其中对ASP、ASP.NET、CGI、IDC 等程序进行允许或禁止,默认情况下ASP等程序是禁止的。1 H. g7 H6 K6 ]
) }' n! V( a! l4 L& ]: M解决方法:
7 X* d" l8 w# H( d
: w% i: ]1 g7 {6 Y4 A在IIS中的Web服务扩展中选中Active Server Pages,点击“允许”。
8 S" V f0 A. y/ A- t
/ N0 S) l) Q$ V问题3:身份认证配置不当
3 X6 W5 T, M$ t2 l8 @$ n
$ u$ u: s0 v# {+ ?症状举例:0 t8 P1 U+ \+ N' Z T
: z$ `/ ]2 y9 t( W& ^
HTTP 错误 401.2 - 未经授权:访问由于服务器配置被拒绝。( q4 L+ c/ ?9 g8 L1 \" v
- D3 P1 [( V* B+ `" a4 F' [原因分析:4 d. w$ V/ t" Q
( n" G8 e" R: }* [* \. O. A0 W
IIS 支持以下几种 Web 身份验证方法:# o) t5 a6 ]& M' W5 o
: u5 E2 r# ?) M- Y; H, B1 h9 S6 Q4 U(1)匿名身份验证; b- W$ G( P& C( B( y# y& |
# \+ h3 O0 }& @ IIS 创建 IUSR_计算机名称帐户(其中计算机名称是正在运行 IIS 的服务器的名称),用来在匿名用户请求 Web 内容时对他们进行身份验证。此帐户授予用户本地登录权限。你可以将匿名用户访问重置为使用任何有效的 Windows 帐户。- Q) w5 q' t7 n+ o# Y1 t
/ D# Y9 I" ]( i4 Y
(2)基本身份验证
& j$ K$ ]" u6 x$ X3 Q6 n; E8 O( r) u) N, ~, m- K1 u
使用基本身份验证可限制对 NTFS 格式 Web 服务器上的文件的访问。使用基本身份验证,用户必须输入凭据,而且访问是基于用户 ID 的。用户 ID 和密码都以明文形式在网络间进行发送。
! \3 H& Z6 i9 e2 d5 \) f2 Y' ~% c9 T6 x1 f+ v
(3)Windows 集成身份验证
; p3 \* K6 I0 Y! M
+ R9 c0 y$ O; S& K Windows集成身份验证比基本身份验证安全,而且在用户具有Windows域帐户的内部网环境中能很好地发挥作用。在集成的Windows 身份验证中,浏览器尝试使用当前用户在域登录过程中使用的凭据,如果尝试失败,就会提示该用户输入用户名和密码。如果你使用集成的Windows身份验证,则用户的密码将不传送到服务器。如果该用户作为域用户登录到本地计算机,则他在访问此域中的网络计算机时不必再次进行身份验证。% p9 m4 h# V) k5 E9 n
% F* k+ u7 K) Z$ @% t z
(4)摘要身份验证
) c9 N2 [2 k0 v$ `5 z' u
; d. H0 e' Y# H7 X) g 摘要身份验证克服了基本身份验证的许多缺点。在使用摘要身份验证时,密码不是以明文形式发送的。另外,你可以通过代理服务器使用摘要身份验证。摘要身份验证使用一种挑战/响应机制(集成 Windows 身份验证使用的机制),其中的密码是以加密形式发送的。
) Q" b; L$ B% D+ [
7 R% ^* u- Z" m% ?/ E/ F) |.NET Passport 身份验证 B9 |5 r$ P' T4 f$ \* W/ F
6 b N" l! ?2 v* Y
Microsoft .NET Passport 是一项用户身份验证服务,它允许单一签入安全性,可使用户在访问启用了 .NET Passport 的 Web 站点和服务时更加安全。启用了 .NET Passport 的站点会依靠 .NET Passport 中央服务器来对用户进行身份验证。但是,该中心服务器不会授权或拒绝特定用户访问各个启用了 .NET Passport 的站点。$ m3 v9 e' \* q0 ^ z
- D9 t2 i G' S; ^+ _解决方法:5 ^/ }" W2 W7 J
' c( i. B6 X- X
根据需要配置不同的身份认证(一般为匿名身份认证,这是大多数站点使用的认证方法)。认证选项在IIS的属性->安全性->身份验证和访问控制下配置。
, a# c# o7 c* v3 @7 Z0 Y/ y
& G. e/ Q n9 b1 ^ n2 p# u* c5 c0 o) b* N
问题4:IP限制配置不当1 e5 M8 Q- {: A) C
, W; J) j( |0 ^% m
症状举例:, k& V1 g# C! G) ^4 y; p: D9 V
. s K& W6 p" ~% o
; D& _6 c9 G p+ F# U. D* P; ?( q
HTTP 错误 403.6 - 禁止访问:客户端的 IP 地址被拒绝。
# k/ `. U' m+ k9 I$ v' z
# C$ ?# o& o* { c原因分析: v( R# F1 j* q
" c- X5 A& ~, {
! B! G4 \1 P" M% p9 ^5 V4 U/ ~% L8 g+ [ IIS提供了IP限制的机制,你可以通过配置来限制某些IP不能访问站点,或者限制仅仅只有某些IP可以访问站点,而如果客户端在被你阻止的IP范围内,或者不在你允许的范围内,则会出现错误提示。8 P0 w# t, k3 g) }9 k2 W
. m! U0 z% A$ b- @. d* g解决方法:
8 m" {# _! i4 v
4 l: [5 e L: Y' e! o9 I进入IIS的属性->安全性->IP地址和域名限制。如果要限制某些IP地址的访问,需要选择授权访问,点添加选择不允许的IP地址。反之则可以只允许某些IP地址的访问。
4 Q3 s! j* p2 Y* V* Q' }
- H3 K; b# c0 D1 v% n; E8 ~. z问题5:IUSR账号被禁用
+ {7 q4 _' m% p' r0 p0 _- ?6 S E" c. f4 N" g
症状举例:
& f0 l( N' r+ t0 Y o' L0 S. V
, y) [* Y4 b. }' r6 }& d
4 B3 o9 L3 N* i! S) T# s HTTP 错误 401.1 - 未经授权:访问由于凭据无效被拒绝。
9 E3 Q& c0 N8 N& m% Z$ x; Z
6 Q+ ~1 y% T* y原因分析:
9 m0 c5 b9 }! K# o: s- `3 t- f4 A# ]: |% G" E! m& J! h) e
# J8 T! w/ y/ {2 ]4 u! U" W8 s 由于用户匿名访问使用的账号是IUSR_机器名,因此如果此账号被禁用,将造成用户无法访问。
) d# t/ L4 |# S# ]9 q
5 x% x! G2 n/ w/ Z: z9 D解决办法:6 v( H1 x1 n: e- A! W
" K; L0 V! N( P2 L控制面板->管理工具->计算机管理->本地用户和组,将IUSR_机器名账号启用。" l2 ~+ t3 A, M* m q4 @" J
. y* L% |, Y+ W" N问题6:NTFS权限设置不当6 x0 p7 y. p' r% h9 }6 c9 @# s7 o
症状举例:
9 W% P0 y& W: M3 n. o9 r6 q! ~8 k# q" ?4 u( p' `* ]! R2 ~. @5 S) X! u
2 D; q9 m: @; [& |8 p
HTTP 错误 401.3 - 未经授权:访问由于 ACL 对所请求资源的设置被拒绝。
* A" @2 L. i' y; U# s) m# T+ G+ v& n; a$ p
原因分析:
' R% e) B. B) g1 {' e- D
9 j; @) V7 f+ w5 m" T/ Y" A8 @3 ]9 E2 T9 \/ `2 E
Web客户端的用户隶属于user组,因此,如果该文件的NTFS权限不足(例如没有读权限),则会导致页面无法访问。% t V9 M: ~8 B& [
- Y' y" g+ v' U8 P0 G% _# ]( R
解决办法:
9 K, S4 |4 x) U4 [! S, s% ~2 ]4 }
9 o6 `; z& E. D3 ^% w/ g6 \ 进入该文件夹的安全选项卡,配置user的权限,至少要给读权限。关于NTFS权限设 置这里不再馈述。7 j2 i( K' u+ u0 Y( P
2 z: ~+ ?" {/ p9 Q
问题7:IWAM账号不同步
8 P' X* d7 J/ I1 [5 M! @% Z+ q! j4 ~6 `' L
注意:这个问题经常出现!!!!0 n2 {( D, f/ j
症状举例:
; e* Z' h) H2 z) d" I. n0 W2 D8 Q
7 Z! k* z% T1 E& l" s2 L HTTP 500 - 内部服务器错误
. o0 h5 S. G+ k, [, N
9 r% o& n/ e/ J- B1 \原因分析:# Q9 x* n1 O% U/ p6 [
* Y' }$ r- b- @3 `+ U! y/ @
4 z S4 F' v- p5 p2 ~ IWAM账号是安装IIS时系统自动建立的一个内置账号。IWAM账号建立后被Active Directory、IIS metabase数据库和COM+应用程序三方共同使用,账号密码被三方分别保存,并由操作系统负责这三方保存的IWAM密码的同步工作。系统对IWAM账号的密码同步工作有时会失效,导致IWAM账号所用密码不统一。
( F' o1 q; L v# a6 j+ ~! v/ p V' E/ \( m4 v
解决办法:. B& U0 }9 E' Q0 v7 F, v% `
3 C" H9 G& q- f' m, V8 Y- U7 a, P/ v& W' d
如果存在AD,选择开始->程序->管理工具->Active Directory用户和计算机。为IWAM账号设置密码。运行c:\Inetpub\AdminScripts>adsutil SET w3svc/WAMUserPass +密码同步IIS metabase数据库密码运行cscript c:\inetpub\adminscripts\synciwam.vbs -v 同步IWAM账号在COM+应用程序中的密码# x5 ?. ^) T" y3 V2 d) j0 R
" U* r, l; a9 j3 V8 u: X
问题8:MIME设置问题导致某些类型文件无法下载(以ISO为例)
9 G7 m; Y; G% }0 A5 m- I" S: r2 U' U1 c" h
症状举例:/ U/ E u* v5 e
5 L z# S# s3 O, M- \) r
HTTP 错误 404 - 文件或目录未找到。, r' H+ |8 D/ N: m; o
. F" T. y; Y6 U: k$ q
原因分析: W* D, E0 P& b/ f
l' p u" z( Y' I7 R IIS6.0取消了对某些MIME类型的支持,例如ISO,致使客户端下载出错。 k, C5 }$ d2 \( n& I1 J
4 I& i' P) ]5 J* Q" J; r- U解决方法:
2 q6 @/ w1 a( _+ [ H2 O' X5 H) q& I. r9 Q5 y" \6 u: K1 C
在IIS中属性->HTTP头->MIME类型->新建。在随后的对话框中,扩展名填入.ISO,MIME类型是application。. w( R5 w5 b' @5 D& _5 P
: y( i( y, ~& [% t$ I另外,防火墙阻止,ODBC配置错误,Web服务器性能限制,线程限制等因素也是造成IIS服务器无法访问的可能原因,这里就不再一一馈述了。
- n% y S: ^' E1 v( S: U |
|