|
|
很多朋友在用IIS6架网站的时候遇到不少问题,而这些问题有些在过去的IIS5里面就遇到过,有些是新出来的,做了很多次试验,结合以前的排错经验,做出了这个总结,希望能给大家帮上忙。+ _0 \8 ~" e3 o# I- g9 m$ n
* ]+ j) T+ a5 z, t: U问题1:未启用父路径3 |( @/ ~" g( D- Y9 B
症状举例:
$ F4 h) H2 W' _1 ~' {2 V$ x
5 Q' `1 c5 D! {& g1 J Server.MapPath() 错误 \'ASP 0175 : 80004005\'
$ B/ O7 x! O1 Y- d2 `3 @* P2 C1 U4 J
不允许的 Path 字符
7 [* k- @! m* d9 C. i) D8 i: }6 U r: V
/0709/dqyllhsub/news/OpenDatabase.asp,行 43 r: o: T0 B- y
2 ^0 s* \6 @4 g* o" u
在 MapPath 的 Path 参数中不允许字符 \'..\'。
9 i. X1 @& j$ v6 W. n
- D4 w8 q6 X* o; ?
0 A! F) k4 Y5 |, b9 p/ T- Z原因分析:
# ^- |/ F8 l/ m% a9 O ~
: q. M. E) p- _* J+ Z" @ ?; P 许多Web页面里要用到诸如../格式的语句(即回到上一层的页面,也就是父路径),而IIS6.0出于安全考虑,这一选项默认是关闭的。 如果是使用LEADBBS论坛的朋友就要注意了,DV的不会出现问题。
- _$ z$ W1 x e7 _0 E$ _2 i) C
5 h) S% B6 q5 b" B解决方法:
& r, A. V# V6 J* ~1 T# f9 C
0 n" D, m. U3 a) P在IIS中属性->主目录->配置->选项中。把”启用父路径“前面打上勾。确认刷新。
& H- {) j7 J1 y
- W* j5 L8 y4 m3 g! I问题2:ASP的Web扩展配置不当(同样适用于ASP.NET、CGI)4 }* N; [* @& c3 l- E% h" @
& x- n5 b' \7 b( \症状举例:, q5 ]% }1 O1 e7 k8 Y
0 i9 h& D0 d! M7 o
HTTP 错误 404 - 文件或目录未找到。/ d% l' C* q9 m
5 m; a9 }, u4 c4 A) u1 }$ ]原因分析:
. \0 M J) m: Q( w1 x9 x" F
* t- h K; b% c* p" V# e# c! m* p! q o# Y
在IIS6.0中新增了web程序扩展这一选项,你可以在其中对ASP、ASP.NET、CGI、IDC 等程序进行允许或禁止,默认情况下ASP等程序是禁止的。3 w7 ^7 }- W+ A/ h% h7 @: J
' M) _0 u' I6 h8 T5 g解决方法:2 J. ^0 N4 Y& ?2 y1 Z2 j2 d
7 [3 R+ q: {9 H' i" S在IIS中的Web服务扩展中选中Active Server Pages,点击“允许”。7 a1 t0 Y9 R% ~- S
0 G0 i* v M, e; X2 D
问题3:身份认证配置不当
2 I# x% W$ l9 f, L$ q5 g3 x
. R- U% w9 {& X8 h3 u- i2 R( l, s. w症状举例:) q- g& J4 w/ M8 O8 b
. W/ Z' q5 Z( ]# A0 ` HTTP 错误 401.2 - 未经授权:访问由于服务器配置被拒绝。; G3 @7 H# a6 j- X. x
' J& U5 D5 L- n$ |. F4 j x原因分析:$ `5 {, j' k( _ P/ h
! O" V1 |- C6 E( H \ IIS 支持以下几种 Web 身份验证方法:
7 l, s9 V* p, A' R. j% i; o( F/ G- n. E. S
(1)匿名身份验证$ S" J0 O0 z) Y& P
# [) E9 `2 Q- o) L7 ^6 ^
IIS 创建 IUSR_计算机名称帐户(其中计算机名称是正在运行 IIS 的服务器的名称),用来在匿名用户请求 Web 内容时对他们进行身份验证。此帐户授予用户本地登录权限。你可以将匿名用户访问重置为使用任何有效的 Windows 帐户。
$ c" x- D1 V& c0 y/ z7 b6 _$ E8 c
(2)基本身份验证5 A1 Z; |2 S7 I4 m+ a
% F+ I/ `& w, r, E; E 使用基本身份验证可限制对 NTFS 格式 Web 服务器上的文件的访问。使用基本身份验证,用户必须输入凭据,而且访问是基于用户 ID 的。用户 ID 和密码都以明文形式在网络间进行发送。" p5 b$ p5 K& _, J% M) r1 G
- U2 ?. g( g' { m& o(3)Windows 集成身份验证
$ ]3 U( c# v1 d8 C
( K) H* H0 W9 _+ ~6 Z* ?* P3 r, u Windows集成身份验证比基本身份验证安全,而且在用户具有Windows域帐户的内部网环境中能很好地发挥作用。在集成的Windows 身份验证中,浏览器尝试使用当前用户在域登录过程中使用的凭据,如果尝试失败,就会提示该用户输入用户名和密码。如果你使用集成的Windows身份验证,则用户的密码将不传送到服务器。如果该用户作为域用户登录到本地计算机,则他在访问此域中的网络计算机时不必再次进行身份验证。 Z- J9 Q" v1 `% }8 ?) |
{% N- c3 c2 U7 Y1 H(4)摘要身份验证
0 h( c# c1 z. p7 i$ H* ~8 V3 j* M1 i; D$ W, t& a' J6 N6 W( g
摘要身份验证克服了基本身份验证的许多缺点。在使用摘要身份验证时,密码不是以明文形式发送的。另外,你可以通过代理服务器使用摘要身份验证。摘要身份验证使用一种挑战/响应机制(集成 Windows 身份验证使用的机制),其中的密码是以加密形式发送的。$ h0 `( ~. x8 p$ T/ i5 Q0 G
# N& E2 F0 i7 D) `; t
.NET Passport 身份验证; ^* @& O: U4 C0 J0 |% d, e0 Y
" W! N5 d4 z* G, l% ~9 kMicrosoft .NET Passport 是一项用户身份验证服务,它允许单一签入安全性,可使用户在访问启用了 .NET Passport 的 Web 站点和服务时更加安全。启用了 .NET Passport 的站点会依靠 .NET Passport 中央服务器来对用户进行身份验证。但是,该中心服务器不会授权或拒绝特定用户访问各个启用了 .NET Passport 的站点。
5 m3 y2 _: o( {& w5 E( g6 e3 u- d! v
! @, o/ V1 h! L0 g6 H6 u$ \% P解决方法:
! Z1 E- {$ d5 v9 y) E4 ^" q2 R
- L9 t( s9 V$ l6 F, P$ G1 \5 o& q根据需要配置不同的身份认证(一般为匿名身份认证,这是大多数站点使用的认证方法)。认证选项在IIS的属性->安全性->身份验证和访问控制下配置。) _/ A! v* C3 G# S0 ^
5 k' z" P% M6 k+ c# d6 F: O2 b
6 S( h7 q. g6 H0 G 问题4:IP限制配置不当
1 i& l& H& Z; A" c' r$ G2 K6 {1 ^0 _# j) n
症状举例:
, y6 @, @, o& n8 Y# h" j6 e; r% W& d' C; D9 h7 I/ ]
% c$ C6 P i+ A! w0 i5 X$ X HTTP 错误 403.6 - 禁止访问:客户端的 IP 地址被拒绝。
. ]7 z, B' d. h* k' Q* H+ J! e4 n- T, d- c7 v8 V
原因分析:* d. o& T) u3 A( o2 R
! z4 c6 X ?7 r) z; B6 `; b
2 D& H* \0 \4 Q1 t
IIS提供了IP限制的机制,你可以通过配置来限制某些IP不能访问站点,或者限制仅仅只有某些IP可以访问站点,而如果客户端在被你阻止的IP范围内,或者不在你允许的范围内,则会出现错误提示。
% ]0 @8 T2 R' L+ h5 N9 L6 ^$ w
# Q6 @# V& A3 M: r- J, A解决方法:
9 s$ N% @3 A9 W+ ]# E& Y
- c1 D) s7 [. j e* V$ U7 u进入IIS的属性->安全性->IP地址和域名限制。如果要限制某些IP地址的访问,需要选择授权访问,点添加选择不允许的IP地址。反之则可以只允许某些IP地址的访问。
+ c7 U" m# S" a& _
* D2 o( j6 n! }5 i. M4 L问题5:IUSR账号被禁用
7 G6 Q( s1 R# T3 ^7 L( q& T2 z# T" T$ D0 A& u5 \$ j" C
症状举例:% A9 E! m0 t0 F$ G, w
6 P9 O, H7 N( K# Q' h4 V* h* {' X% C3 l2 A/ D
HTTP 错误 401.1 - 未经授权:访问由于凭据无效被拒绝。
0 l |, N9 X+ P0 |
# N# {# N1 O% Z3 q7 V/ d原因分析:' P, F" K* p4 Q$ T
5 h- f7 n" e+ G$ [# S0 N. _6 I( E F# U/ U2 x; b
由于用户匿名访问使用的账号是IUSR_机器名,因此如果此账号被禁用,将造成用户无法访问。
8 J2 p. O( M( d1 w! u+ M7 h( Z7 B% B& f# {) ^
解决办法:2 o" O9 Q% d3 @
! t0 X: {% N' j7 E1 j& N+ ]$ t% L控制面板->管理工具->计算机管理->本地用户和组,将IUSR_机器名账号启用。
0 L; j" t2 R3 y7 q2 E. H- |5 Y8 |: x5 b8 x3 u( n/ O
问题6:NTFS权限设置不当
5 f3 V6 H- [. M1 k8 M" [6 x/ ?症状举例:1 p1 G: G1 t! z( W& C; b4 v3 Y
0 Z( D3 C* |: ^! |/ C; h1 o$ F9 z; n) T8 r% X( Z4 T( I
HTTP 错误 401.3 - 未经授权:访问由于 ACL 对所请求资源的设置被拒绝。
1 W5 e$ T& k5 {4 V. N
6 N/ L u9 j' D原因分析:' ^9 ]. T" s3 D6 j* \
8 X' o* g1 Z$ k& N
1 [" S% U' f1 G" C M Web客户端的用户隶属于user组,因此,如果该文件的NTFS权限不足(例如没有读权限),则会导致页面无法访问。 I0 ]( ]- ? J
& M2 B( L2 M$ Z! m4 x2 h) n
解决办法:( @( T5 O# w: B: i9 ]% ^$ R
S5 z, Q8 @" j; m6 ~% a
' B( A8 T5 C" V* K% C) q* O: j+ K" O 进入该文件夹的安全选项卡,配置user的权限,至少要给读权限。关于NTFS权限设 置这里不再馈述。
' w. ]; m+ t9 G6 A1 p
1 o( K7 s& _: y问题7:IWAM账号不同步/ y& `2 c' f( m$ G4 C: n6 g Q# r
7 g! H$ |: G+ }# p# {
注意:这个问题经常出现!!!!3 j! w, j4 u9 X- K, L2 m3 _$ u
症状举例:. ~! l5 _5 O% l, z+ b+ @
& h8 J( ] h! G3 U
0 P& i0 x! B# N$ d+ C HTTP 500 - 内部服务器错误
8 }, I1 F# x1 J- e9 B
2 h0 I* w: L1 q" K原因分析:5 V0 N3 K7 y& q6 a" t
3 _) J) J2 W7 F! j3 D" f+ W
. q$ A. Z8 u5 M5 @9 i: M2 F& L/ v
IWAM账号是安装IIS时系统自动建立的一个内置账号。IWAM账号建立后被Active Directory、IIS metabase数据库和COM+应用程序三方共同使用,账号密码被三方分别保存,并由操作系统负责这三方保存的IWAM密码的同步工作。系统对IWAM账号的密码同步工作有时会失效,导致IWAM账号所用密码不统一。. W$ W/ h( ?1 n( n7 G+ r
1 P7 b: C* e9 C4 U# U0 r2 u
解决办法:
1 Z. |! _$ Q, N, o- T; ^5 t0 ~7 p4 n
$ x6 v% O# M! C) G/ L. H# u5 _* [# b
如果存在AD,选择开始->程序->管理工具->Active Directory用户和计算机。为IWAM账号设置密码。运行c:\Inetpub\AdminScripts>adsutil SET w3svc/WAMUserPass +密码同步IIS metabase数据库密码运行cscript c:\inetpub\adminscripts\synciwam.vbs -v 同步IWAM账号在COM+应用程序中的密码
* ]/ d% Q- Q, j* K5 _3 S* K' D
3 e5 b/ h4 L& k问题8:MIME设置问题导致某些类型文件无法下载(以ISO为例)
1 _& V, V- w0 F+ K
! e: v. E: U' C" ^ |0 @症状举例: s1 ^" @) u' c v8 p$ m0 L& x
8 P* g' H9 H6 x i" q4 d HTTP 错误 404 - 文件或目录未找到。9 T3 q. A% r2 t
7 P- {" z5 u) m2 |+ W) N4 Z: t原因分析:
; h# w0 u- [( B: b
, t5 i- i' d2 y' s) X. T: K6 n/ W IIS6.0取消了对某些MIME类型的支持,例如ISO,致使客户端下载出错。1 T# b7 ?7 \2 U3 F) G- b9 d2 Y
: ?' `) _; d4 M8 c$ ]
解决方法:
! F( f3 |% ]8 T: K8 f
8 X6 d+ b; b! S& H$ n+ m 在IIS中属性->HTTP头->MIME类型->新建。在随后的对话框中,扩展名填入.ISO,MIME类型是application。1 ?7 j, t" H. ?$ {# I
! {3 y7 X8 l* f6 Y另外,防火墙阻止,ODBC配置错误,Web服务器性能限制,线程限制等因素也是造成IIS服务器无法访问的可能原因,这里就不再一一馈述了。
! P+ L; S7 [$ I+ H |
|