|
|
很多朋友在用IIS6架网站的时候遇到不少问题,而这些问题有些在过去的IIS5里面就遇到过,有些是新出来的,做了很多次试验,结合以前的排错经验,做出了这个总结,希望能给大家帮上忙。
# |/ i8 U9 [0 Z/ U$ \& T4 L. w0 y- H3 y% D
问题1:未启用父路径0 S: L% U* ?! ?5 D$ G
症状举例: - Q y L" g* k. v ~& ~6 T7 Z
! K0 @6 t7 G4 \) d Server.MapPath() 错误 \'ASP 0175 : 80004005\'
# N7 H7 ~+ }/ f0 W( D5 d9 l2 M& o/ u' O$ K/ g6 P
不允许的 Path 字符1 U7 B' X! V% ~& M
% `* @' {1 B) E8 u# c) K: | /0709/dqyllhsub/news/OpenDatabase.asp,行 4( z. T: m4 i* s' _# T# ]1 x
r. y; ]% w8 \3 E 在 MapPath 的 Path 参数中不允许字符 \'..\'。
1 M$ [0 u& x3 M- Q* C' P! M) G: G2 T3 e$ e3 @
. ]8 _7 I& m& G p. A7 P! h
原因分析:6 C! u7 p) `$ x1 }5 @+ j# g
k, G9 d1 ^) X8 B+ ]8 @& y 许多Web页面里要用到诸如../格式的语句(即回到上一层的页面,也就是父路径),而IIS6.0出于安全考虑,这一选项默认是关闭的。 如果是使用LEADBBS论坛的朋友就要注意了,DV的不会出现问题。- ~4 M, L, O: f- [8 @$ p
' c, `% z- w3 \; s" {" t解决方法:4 E2 Z S$ {! S1 P4 _8 q# A9 x4 s. R
0 M5 g, d) d9 a+ V* `在IIS中属性->主目录->配置->选项中。把”启用父路径“前面打上勾。确认刷新。
0 J J- [! S$ J
* v. ^) M: n3 u8 z0 n8 G问题2:ASP的Web扩展配置不当(同样适用于ASP.NET、CGI)
+ J3 k, c* K( {2 L+ c) b
# ~3 p% p6 H( _( ]* j+ P9 f; B症状举例:* Q" C. r2 x" t' K6 W* g# c; [/ |
7 f6 h; G. X/ l# e! P
HTTP 错误 404 - 文件或目录未找到。
! _# B+ w+ z j; v2 U R4 ]; d- ~4 s+ Q$ w: q
原因分析:: N- h0 v4 I6 Q, s: G2 S3 s
! q! c1 H( f8 Y) V( `* M/ c4 c
L- F& h" a8 J1 [( W
在IIS6.0中新增了web程序扩展这一选项,你可以在其中对ASP、ASP.NET、CGI、IDC 等程序进行允许或禁止,默认情况下ASP等程序是禁止的。
+ Z5 a! z! P1 }2 ~: E; E/ b6 ]/ O: I
解决方法:3 o9 u% H# [3 z8 m' `* c& O
8 L% V* H1 l* x) b! Y5 f在IIS中的Web服务扩展中选中Active Server Pages,点击“允许”。* d, u6 k; ]8 N' u0 b9 A! ~
( {! F8 \% ?: M; C8 Q: g9 w5 b问题3:身份认证配置不当
- {* j# J* z5 T) {4 j. X7 \( X1 w( j; p5 k4 }
症状举例:5 X" d' J) `* E$ R
2 X. P9 o& X8 e# I- y! x5 h$ t HTTP 错误 401.2 - 未经授权:访问由于服务器配置被拒绝。
' r2 ?2 W7 W- H; N4 r
2 h2 G4 v4 f7 _7 ^4 H+ O原因分析:
6 {/ F& V$ T1 x7 B9 z
' G' U" a* F) l: C. `6 ^ IIS 支持以下几种 Web 身份验证方法:4 r, H% m( c% _) K h: `
W+ B& x5 z- D4 `
(1)匿名身份验证
+ h% `" E, H4 D3 l5 [" m1 S2 J5 L9 h% B5 C, `$ O' }1 s' {
IIS 创建 IUSR_计算机名称帐户(其中计算机名称是正在运行 IIS 的服务器的名称),用来在匿名用户请求 Web 内容时对他们进行身份验证。此帐户授予用户本地登录权限。你可以将匿名用户访问重置为使用任何有效的 Windows 帐户。9 k! `; }) r4 K/ q$ u, c' [- d
, C0 ~! y; H7 M' A, H(2)基本身份验证
. }, I$ T! x# P L6 ]' I9 T% M& f; {# K/ h+ j
使用基本身份验证可限制对 NTFS 格式 Web 服务器上的文件的访问。使用基本身份验证,用户必须输入凭据,而且访问是基于用户 ID 的。用户 ID 和密码都以明文形式在网络间进行发送。9 w& N' i9 I7 f! _) r
4 t0 i. R) O; U( w4 c: ]$ B( x
(3)Windows 集成身份验证
# \% ]* Z* g' I/ o" m2 f
& s" D5 e% H% e# m' s4 m Windows集成身份验证比基本身份验证安全,而且在用户具有Windows域帐户的内部网环境中能很好地发挥作用。在集成的Windows 身份验证中,浏览器尝试使用当前用户在域登录过程中使用的凭据,如果尝试失败,就会提示该用户输入用户名和密码。如果你使用集成的Windows身份验证,则用户的密码将不传送到服务器。如果该用户作为域用户登录到本地计算机,则他在访问此域中的网络计算机时不必再次进行身份验证。2 c% b# Q3 C$ p9 W' f9 I3 b
S& Y( j2 U7 M \0 j8 _
(4)摘要身份验证' `# l7 A8 A8 L( H5 N( V7 {
/ q% B$ T; t# A* f; a- w 摘要身份验证克服了基本身份验证的许多缺点。在使用摘要身份验证时,密码不是以明文形式发送的。另外,你可以通过代理服务器使用摘要身份验证。摘要身份验证使用一种挑战/响应机制(集成 Windows 身份验证使用的机制),其中的密码是以加密形式发送的。
1 c4 { K% |2 }) X, M% z
( P; c3 y0 Y2 u1 K: U& `.NET Passport 身份验证9 [$ ~! o( N. ?& i# d; M: h
E2 j( Z3 k" K
Microsoft .NET Passport 是一项用户身份验证服务,它允许单一签入安全性,可使用户在访问启用了 .NET Passport 的 Web 站点和服务时更加安全。启用了 .NET Passport 的站点会依靠 .NET Passport 中央服务器来对用户进行身份验证。但是,该中心服务器不会授权或拒绝特定用户访问各个启用了 .NET Passport 的站点。' f0 J9 z7 v0 M- k- t
7 V9 d6 c U0 Y' i: d
解决方法:
/ L! |" D9 a' S. G7 G* {' Y9 x
. f g0 J; N: C" Z6 o+ f" K" k4 }根据需要配置不同的身份认证(一般为匿名身份认证,这是大多数站点使用的认证方法)。认证选项在IIS的属性->安全性->身份验证和访问控制下配置。
6 O- t( ^( e/ [1 z! o0 z; R9 i" I: ?8 a( `4 a3 c) b4 i: l/ r% R
# H9 u# C9 X% j. ?: Q8 ^ 问题4:IP限制配置不当
K+ q, \$ b/ t% o4 ?' k+ ^
/ U6 {/ d+ `9 @' w; D: b症状举例:
6 A1 D& p7 S/ L# U4 H; g& F, |* H% d, D- L
# T' a" ~2 d* s) i& x; |
HTTP 错误 403.6 - 禁止访问:客户端的 IP 地址被拒绝。
; |! r# d4 {! K4 o0 k6 h+ Q9 u+ I# c; T4 G) D/ H- \+ g; h5 o
原因分析:+ R1 ?4 N9 H1 n9 P0 q
% m# G2 M8 j8 r9 o0 s; s$ F4 n' j" C) ~; p, ^* z" \* [ N9 `
IIS提供了IP限制的机制,你可以通过配置来限制某些IP不能访问站点,或者限制仅仅只有某些IP可以访问站点,而如果客户端在被你阻止的IP范围内,或者不在你允许的范围内,则会出现错误提示。
( H2 ~- H5 C7 {! ~9 V1 h( f1 k, y/ \5 a& t3 O
解决方法:
; K" x1 j. ]- b& @5 Z u
1 Q) [ ]% {3 j! q0 p. P8 ^进入IIS的属性->安全性->IP地址和域名限制。如果要限制某些IP地址的访问,需要选择授权访问,点添加选择不允许的IP地址。反之则可以只允许某些IP地址的访问。
" Z. \: P! F4 H: u( l$ T( Z0 P8 o! T5 \ N3 P
问题5:IUSR账号被禁用
4 h3 P7 C% r% u6 ^1 _% f
- L' w3 K8 A( c; n" W" B$ |) C症状举例:
( R& B: ]; J+ k ]" M$ S \- y4 o1 h* t0 ?& V7 C
; R/ ^/ s7 I$ S. U9 H9 M* d8 j. W
HTTP 错误 401.1 - 未经授权:访问由于凭据无效被拒绝。
: V( A" K- Z. w. W) p7 x" v; z
0 p% a. P5 [8 N* ?/ K6 b5 Y原因分析:
+ ]9 ^( z. F) R: J5 t" P2 J6 f' G8 l& H/ Y
6 p+ i* K0 e! S- F; G
由于用户匿名访问使用的账号是IUSR_机器名,因此如果此账号被禁用,将造成用户无法访问。4 |$ j4 ^0 E, |3 x: z
! c4 @6 o" y P& Y, W5 T: T解决办法:/ M/ x" N3 q( o3 t# V9 }" g* ]
' j# R( ]' q! Z7 x
控制面板->管理工具->计算机管理->本地用户和组,将IUSR_机器名账号启用。
# K: \2 E9 p9 c, `/ L
% K* k! S( G* u5 p问题6:NTFS权限设置不当
# s, T. e C* G) D2 @- G3 `症状举例:! R7 O2 ]5 R3 L" S7 ^- [$ G4 y
: R4 v$ X. O, x/ {: }1 n
$ V- h: Y3 R1 L# F$ t5 W
HTTP 错误 401.3 - 未经授权:访问由于 ACL 对所请求资源的设置被拒绝。- k" C8 _2 M1 ~9 n1 _
2 G k1 q4 f+ Y' M' m
原因分析:4 `2 w$ R$ w; I8 z
8 X4 d# p) }" T0 i5 }$ Q) r7 f
5 f6 ~+ c: s# U6 D4 H Web客户端的用户隶属于user组,因此,如果该文件的NTFS权限不足(例如没有读权限),则会导致页面无法访问。% t B! Q) ^5 H" c! h% J- a
; J. ?; K/ i1 I6 Z解决办法: o D& L4 E- L0 m* q: J
! ^9 G# c4 b/ \% y! v
" u9 ]7 O& c J, W0 ~3 G7 L 进入该文件夹的安全选项卡,配置user的权限,至少要给读权限。关于NTFS权限设 置这里不再馈述。
- R k+ H1 q- A( U( @; y' I
; b! L/ i% D6 K" ^5 W- h问题7:IWAM账号不同步
C0 w" T- B, C E
8 i( K" A1 u) e- L注意:这个问题经常出现!!!!
~# P! O0 {7 e2 {7 g8 b症状举例:% ], T6 `$ K7 d6 D
: u+ w& d3 b7 @8 B% O+ Y
) g" p: o% _ \: q2 `- w HTTP 500 - 内部服务器错误
0 v d3 v+ |$ r- Q' S0 {
; Q! @# g$ z# D: g5 {3 x( E1 z原因分析:
. Y. g& e2 [1 i2 N F2 X/ _" L( j
! W/ q; r4 U) L* q) V6 z; V& l, [' j) Z: @
IWAM账号是安装IIS时系统自动建立的一个内置账号。IWAM账号建立后被Active Directory、IIS metabase数据库和COM+应用程序三方共同使用,账号密码被三方分别保存,并由操作系统负责这三方保存的IWAM密码的同步工作。系统对IWAM账号的密码同步工作有时会失效,导致IWAM账号所用密码不统一。
: F, v& V6 H9 ]3 `/ J1 H0 e. h7 L2 \
解决办法:
4 S3 m: z2 H7 g- f) [$ A& {/ T! z. [7 [9 B
/ [4 p( J4 [5 `2 h3 s
如果存在AD,选择开始->程序->管理工具->Active Directory用户和计算机。为IWAM账号设置密码。运行c:\Inetpub\AdminScripts>adsutil SET w3svc/WAMUserPass +密码同步IIS metabase数据库密码运行cscript c:\inetpub\adminscripts\synciwam.vbs -v 同步IWAM账号在COM+应用程序中的密码
7 t: |. q; K7 W1 d3 g# d! l8 a* ?# y: g$ M
问题8:MIME设置问题导致某些类型文件无法下载(以ISO为例)
; z8 S4 N8 v- S% o
5 L+ h: M3 v7 U0 o症状举例:' f3 w! d V; i! \8 p" h
( S% S4 o \3 X" q% L
HTTP 错误 404 - 文件或目录未找到。' K) n# i/ F$ l2 M3 o
; o8 [- Q9 h0 H9 }
原因分析:. e, u( s: v* V; c+ g
. c9 t; V& W% @ IIS6.0取消了对某些MIME类型的支持,例如ISO,致使客户端下载出错。
7 f( ]5 N s0 E
. m* x, S& y7 d解决方法:6 U- O5 l: d7 k- O, u L( i
# C! j+ y$ ]$ @& s0 j* @
在IIS中属性->HTTP头->MIME类型->新建。在随后的对话框中,扩展名填入.ISO,MIME类型是application。
! X( E0 j; [4 f+ f4 }9 A9 a M5 a' R. s9 I2 F; J
另外,防火墙阻止,ODBC配置错误,Web服务器性能限制,线程限制等因素也是造成IIS服务器无法访问的可能原因,这里就不再一一馈述了。3 I% n2 h5 d- W
|
|