|
|
很多朋友在用IIS6架网站的时候遇到不少问题,而这些问题有些在过去的IIS5里面就遇到过,有些是新出来的,做了很多次试验,结合以前的排错经验,做出了这个总结,希望能给大家帮上忙。
! P! D8 K6 ~, R1 D) T& ~3 G& N
8 n( I' i3 y& b% \# z. x问题1:未启用父路径( t- q5 X; v' v4 }6 e# |( g
症状举例:
6 u* W' ^% X, i; |
* P6 T. M- I4 m" A$ w Server.MapPath() 错误 \'ASP 0175 : 80004005\'
8 m" d- _! x" O) I: ^8 y
3 [! R0 N: ~" M( W2 m6 J0 D( `7 ~2 a' i 不允许的 Path 字符
7 U, M9 }' o" n3 U8 [$ K1 B8 g+ e
+ |7 ^. d: N/ C& S9 G /0709/dqyllhsub/news/OpenDatabase.asp,行 4* |2 f0 ^) s6 Q& j, g
3 t; s! J$ J0 A- U, \+ k+ o( Q
在 MapPath 的 Path 参数中不允许字符 \'..\'。& G- b" O! C2 R6 j+ P: g! V
5 ?! X% @ K: ^+ v. r8 ^
* G" Z" N9 F8 N, O原因分析:
1 N% b( a. d. N1 I' _# z
6 K" g) Z) I w) n9 Y6 q 许多Web页面里要用到诸如../格式的语句(即回到上一层的页面,也就是父路径),而IIS6.0出于安全考虑,这一选项默认是关闭的。 如果是使用LEADBBS论坛的朋友就要注意了,DV的不会出现问题。' n8 i- T$ L: c& W3 M
6 w0 K" X7 v# |7 [
解决方法:0 r! h- N* C+ @4 p6 e" a& K
, B2 ]5 Y! p3 z7 g+ m6 A) ]
在IIS中属性->主目录->配置->选项中。把”启用父路径“前面打上勾。确认刷新。% @$ c( j7 b* t$ S
4 j- |+ L4 l$ j9 K问题2:ASP的Web扩展配置不当(同样适用于ASP.NET、CGI)* @- X' w6 I) ?
& d v1 ?+ G+ b# @
症状举例:
4 c: z9 d/ E7 [4 D( R* M7 Z& U0 W- S* ]' s7 e
HTTP 错误 404 - 文件或目录未找到。" l9 h3 o0 G( h; |
$ f- z4 ~& H+ B原因分析:
; g9 R* P, ~( }# C2 x$ X) J a5 N3 {- g! @
; F. \, m" ~ s# O% _% i3 | 在IIS6.0中新增了web程序扩展这一选项,你可以在其中对ASP、ASP.NET、CGI、IDC 等程序进行允许或禁止,默认情况下ASP等程序是禁止的。5 Q1 U7 j4 N. f
3 r0 w+ A4 S v: U解决方法:
9 E2 K+ n) x0 s( s9 p" e5 q7 ~. n& w! W4 ^/ L* d( {' j9 p
在IIS中的Web服务扩展中选中Active Server Pages,点击“允许”。7 H$ ^ o2 y: v9 t7 L; {2 N
& ^" K$ K% \7 u0 I8 N' c* Z0 y; ~, T问题3:身份认证配置不当
% T" L8 y$ K% m0 _( r$ {+ l4 {# \1 j
& f. _$ f6 q b$ [8 k+ N7 r症状举例:# r* v0 |5 Y& U( J: o) Q- N2 p+ K
) g0 b0 t z4 d) q, y3 M( M HTTP 错误 401.2 - 未经授权:访问由于服务器配置被拒绝。$ y! y# }% a& k- s/ D( P' J7 ?
3 U0 Z, V8 u- g' Q原因分析:
* J4 t0 o& ^" G* [* z" k; Z- c9 b! T: X/ U0 d3 A# k( \
IIS 支持以下几种 Web 身份验证方法:! u, x. x9 W1 j3 F5 v
" N0 ^9 j( q6 H% V6 H(1)匿名身份验证
9 q) {7 z9 Z+ d" v& l) ?2 J8 |: v1 ^7 E3 `3 W2 Q# z; L
IIS 创建 IUSR_计算机名称帐户(其中计算机名称是正在运行 IIS 的服务器的名称),用来在匿名用户请求 Web 内容时对他们进行身份验证。此帐户授予用户本地登录权限。你可以将匿名用户访问重置为使用任何有效的 Windows 帐户。3 M7 @/ K1 F* c2 ]. l/ V# ]9 ~5 s5 U
8 \ Z7 z6 m% T: K% b(2)基本身份验证
; Z& \( [- e6 k# M3 |' L" y6 e7 k7 X0 ]
使用基本身份验证可限制对 NTFS 格式 Web 服务器上的文件的访问。使用基本身份验证,用户必须输入凭据,而且访问是基于用户 ID 的。用户 ID 和密码都以明文形式在网络间进行发送。* e& K, |) h0 x6 u
# H# ^1 m3 o) V: \
(3)Windows 集成身份验证
/ b. f1 @& M0 b; b4 u+ y: ]' f, J5 X- N9 ~$ _
Windows集成身份验证比基本身份验证安全,而且在用户具有Windows域帐户的内部网环境中能很好地发挥作用。在集成的Windows 身份验证中,浏览器尝试使用当前用户在域登录过程中使用的凭据,如果尝试失败,就会提示该用户输入用户名和密码。如果你使用集成的Windows身份验证,则用户的密码将不传送到服务器。如果该用户作为域用户登录到本地计算机,则他在访问此域中的网络计算机时不必再次进行身份验证。
( ?. \) ~! Q/ z. ~8 x2 b, z- b: i! K/ _4 _3 k
(4)摘要身份验证
! V) I. B, x- N+ _. w K C
7 }6 f7 U6 }8 E$ O$ P6 _ 摘要身份验证克服了基本身份验证的许多缺点。在使用摘要身份验证时,密码不是以明文形式发送的。另外,你可以通过代理服务器使用摘要身份验证。摘要身份验证使用一种挑战/响应机制(集成 Windows 身份验证使用的机制),其中的密码是以加密形式发送的。
3 l4 J' W( [$ Q
9 a% C) I. s9 O' c.NET Passport 身份验证+ z- K$ J$ L: F, T& l
N" _. T- k; K* PMicrosoft .NET Passport 是一项用户身份验证服务,它允许单一签入安全性,可使用户在访问启用了 .NET Passport 的 Web 站点和服务时更加安全。启用了 .NET Passport 的站点会依靠 .NET Passport 中央服务器来对用户进行身份验证。但是,该中心服务器不会授权或拒绝特定用户访问各个启用了 .NET Passport 的站点。: r" B1 k7 p/ y$ ]; q) s9 }
! A* x6 U2 Y! q8 b9 r
解决方法:" v, o5 j# ?3 l( E9 ^( }5 f
$ ~6 Q g* Q" C- u4 q" ]- j1 h# q
根据需要配置不同的身份认证(一般为匿名身份认证,这是大多数站点使用的认证方法)。认证选项在IIS的属性->安全性->身份验证和访问控制下配置。, q/ G" m+ k5 X% h) `2 A
! v. C! l5 M) i' z; h0 D Z
J% e6 D" }: F 问题4:IP限制配置不当
" ] a" ?# D; E: z4 E
) p n: N! b% D& \4 x症状举例:3 I- q R2 B1 Y: a! [7 `& r
* ~7 X1 F3 K* u+ ]0 M/ R, g8 h# q! d/ g% J1 _4 Y% J' H
HTTP 错误 403.6 - 禁止访问:客户端的 IP 地址被拒绝。
( X* M% ~( ]3 f6 J+ J& N7 l8 G4 `0 S w/ k3 m$ |- l6 [
原因分析:5 E, v8 h5 `: |* O5 {
6 V/ s, ~ ] A: M) V( J
5 N- }( L6 z4 I
IIS提供了IP限制的机制,你可以通过配置来限制某些IP不能访问站点,或者限制仅仅只有某些IP可以访问站点,而如果客户端在被你阻止的IP范围内,或者不在你允许的范围内,则会出现错误提示。
9 V' s" O. U* S8 b5 `0 Q( J" G( x
解决方法:
# v8 f) L) l' V$ f
6 X( R2 V$ _: a1 O. i! U进入IIS的属性->安全性->IP地址和域名限制。如果要限制某些IP地址的访问,需要选择授权访问,点添加选择不允许的IP地址。反之则可以只允许某些IP地址的访问。
1 z& n( Q. e4 Q$ q. b. ^4 ]4 O% Y5 t; D9 o' I7 @
问题5:IUSR账号被禁用5 S6 K; L0 `9 G: B% O9 J
$ p" j7 M0 w7 l, c7 K. S- H+ j1 {
症状举例:
4 T9 p; a$ ]) z: W4 K; Q
) Q" y4 n9 ~, _# D# h- F+ ~- b
4 y- X& ^9 R/ Q0 S, |& A* l HTTP 错误 401.1 - 未经授权:访问由于凭据无效被拒绝。
' s p* o/ f! s2 N% L
$ q7 R' K- u0 L* W7 X" `原因分析:
7 u1 v; v1 e- a/ X$ b* s$ |8 |1 ~ x, W. T1 o# o
: @$ C& W3 R3 b. C6 w+ n: F0 p# \7 f$ J
由于用户匿名访问使用的账号是IUSR_机器名,因此如果此账号被禁用,将造成用户无法访问。
9 R4 w: Z9 w4 p% q
+ I4 |3 i+ _1 [+ W# M( k解决办法:
9 I# ^1 I) A: H5 c* W. O; |
" E! B4 z+ g0 r' O! l D控制面板->管理工具->计算机管理->本地用户和组,将IUSR_机器名账号启用。
. ^+ H3 n s! ?7 n$ Y J L: E/ Z! b6 o! \
问题6:NTFS权限设置不当- ^# k6 f1 J1 _5 ]% j: o
症状举例:
% C2 n" C# |% H, L3 J/ }" K! N5 A f3 s" J* O
; L0 Y& @ h* n: e8 z7 Z HTTP 错误 401.3 - 未经授权:访问由于 ACL 对所请求资源的设置被拒绝。
0 U+ _! K" u5 b! o$ p) ~0 [: E# Q' n- |- v6 y* g+ D1 F
原因分析:0 I& ]2 X2 @4 `5 ~1 E& u% L$ P! ~
5 Y3 X2 z1 @0 E, o6 D, i }) B
$ `% T" T/ l# O& Q* f; a Web客户端的用户隶属于user组,因此,如果该文件的NTFS权限不足(例如没有读权限),则会导致页面无法访问。' ?7 G, h& d- L6 L& V" s) A9 \ F! }
8 O$ d1 \5 S2 N! ^4 a解决办法:
! K0 F- Y+ |0 d; }$ \- E N' i7 Y: y) ]+ d4 b( e
2 \; ~( x4 f4 `6 P/ d1 e* k 进入该文件夹的安全选项卡,配置user的权限,至少要给读权限。关于NTFS权限设 置这里不再馈述。
( G5 ]3 D, e& n1 I8 ^7 g
$ K2 _$ {3 @% P3 ]8 Z问题7:IWAM账号不同步
" t% q: N: l, Q( e7 g7 z
0 l7 l, ^/ U& K注意:这个问题经常出现!!!!
- T* f! V6 Z" T( S7 V症状举例:
/ O9 s# q* }4 B, J% T5 O! b3 |$ D5 V% |$ a2 J6 V8 M9 y! `
2 K4 E8 Q- y* w! B
HTTP 500 - 内部服务器错误) A" _/ d5 C% |# f2 P' q
+ R7 p5 h' k @
原因分析:; W+ k2 o7 g# O) i' E
& r( z& S5 u7 E3 Y
4 S1 x4 t( H5 C" S
IWAM账号是安装IIS时系统自动建立的一个内置账号。IWAM账号建立后被Active Directory、IIS metabase数据库和COM+应用程序三方共同使用,账号密码被三方分别保存,并由操作系统负责这三方保存的IWAM密码的同步工作。系统对IWAM账号的密码同步工作有时会失效,导致IWAM账号所用密码不统一。7 S: `/ @, t# h0 Z/ x
& q: K2 Q9 ]2 R; ?; ?5 Z* T1 G5 K
解决办法:
8 ~: p' l# q2 K! g4 \/ H# Q8 u9 I" c0 c3 r9 J
+ F8 Y7 W5 F1 e 如果存在AD,选择开始->程序->管理工具->Active Directory用户和计算机。为IWAM账号设置密码。运行c:\Inetpub\AdminScripts>adsutil SET w3svc/WAMUserPass +密码同步IIS metabase数据库密码运行cscript c:\inetpub\adminscripts\synciwam.vbs -v 同步IWAM账号在COM+应用程序中的密码
$ J7 o( n0 q& y" W& x! A6 |
# o! P0 {; S# \/ Q3 ~- h- u1 E问题8:MIME设置问题导致某些类型文件无法下载(以ISO为例) d# C* [+ a: b9 b/ p0 Q" |# ]- q
, z; [* B m; A8 ~0 {4 b
症状举例:
0 |! p0 b3 Y+ X/ m N- ?7 [* ^, C0 b6 k* T6 R) Y+ j4 q3 e
HTTP 错误 404 - 文件或目录未找到。
0 m( O$ q. A+ k* Q# I6 z1 Y4 F* V
0 ^6 B' C6 @! @5 E P" W! J原因分析:
; H+ i# d# Y5 W& J. e& z8 U
: p: }% Y1 u; `5 X* [/ @ r IIS6.0取消了对某些MIME类型的支持,例如ISO,致使客户端下载出错。
1 ?5 f2 y8 o8 s" B& L4 k; y! U( [) m
解决方法:) ?5 t* ~4 c: }' o4 q6 s4 L/ f2 t
& u; [8 a( i( y" v$ B4 x 在IIS中属性->HTTP头->MIME类型->新建。在随后的对话框中,扩展名填入.ISO,MIME类型是application。
/ V/ l$ B1 [% g- e% u
% A; |! ^2 C0 [1 A: v' q) u0 Z/ e9 W另外,防火墙阻止,ODBC配置错误,Web服务器性能限制,线程限制等因素也是造成IIS服务器无法访问的可能原因,这里就不再一一馈述了。
6 y5 Q% F% r0 w- E) f- H |
|