|
|
很多朋友在用IIS6架网站的时候遇到不少问题,而这些问题有些在过去的IIS5里面就遇到过,有些是新出来的,做了很多次试验,结合以前的排错经验,做出了这个总结,希望能给大家帮上忙。
$ N6 X& \! S6 L9 R3 x4 }$ j3 b6 y5 r: p# s
问题1:未启用父路径
4 O: m+ b) a2 b. o; }症状举例:
4 y8 v4 Y2 @' X6 b4 @4 _: Y0 E8 ^4 H
Server.MapPath() 错误 \'ASP 0175 : 80004005\'; u( T+ F. J( [: P
" k; w0 a! V' @8 x4 j3 v 不允许的 Path 字符
/ t/ A+ l& {2 M; [5 E
8 d+ O- B! T8 H! r1 m" Z9 e# U- U /0709/dqyllhsub/news/OpenDatabase.asp,行 4
7 } v% U% w) k+ g
" j* w5 p& V4 G( r) n 在 MapPath 的 Path 参数中不允许字符 \'..\'。8 b: ~. D. Q* M3 n: Y- O; f# E
& |9 l6 T3 p9 C5 O3 `# O8 C+ k" o0 L9 R, n; l" _8 T% y0 o) o' G; f
原因分析:
4 o) h. s. V( R& Y2 t
) \; W# C; Y# d4 P9 n1 n 许多Web页面里要用到诸如../格式的语句(即回到上一层的页面,也就是父路径),而IIS6.0出于安全考虑,这一选项默认是关闭的。 如果是使用LEADBBS论坛的朋友就要注意了,DV的不会出现问题。 ~$ T' @8 c. j
& a* d4 \- U: E
解决方法:
' f! a. T% I* z, k9 }6 b& G+ E- B' }$ S8 U' H6 D6 F
在IIS中属性->主目录->配置->选项中。把”启用父路径“前面打上勾。确认刷新。
, j! W! S$ o, z2 T; [5 Q: C! k; W# n, S* H- y4 ?+ K# c ?
问题2:ASP的Web扩展配置不当(同样适用于ASP.NET、CGI)
2 F* P6 A& p; r( P- \; }. k9 B3 f1 Z2 x p, {
症状举例:7 M) e1 b! O( h$ Q8 t2 s
% y( b$ F4 ?& t0 O! `- }1 o" ^
HTTP 错误 404 - 文件或目录未找到。( L7 _* Z/ `% @* V4 p. p! F" Z. Y
9 q* V' K* G! c: v2 Z; y% g
原因分析:0 R: p# d/ p# A$ c- B9 a1 H& C
9 [- ^: z. Z' [* d9 U \
6 |) B& d% N2 [( X `! `( m+ I6 J 在IIS6.0中新增了web程序扩展这一选项,你可以在其中对ASP、ASP.NET、CGI、IDC 等程序进行允许或禁止,默认情况下ASP等程序是禁止的。! Y) }8 U& K2 e9 m: c
3 {* M% ~5 P' p5 }; M6 K解决方法:
9 B9 G; a# [& k+ l0 _ T
) b" y& e+ r8 u在IIS中的Web服务扩展中选中Active Server Pages,点击“允许”。
5 h! h$ R& Q) x9 _8 j3 ?2 e# r+ Q2 o4 ^, J; _
问题3:身份认证配置不当6 E( |+ m/ W5 @/ q1 \" ~7 R
( ~; U# ] d; E/ G4 s9 Q- ^
症状举例:) O i1 v$ ?7 r
) H3 K3 n1 o/ _- W6 \4 |( ?* W, y7 y
HTTP 错误 401.2 - 未经授权:访问由于服务器配置被拒绝。6 |) ]/ k5 b6 t, l% D: ^# x
3 v" t8 Q: N$ G' T/ [
原因分析:5 N" f, r/ Z/ }. P; b
" y5 s7 d! I( q6 c+ f
IIS 支持以下几种 Web 身份验证方法:
% g, R7 Q# {7 f) P. f5 q+ I$ G( @( b/ n
(1)匿名身份验证) o7 E( E @$ O3 B @; }9 N, g7 j
% X* F/ U% u9 C% Q# b0 R1 R IIS 创建 IUSR_计算机名称帐户(其中计算机名称是正在运行 IIS 的服务器的名称),用来在匿名用户请求 Web 内容时对他们进行身份验证。此帐户授予用户本地登录权限。你可以将匿名用户访问重置为使用任何有效的 Windows 帐户。. N5 P7 k' m5 B7 [$ F
# m& c5 h) v4 {) E6 R! L; Y* b(2)基本身份验证+ k9 L$ V1 g7 }# M% U: L6 O% f
1 W; Z/ T6 O2 u/ p
使用基本身份验证可限制对 NTFS 格式 Web 服务器上的文件的访问。使用基本身份验证,用户必须输入凭据,而且访问是基于用户 ID 的。用户 ID 和密码都以明文形式在网络间进行发送。- x3 K( ^7 L' h0 a- s$ R/ c- G' F4 _
_5 W$ U% N% Z& |0 O! q8 e
(3)Windows 集成身份验证
# K4 F( ~% B8 c) N( X8 c4 t D2 r
4 I3 P: y2 e6 Q Windows集成身份验证比基本身份验证安全,而且在用户具有Windows域帐户的内部网环境中能很好地发挥作用。在集成的Windows 身份验证中,浏览器尝试使用当前用户在域登录过程中使用的凭据,如果尝试失败,就会提示该用户输入用户名和密码。如果你使用集成的Windows身份验证,则用户的密码将不传送到服务器。如果该用户作为域用户登录到本地计算机,则他在访问此域中的网络计算机时不必再次进行身份验证。
: Y+ W8 h5 i- P/ L; o5 ]" \* J1 Q# k( P& C
(4)摘要身份验证
$ Z' k. K% [" W$ U, K! U, E' l* r5 U, v
摘要身份验证克服了基本身份验证的许多缺点。在使用摘要身份验证时,密码不是以明文形式发送的。另外,你可以通过代理服务器使用摘要身份验证。摘要身份验证使用一种挑战/响应机制(集成 Windows 身份验证使用的机制),其中的密码是以加密形式发送的。
% {2 z2 \5 {4 s$ O4 O) q' V. O0 o( }3 A3 v+ D _# a
.NET Passport 身份验证! M; F. @- r9 P2 ~# H" c
* x. N9 T% a; z& p/ @Microsoft .NET Passport 是一项用户身份验证服务,它允许单一签入安全性,可使用户在访问启用了 .NET Passport 的 Web 站点和服务时更加安全。启用了 .NET Passport 的站点会依靠 .NET Passport 中央服务器来对用户进行身份验证。但是,该中心服务器不会授权或拒绝特定用户访问各个启用了 .NET Passport 的站点。
. c6 c6 s# Y% Y5 z9 S
" G) e, ]6 k" U0 X7 p$ ]解决方法:
8 d5 j! {- p9 u9 l
, y6 C4 m$ d0 V5 H: u根据需要配置不同的身份认证(一般为匿名身份认证,这是大多数站点使用的认证方法)。认证选项在IIS的属性->安全性->身份验证和访问控制下配置。
- l, j6 X( t {) i a/ _4 u7 m
. l J# V5 {6 m' m/ F5 Q2 V7 {) a. _1 _. b6 h" x: a3 _9 w
问题4:IP限制配置不当
9 }" A+ g/ d+ l4 o. F5 |
; Q+ w+ A. W0 U& \3 X" w症状举例:
3 ?0 l4 v; y! N/ _' K, t
. \3 R/ k( L3 Y( N! b
" f" k1 x- h* I. y) [" c( X HTTP 错误 403.6 - 禁止访问:客户端的 IP 地址被拒绝。6 l' M" X+ E2 J, V
- m$ n5 ?1 k4 i# o" J3 t9 c原因分析:; _1 z3 K. H. N, }
7 J8 d8 {& n# _0 g8 M* l5 i' _ j+ v& d) n
IIS提供了IP限制的机制,你可以通过配置来限制某些IP不能访问站点,或者限制仅仅只有某些IP可以访问站点,而如果客户端在被你阻止的IP范围内,或者不在你允许的范围内,则会出现错误提示。
4 M' [$ i! P" T5 H/ |* d2 j5 F/ n1 A |% {9 G8 c; ^) P M9 \
解决方法:% \! H( t! i" K5 T" G: @4 B
) k1 _& S; \/ _0 g
进入IIS的属性->安全性->IP地址和域名限制。如果要限制某些IP地址的访问,需要选择授权访问,点添加选择不允许的IP地址。反之则可以只允许某些IP地址的访问。6 ?0 b0 l- Z1 U
" @' r4 @* [4 v. D- P0 K
问题5:IUSR账号被禁用
, V2 }& d$ c# Z ?2 r, @+ ~% q" G P) d' |
症状举例:
: _3 `. W3 K1 `- N4 I' V8 g% {0 Z, E( J4 R# x) B2 e; i9 S6 m
+ S/ ~+ Z+ u% S1 w4 m0 e& b1 |8 h* C) ?
HTTP 错误 401.1 - 未经授权:访问由于凭据无效被拒绝。
3 L' `& e; n0 t9 ^& R7 P9 J- A1 U7 e) k' b* ]5 N% [, \
原因分析:1 C+ r/ F# d6 T
2 L" v9 T- x, M2 H: Q" o; h3 h# g, L2 R& N/ s) O
由于用户匿名访问使用的账号是IUSR_机器名,因此如果此账号被禁用,将造成用户无法访问。
: F$ Z( |+ V4 V: O7 T8 L1 [" p/ Y! r7 }5 @
解决办法:# C4 i0 }; {* Y3 ^% y& s7 g
$ A$ K L8 t! ` d5 _8 u
控制面板->管理工具->计算机管理->本地用户和组,将IUSR_机器名账号启用。
$ ^8 S" `5 h' k. k0 P8 K3 V: P, u
9 w9 C& E) s7 V! F! ?0 F4 r3 S问题6:NTFS权限设置不当
3 E- K* K, q j4 U, j症状举例:$ q# j: k/ U! N( G" k) Q
$ P1 L/ l/ Y. T( J8 U: y0 c- v% `+ _
HTTP 错误 401.3 - 未经授权:访问由于 ACL 对所请求资源的设置被拒绝。
" [. K: a1 @2 ~6 C
3 P+ ?! W4 e _% I" U& {+ C; B原因分析:5 i" ~8 b( D- G% v2 V3 H: X6 i2 ]
% M* K5 W, \& j3 u$ {
1 N8 s/ x g9 ?* [, w) j! [
Web客户端的用户隶属于user组,因此,如果该文件的NTFS权限不足(例如没有读权限),则会导致页面无法访问。
6 Y, Q" P2 e. z. V/ Y/ @9 f8 p; |( }4 u8 t+ j X J
解决办法:$ U1 V) f1 T, l6 B0 Q1 b+ j4 n
# U* s! ^# O8 f4 g3 J/ c& ~! [/ C" A, e
8 x$ F9 P' H s 进入该文件夹的安全选项卡,配置user的权限,至少要给读权限。关于NTFS权限设 置这里不再馈述。
) ^+ g) C: c( j7 i s) C% [% ^( _+ L7 {. K
问题7:IWAM账号不同步
# P$ o& b7 I4 Q+ I6 Z3 `% N3 c
5 T$ d" d* N/ w& n3 `7 z o1 `注意:这个问题经常出现!!!!
; Q' ]0 H0 U* b7 V+ a9 W症状举例:
7 n' l$ D4 B: J N8 m) `5 J+ |1 Z9 J
" \ d& Z& |1 E2 S- N% e$ o7 b
HTTP 500 - 内部服务器错误: L5 J" V8 O& H# A5 a
' k+ _/ y# j- c3 H: N
原因分析:1 n( X l0 i) f" }
& K9 x1 J; H( {$ t( E1 m, f
2 `0 f. I7 H& d) m3 ~ IWAM账号是安装IIS时系统自动建立的一个内置账号。IWAM账号建立后被Active Directory、IIS metabase数据库和COM+应用程序三方共同使用,账号密码被三方分别保存,并由操作系统负责这三方保存的IWAM密码的同步工作。系统对IWAM账号的密码同步工作有时会失效,导致IWAM账号所用密码不统一。
: \4 F9 `( ^& L* m
' g* L2 V' L8 w# ^8 I0 {' Z& r @解决办法:
3 S, ~- h: w; n6 p
3 m F2 ~. R6 q! P7 k! s) j) z" y; Q8 t* f) s
如果存在AD,选择开始->程序->管理工具->Active Directory用户和计算机。为IWAM账号设置密码。运行c:\Inetpub\AdminScripts>adsutil SET w3svc/WAMUserPass +密码同步IIS metabase数据库密码运行cscript c:\inetpub\adminscripts\synciwam.vbs -v 同步IWAM账号在COM+应用程序中的密码
, O) w4 p! L, t% m; @1 X
7 M1 ^) B, \& @( h3 X- M: ~* C问题8:MIME设置问题导致某些类型文件无法下载(以ISO为例)
; V8 g/ T9 e R$ q, ~
?3 w0 S) r$ J1 f/ m+ w: \症状举例:
9 ? Y' c$ Q7 x2 s3 U2 Y, d2 J1 N6 P: I5 J, ^; H
HTTP 错误 404 - 文件或目录未找到。) b6 a: |2 C5 I0 t( [! m
3 t' g9 [# e4 I" z3 {* f& a3 m
原因分析:1 B/ Z2 f/ T3 R1 c2 y& [
( ~2 f4 f/ s0 X, r( x& [5 c& a+ [ IIS6.0取消了对某些MIME类型的支持,例如ISO,致使客户端下载出错。
' a3 r3 F3 o- F: C+ N7 ^0 p
1 ]2 U3 c* b0 @解决方法:5 I, f' v. y8 }2 H0 F
6 \0 e" ]. h0 F$ ]$ @4 Y( y7 K
在IIS中属性->HTTP头->MIME类型->新建。在随后的对话框中,扩展名填入.ISO,MIME类型是application。$ y, G- E$ I" h, _9 g
M6 q, m: b! k: \% t3 b
另外,防火墙阻止,ODBC配置错误,Web服务器性能限制,线程限制等因素也是造成IIS服务器无法访问的可能原因,这里就不再一一馈述了。. H4 b) ?) l8 S1 q4 R: k3 _
|
|