|
|
很多朋友在用IIS6架网站的时候遇到不少问题,而这些问题有些在过去的IIS5里面就遇到过,有些是新出来的,做了很多次试验,结合以前的排错经验,做出了这个总结,希望能给大家帮上忙。9 l; K1 l# K0 v/ T
j! q& l& S$ }+ C1 x+ a问题1:未启用父路径
; {; p' }, i5 R# ?- k7 r+ i) k1 T1 m症状举例: $ ?. l1 n5 w% B* [5 c1 }
' K4 n2 ]# A; K' H Server.MapPath() 错误 \'ASP 0175 : 80004005\'
3 `: a5 k. O7 k1 Z9 z, v3 W& {' [, p- _0 d# ^, o$ e; W
不允许的 Path 字符
2 r' i# q4 |; P/ ]6 k' x8 L; }. H$ L4 i7 a7 y
/0709/dqyllhsub/news/OpenDatabase.asp,行 4
; C. e: c; m6 q9 D l8 a7 P
8 P8 ?( g, @3 L4 J 在 MapPath 的 Path 参数中不允许字符 \'..\'。4 G' t6 x( _4 w4 r. u, H1 } K
m' C% K/ ^0 T. U( E+ `0 c( {7 n& c$ T: d3 Q4 D: G
原因分析:
; w& Y/ e" I0 \% Z0 z4 I$ v
8 D; N0 l3 ^* i& v; Z 许多Web页面里要用到诸如../格式的语句(即回到上一层的页面,也就是父路径),而IIS6.0出于安全考虑,这一选项默认是关闭的。 如果是使用LEADBBS论坛的朋友就要注意了,DV的不会出现问题。
# b5 H# p- g; p' m: s+ J2 a7 j6 r
( r# @/ J1 B, a" N, b& ]+ ^解决方法:
$ A7 b. W! q) ^9 \( ]. A/ f7 D' \0 X, S- Z# p$ N% n+ \
在IIS中属性->主目录->配置->选项中。把”启用父路径“前面打上勾。确认刷新。
3 N6 _8 n7 {; U# Q
5 S& [; i' n) s* Q0 O3 A7 E问题2:ASP的Web扩展配置不当(同样适用于ASP.NET、CGI)
! {. F9 y3 \' ^; Q
( Y& v& K3 b. c: j4 \9 Z症状举例:
3 ?/ o' J& G5 a# r: f, V+ }) H; F) f7 n& ~2 G8 w, j1 S+ m& i
HTTP 错误 404 - 文件或目录未找到。2 k3 o$ J1 d) H4 }2 i! Q3 p
* _- G% h3 T, m3 `( ?) M2 G原因分析:' a4 X5 u; ~7 T1 N5 S0 {& [) X
+ @+ _* @5 b& R# }) b- S8 h
1 i, V$ C+ n- L- T2 H" d' n 在IIS6.0中新增了web程序扩展这一选项,你可以在其中对ASP、ASP.NET、CGI、IDC 等程序进行允许或禁止,默认情况下ASP等程序是禁止的。
% T2 Q8 @8 l |0 R% W" f6 Q6 h. D: {% }+ V' L8 A) R# z
解决方法:, K3 F# K2 n3 l' s9 q' Y( O8 u
) K. W w# B* F: {/ D: d3 t4 L在IIS中的Web服务扩展中选中Active Server Pages,点击“允许”。; S; V1 Q" t9 U6 d4 f
% Q9 [: r5 y" U$ O9 U问题3:身份认证配置不当
& r3 S4 b+ V' w& \
: K0 N' C5 {5 n. @2 E& s8 t8 w6 L症状举例:
d& b( V B% p8 f U; `0 M6 h7 X( r8 e
HTTP 错误 401.2 - 未经授权:访问由于服务器配置被拒绝。. Z4 q& _2 X; l, `# [
4 w9 F4 S, s1 r/ n% o" U
原因分析:
. x9 d; @% N9 V/ l% y) a5 T. u' ^! o H- Q+ T
IIS 支持以下几种 Web 身份验证方法:
$ w0 q: t# n# r- S) I+ ?& w* [; _, o6 o9 N* V) ?
(1)匿名身份验证
7 x. B* L& t; ~3 w3 x/ X& q' E: X9 A* T6 X" m$ q6 Q, ^
IIS 创建 IUSR_计算机名称帐户(其中计算机名称是正在运行 IIS 的服务器的名称),用来在匿名用户请求 Web 内容时对他们进行身份验证。此帐户授予用户本地登录权限。你可以将匿名用户访问重置为使用任何有效的 Windows 帐户。, U9 P0 e& i) p. ], t7 `
! ~- o" ~( ~0 R c% W
(2)基本身份验证2 v6 ~' d, I' q2 u& n0 \/ v( k0 k# F. |
5 A3 x8 c! q: p 使用基本身份验证可限制对 NTFS 格式 Web 服务器上的文件的访问。使用基本身份验证,用户必须输入凭据,而且访问是基于用户 ID 的。用户 ID 和密码都以明文形式在网络间进行发送。
- k4 m. d' K: q; y; m' k) V( H
1 ?4 y3 R* c6 k; O \(3)Windows 集成身份验证0 v2 c6 G G5 r2 t& n
; D! H7 s9 Q' I* z' H5 S, X Windows集成身份验证比基本身份验证安全,而且在用户具有Windows域帐户的内部网环境中能很好地发挥作用。在集成的Windows 身份验证中,浏览器尝试使用当前用户在域登录过程中使用的凭据,如果尝试失败,就会提示该用户输入用户名和密码。如果你使用集成的Windows身份验证,则用户的密码将不传送到服务器。如果该用户作为域用户登录到本地计算机,则他在访问此域中的网络计算机时不必再次进行身份验证。
7 |! G3 V$ O# X- W7 B% |! m6 Y2 R
(4)摘要身份验证( \ t) m5 m: P" e) \4 Z% A4 a- I
* ?6 f1 n/ `; `4 d) L
摘要身份验证克服了基本身份验证的许多缺点。在使用摘要身份验证时,密码不是以明文形式发送的。另外,你可以通过代理服务器使用摘要身份验证。摘要身份验证使用一种挑战/响应机制(集成 Windows 身份验证使用的机制),其中的密码是以加密形式发送的。3 H! h- w) R$ c% q/ W7 c. v, d
, F$ Q' q3 C1 k; W3 E. v.NET Passport 身份验证
* T) h! C1 W; {6 g
?; }" ~( ^1 j% E7 N% BMicrosoft .NET Passport 是一项用户身份验证服务,它允许单一签入安全性,可使用户在访问启用了 .NET Passport 的 Web 站点和服务时更加安全。启用了 .NET Passport 的站点会依靠 .NET Passport 中央服务器来对用户进行身份验证。但是,该中心服务器不会授权或拒绝特定用户访问各个启用了 .NET Passport 的站点。0 @6 z" l1 L5 |6 S- {& n* M
+ G$ ]$ W4 ?- h, @+ [! H7 N解决方法:! Y1 L6 ]( D. p% f5 _( T
; n8 T+ R1 N0 h; z, d6 o根据需要配置不同的身份认证(一般为匿名身份认证,这是大多数站点使用的认证方法)。认证选项在IIS的属性->安全性->身份验证和访问控制下配置。
7 L& A7 D! P7 K _# H# l* d0 T$ D! k+ }+ D. f4 X1 D
" \: y: j* T O( F. F7 H
问题4:IP限制配置不当 a% Y6 |& i& s* o
1 ` _& T3 e# Y1 `7 \) A
症状举例:
6 W! ~8 C- R# @. r9 M; t
- U- b+ t+ l2 s8 z; m9 B7 D8 N& c
* r: r6 ]7 G1 D' @4 [ HTTP 错误 403.6 - 禁止访问:客户端的 IP 地址被拒绝。
0 P& R5 D: k0 C. n- O) s8 `2 Z7 B# p! ^ n, ]
原因分析:# A# }2 ?1 J0 S
" x# {0 f1 q( B+ X& |1 x$ H; P7 p: z/ M' A% I/ A3 a0 J
IIS提供了IP限制的机制,你可以通过配置来限制某些IP不能访问站点,或者限制仅仅只有某些IP可以访问站点,而如果客户端在被你阻止的IP范围内,或者不在你允许的范围内,则会出现错误提示。
$ z {- u; W6 l% U; T5 S1 h# k0 }. D, f
- X+ }' N0 G& z4 J8 b: p解决方法:
/ l3 b4 ^: O# q- r
& z: c3 Z' I: r- S b1 Y0 N, _+ n6 {进入IIS的属性->安全性->IP地址和域名限制。如果要限制某些IP地址的访问,需要选择授权访问,点添加选择不允许的IP地址。反之则可以只允许某些IP地址的访问。
- I: A5 I; U% Q: a3 W
6 I5 o3 a O b! b# n7 i问题5:IUSR账号被禁用' h: r/ {2 E$ X- B
- I" | v/ e; u8 l9 E! G$ e0 N
症状举例:
1 e( n9 d: B0 _. D0 _# m+ S7 Y0 B) n
7 q2 c9 [2 y9 {8 `2 x% x
/ b9 n7 l1 I' Q( @' N HTTP 错误 401.1 - 未经授权:访问由于凭据无效被拒绝。
- L' \( q% s3 j) P$ P. R+ @! N
. E! ?" _5 t" p2 C原因分析:
6 Y. ~+ b) o, e) E$ E$ h6 B& O
3 t$ s5 F* r5 R* D
" p8 W' ?. }" E+ e7 g8 `" H" g 由于用户匿名访问使用的账号是IUSR_机器名,因此如果此账号被禁用,将造成用户无法访问。
8 ~- U9 d8 N6 R% S8 f
+ j, b) ?8 F0 _/ ]) v) C解决办法:
& F/ X! o2 U# j- {) W! L1 L' u' W7 Y: Z8 }* H% f3 i% d6 O
控制面板->管理工具->计算机管理->本地用户和组,将IUSR_机器名账号启用。1 U. r$ }, B+ X3 r3 ^
6 J, `3 e6 ~7 N& [! n' s问题6:NTFS权限设置不当
+ s. X& W( @. _) @7 }/ o症状举例:0 Q1 I" W8 E2 n M( n6 q
$ |% M* u. ^3 V. g8 \+ y
2 Y! x3 n+ y( Z; ~6 s0 c0 H
HTTP 错误 401.3 - 未经授权:访问由于 ACL 对所请求资源的设置被拒绝。' b; C) A% n/ u
' y5 w: G& ^6 z, ^. h% X原因分析:
- \' b* K' b) W! M! k, o0 {, F9 ?
! U1 U# L3 ~2 [2 g# B4 E Web客户端的用户隶属于user组,因此,如果该文件的NTFS权限不足(例如没有读权限),则会导致页面无法访问。
$ b2 W0 m: v: {
c7 \1 J. p; T2 b解决办法:- n' l: Q3 Y% K- I A# [1 L
% D; }3 g8 T0 G" k& }+ @$ L) q8 y! [, B& B! G* W) B
进入该文件夹的安全选项卡,配置user的权限,至少要给读权限。关于NTFS权限设 置这里不再馈述。
0 K2 J" }! ]1 e
. i8 i$ C9 K" ]$ ]1 p% w问题7:IWAM账号不同步; B% _! y3 D B5 a1 U) V$ X
9 B* q6 H, s1 @+ ~, U% J; |8 I0 Q注意:这个问题经常出现!!!!
* \8 ], I/ U: f9 [症状举例:
3 S4 H( P, W$ f l# D. g# R2 Y% t: u. X* Z. h& r. Y
% [/ V$ [% k7 E5 J9 l
HTTP 500 - 内部服务器错误. ~- r# Z! N* y1 i" Z
; o$ A0 B! m0 Q; D2 c* u! n, [2 z2 U原因分析:% A. @1 Q1 w: |9 ~- l! W6 q3 B& [
! L6 Z* _2 V1 s& a. t' r* C. I b! t+ U* F: Z+ q
IWAM账号是安装IIS时系统自动建立的一个内置账号。IWAM账号建立后被Active Directory、IIS metabase数据库和COM+应用程序三方共同使用,账号密码被三方分别保存,并由操作系统负责这三方保存的IWAM密码的同步工作。系统对IWAM账号的密码同步工作有时会失效,导致IWAM账号所用密码不统一。
+ M9 ~7 J0 E: m/ @
4 v2 v# ?) J2 Y$ _& q! N解决办法:
- O; P/ k$ F, \) |: }7 ^
; R9 T! f/ X+ ?! V' T" Z( ]
4 o) u! C. P: r7 \ 如果存在AD,选择开始->程序->管理工具->Active Directory用户和计算机。为IWAM账号设置密码。运行c:\Inetpub\AdminScripts>adsutil SET w3svc/WAMUserPass +密码同步IIS metabase数据库密码运行cscript c:\inetpub\adminscripts\synciwam.vbs -v 同步IWAM账号在COM+应用程序中的密码
1 m" s; d- k9 B" V" `1 \5 W6 y! N1 T4 o4 m# {# p8 J% W* L
问题8:MIME设置问题导致某些类型文件无法下载(以ISO为例)8 V$ q7 _: h4 E! b' T! h4 q$ {
' H, p) y4 C; a
症状举例:
p& P4 Z, y" y
' \! z# w8 O5 @% e HTTP 错误 404 - 文件或目录未找到。; D/ a7 w7 s8 E
, C& ]. L5 j. h5 z/ ^1 r; G5 v s
原因分析:
1 Q1 u3 [% @# l' B2 \5 @2 Q1 E; l2 T% ]' _- x( M; V
IIS6.0取消了对某些MIME类型的支持,例如ISO,致使客户端下载出错。
$ |. U/ ]& r. ~5 _- h+ I# i. s: M! t! q1 M0 ]
解决方法:2 y" M6 x% e K9 f; o4 V& G* h
9 s9 `9 Q) h: c$ A: ^( t
在IIS中属性->HTTP头->MIME类型->新建。在随后的对话框中,扩展名填入.ISO,MIME类型是application。* N; }$ |' x: f0 L/ h- y
) k4 B/ V9 R$ o0 x3 b( `7 _& l
另外,防火墙阻止,ODBC配置错误,Web服务器性能限制,线程限制等因素也是造成IIS服务器无法访问的可能原因,这里就不再一一馈述了。
& T7 {& M1 A9 Y% p: k( D |
|