|
|
很多朋友在用IIS6架网站的时候遇到不少问题,而这些问题有些在过去的IIS5里面就遇到过,有些是新出来的,做了很多次试验,结合以前的排错经验,做出了这个总结,希望能给大家帮上忙。
9 [, C" V4 q& P% F
, u; @1 g( v" {& ]4 K) l问题1:未启用父路径$ b; N: z; c9 z2 a8 a9 r; Y' G
症状举例: 5 O% q3 G: @' D8 q
2 y9 l a1 h$ T# j, D% ? Server.MapPath() 错误 \'ASP 0175 : 80004005\') ]" g: p- g. c4 Q, X% ~
2 U7 c9 }" U& }8 `; g! s 不允许的 Path 字符# l1 `1 E* O, h" ` |6 F
- ]) ]0 d# f/ X: R( k
/0709/dqyllhsub/news/OpenDatabase.asp,行 4
& \$ n! t) B+ J5 `: I: k7 ?, G3 ~/ R3 J$ Q
在 MapPath 的 Path 参数中不允许字符 \'..\'。% S+ x$ s9 c2 n
/ q4 E) [+ q$ o
) e) B& M( H) k; k6 b! p原因分析:
9 z. R! [( l2 k' u- c; L0 X' ~& K
许多Web页面里要用到诸如../格式的语句(即回到上一层的页面,也就是父路径),而IIS6.0出于安全考虑,这一选项默认是关闭的。 如果是使用LEADBBS论坛的朋友就要注意了,DV的不会出现问题。/ J9 p6 S4 g8 ^9 B$ L3 H; t
{+ g# D4 O1 y1 V3 q解决方法:
5 R8 n6 g, M) Q; h/ u2 V! S) g9 x7 G' } C
在IIS中属性->主目录->配置->选项中。把”启用父路径“前面打上勾。确认刷新。! M! b0 M5 h+ P2 c) \, ~0 f5 l$ a
+ f, s1 ]( B/ D8 r0 ~. V8 t8 t
问题2:ASP的Web扩展配置不当(同样适用于ASP.NET、CGI)7 A# I9 b' `- j6 _3 k" c3 V
$ Z' A3 J( E2 V; [1 l7 }% a
症状举例:; O' o2 F7 \1 E Q
2 |& r6 R5 C( P9 v' tHTTP 错误 404 - 文件或目录未找到。
5 E$ e- p$ ~$ Z# k [$ H
; [3 w7 W d( Z" S. E! n) o原因分析:% P/ M0 i" x. Z
/ W, N- C! j9 |$ Z( D) Z
+ ~' t6 Z2 r* S k5 k0 r% d. k 在IIS6.0中新增了web程序扩展这一选项,你可以在其中对ASP、ASP.NET、CGI、IDC 等程序进行允许或禁止,默认情况下ASP等程序是禁止的。
) E' |2 s# @2 z N5 ~
' K8 M" ]9 Y& j2 L/ k# P- E: r3 \7 L% U解决方法:
8 Y' z3 K u) \! P* ~8 s" J
, }1 N' U+ A& t7 I% ?. n" U' l在IIS中的Web服务扩展中选中Active Server Pages,点击“允许”。" c4 M7 m( O) A2 F
' q( t Z8 d' ^+ N
问题3:身份认证配置不当4 `- J4 ~1 B! R
* h1 e1 ~& T: L9 `. Z) D9 D
症状举例:4 s' |5 X4 m, Y
% u7 H& o! H% u4 K& D" H HTTP 错误 401.2 - 未经授权:访问由于服务器配置被拒绝。8 r% U- [3 T! D* ]# m3 v' o
5 e- e! e, ^3 N. ?1 l4 \
原因分析:4 Q% b- g! ?. P+ W/ l4 |
8 }3 B' j9 h% h: ^: [ IIS 支持以下几种 Web 身份验证方法:: y r- u2 x- `- `: s, W; |
( t4 i* n: k6 M1 h(1)匿名身份验证( H! R( h, o2 C% L; N2 @4 S
$ e9 b& e ?4 y; A; E8 J" d+ T
IIS 创建 IUSR_计算机名称帐户(其中计算机名称是正在运行 IIS 的服务器的名称),用来在匿名用户请求 Web 内容时对他们进行身份验证。此帐户授予用户本地登录权限。你可以将匿名用户访问重置为使用任何有效的 Windows 帐户。
% ~7 _5 S0 c) F9 Q& M3 q# q; X8 `' l4 R2 W. U& E) s1 E0 c2 z& h, w
(2)基本身份验证5 O9 s/ Z6 z/ n- { _' c. {
, n3 i6 b" z' W. J3 y 使用基本身份验证可限制对 NTFS 格式 Web 服务器上的文件的访问。使用基本身份验证,用户必须输入凭据,而且访问是基于用户 ID 的。用户 ID 和密码都以明文形式在网络间进行发送。0 s0 K: |0 w- V; V
9 |- W# T( x8 l# {* n8 N
(3)Windows 集成身份验证, ?" \, T% Y: [5 ?5 e
5 c+ w% |+ I6 R" u( T Windows集成身份验证比基本身份验证安全,而且在用户具有Windows域帐户的内部网环境中能很好地发挥作用。在集成的Windows 身份验证中,浏览器尝试使用当前用户在域登录过程中使用的凭据,如果尝试失败,就会提示该用户输入用户名和密码。如果你使用集成的Windows身份验证,则用户的密码将不传送到服务器。如果该用户作为域用户登录到本地计算机,则他在访问此域中的网络计算机时不必再次进行身份验证。* ^- H% v, X' E: W
' r9 I0 S; N3 o2 ]5 _- G(4)摘要身份验证
( o; h. o* b, I7 b, b5 ~/ {: Z$ V5 K
# R* T- ?' a0 z3 g* U6 @3 E 摘要身份验证克服了基本身份验证的许多缺点。在使用摘要身份验证时,密码不是以明文形式发送的。另外,你可以通过代理服务器使用摘要身份验证。摘要身份验证使用一种挑战/响应机制(集成 Windows 身份验证使用的机制),其中的密码是以加密形式发送的。
2 u3 C: J; w1 b( _4 s& w" V. K" Q3 G; B5 m9 Y0 Z
.NET Passport 身份验证 [! E& P9 T) e: B! P3 U) [. i
8 q) x) g( d0 HMicrosoft .NET Passport 是一项用户身份验证服务,它允许单一签入安全性,可使用户在访问启用了 .NET Passport 的 Web 站点和服务时更加安全。启用了 .NET Passport 的站点会依靠 .NET Passport 中央服务器来对用户进行身份验证。但是,该中心服务器不会授权或拒绝特定用户访问各个启用了 .NET Passport 的站点。& G$ @" ]9 Z3 F* q, P$ `" I
, _; X; I" s. e2 w( u& y
解决方法:, |4 _5 s6 |/ M9 c
6 m7 o$ n$ |% R# x4 J
根据需要配置不同的身份认证(一般为匿名身份认证,这是大多数站点使用的认证方法)。认证选项在IIS的属性->安全性->身份验证和访问控制下配置。
* l3 b) t) z B. ]* E* q% w r
' k( {" m3 w, m- |5 R6 o: K! ~. t) s- \& [! E* \. R$ z
问题4:IP限制配置不当, } O. _3 p ~6 P' D# H& o% V
. O/ H: ]/ O0 |5 ]& A症状举例:
/ z1 K; u4 Y r" W7 K! [, p& k* g! D
7 |% }& @0 H1 u- G
HTTP 错误 403.6 - 禁止访问:客户端的 IP 地址被拒绝。, ~0 M4 Q1 s- U8 o' \
# z8 t) M* E) W4 {7 |原因分析:) l9 c) p- t4 I. O+ |$ z8 w
3 O L, ^1 X' D+ n! k) u
+ H' a4 s+ ~# e5 c IIS提供了IP限制的机制,你可以通过配置来限制某些IP不能访问站点,或者限制仅仅只有某些IP可以访问站点,而如果客户端在被你阻止的IP范围内,或者不在你允许的范围内,则会出现错误提示。
# v/ E0 a, C- w+ G
& C4 G/ \+ d. C' [解决方法:7 c- v, a* x2 V, O2 Q m5 m6 Q Q
- o) H* k- B* i) g& m) Y3 D w5 X
进入IIS的属性->安全性->IP地址和域名限制。如果要限制某些IP地址的访问,需要选择授权访问,点添加选择不允许的IP地址。反之则可以只允许某些IP地址的访问。
& R# i5 G' l) E% U* |: M' Z4 f" P6 D- l" N
问题5:IUSR账号被禁用
* r$ g% Z6 o8 R! }3 D( i1 n/ x2 e1 f9 G. Y8 M5 e
症状举例:
& O% |0 S% o2 B. L
1 c# j1 f3 |% z- o
& t- b% v1 s: J; ?5 x HTTP 错误 401.1 - 未经授权:访问由于凭据无效被拒绝。7 A. L- O7 Y0 i3 q% Z6 ]% h
( f) h/ ~: m0 V* F" i# S原因分析:
# D6 A# v0 L# _) P6 @% i7 T
3 a* T9 c% S% |2 N
9 L. g' }0 T Z. o+ _6 s( R 由于用户匿名访问使用的账号是IUSR_机器名,因此如果此账号被禁用,将造成用户无法访问。0 ]7 k, W. K* S7 A
- y6 X9 J6 A* G0 d) R) d
解决办法:
; ~! M9 n8 v5 a! L, R! |6 G, p
) p+ o3 Z# _7 @- ]5 C e+ M: ^控制面板->管理工具->计算机管理->本地用户和组,将IUSR_机器名账号启用。4 L5 [. |! R0 X9 c
2 }. A* u; G7 Y6 r5 U问题6:NTFS权限设置不当
( s" V3 p2 E* r症状举例:3 Q2 R5 P0 V0 T3 m7 x3 `! c' u/ C
; k7 `! _5 y: ? d( l5 V% [" U" O
; K0 l- i- {+ M$ U. g2 e HTTP 错误 401.3 - 未经授权:访问由于 ACL 对所请求资源的设置被拒绝。
6 e+ k }- _8 A" {* D6 Q; R
& X F& Y, W5 Y$ c+ ~% W! G原因分析:1 t k1 w' A3 X- i! L+ s* ]' {
2 Y- D7 w/ e3 Q0 T% _ q& v& o/ l! Q( X) u* g+ W
Web客户端的用户隶属于user组,因此,如果该文件的NTFS权限不足(例如没有读权限),则会导致页面无法访问。' E9 `" B# `: E5 l+ k5 Z
1 J( H$ t2 V' w# {2 C. P( \) U" M解决办法:
# `; O" z9 W* A8 F! f1 a9 c" A
+ b* `/ j$ B) o N* {" j6 d, D f1 T" x! ]$ u D; z6 L/ _7 w; L Y) ]
进入该文件夹的安全选项卡,配置user的权限,至少要给读权限。关于NTFS权限设 置这里不再馈述。
+ `( _( N$ h9 E* C$ N. H2 E. O: R1 @/ w
; [4 V/ @6 j, s& o问题7:IWAM账号不同步0 ], o$ P+ U8 k3 H- f
8 Q# ~7 F" d+ j- a7 r
注意:这个问题经常出现!!!!/ L( V. a, t1 T. T9 H( g8 @
症状举例:
8 \" y' H2 W; L9 ~ @, `. l3 P0 Y& m6 @4 x: q
4 f3 R. f+ v7 F4 D ]8 G. O
HTTP 500 - 内部服务器错误) ?% ]( r9 ~ L) }# E& H
' a$ L8 @" g& o/ `3 O原因分析:0 n, ^5 o2 r: U8 g
. |2 t0 S! Z: G4 P
) ^! p9 x6 f* U+ n3 d5 |. H& j8 q9 z
IWAM账号是安装IIS时系统自动建立的一个内置账号。IWAM账号建立后被Active Directory、IIS metabase数据库和COM+应用程序三方共同使用,账号密码被三方分别保存,并由操作系统负责这三方保存的IWAM密码的同步工作。系统对IWAM账号的密码同步工作有时会失效,导致IWAM账号所用密码不统一。+ w" J# `6 z' q9 M
3 ?2 b8 h, I4 R; ?
解决办法:! t" g: q, X. M/ K l- d& j
$ B8 E' F* x# u# ~/ n+ @7 G
7 P, z \0 I+ |" |1 A3 G$ y5 H" e 如果存在AD,选择开始->程序->管理工具->Active Directory用户和计算机。为IWAM账号设置密码。运行c:\Inetpub\AdminScripts>adsutil SET w3svc/WAMUserPass +密码同步IIS metabase数据库密码运行cscript c:\inetpub\adminscripts\synciwam.vbs -v 同步IWAM账号在COM+应用程序中的密码
) D3 Z, X) K, L! N" }+ h A: B' u6 h6 q
问题8:MIME设置问题导致某些类型文件无法下载(以ISO为例)" _6 x+ D; B7 n9 p
( J/ L' O; \ D' R症状举例:
- [& l$ Q9 b; J* J
( |4 ^( x3 e) P- d) a HTTP 错误 404 - 文件或目录未找到。
" K5 \2 T& @8 N6 ^0 A) U1 `+ [# `$ W: e2 Z
原因分析:
7 P+ g. e9 s& ?" C t
" B+ M& t$ ~6 l* Z& c) h IIS6.0取消了对某些MIME类型的支持,例如ISO,致使客户端下载出错。- t* }, n9 b- m
, D' t: x: k% ~1 \解决方法:
. w. I' k. K1 y I
" c$ p6 I) F+ s9 g0 v6 \- }) s2 W 在IIS中属性->HTTP头->MIME类型->新建。在随后的对话框中,扩展名填入.ISO,MIME类型是application。2 D, f! W* a5 T: I
: |! w5 p0 p2 c: q1 g7 h- O" ?) X
另外,防火墙阻止,ODBC配置错误,Web服务器性能限制,线程限制等因素也是造成IIS服务器无法访问的可能原因,这里就不再一一馈述了。
- w: ~0 w! k- S1 v# n; d: A4 A; O |
|