Server.MapPath() 错误 'ASP 0173 : 80004005'

来源:百度知道 编辑:UC知道 时间:2024/06/04 07:25:09
<%
if session("admin_name")="" then
response.redirect "index.asp"
end if
%>
<!--#include file="conn.asp"--><head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href=../css.css rel=STYLESHEET type=text/css>
</head>

<%
set rs=server.createobject("ADODB.Recordset")
sql="select * from hw where hw_id="&request("hw_id")&""
rs.open sql,conn,1,3
if not rs.eof or rs.bof then

if rs("hw_pic")<>"" then
tempfpath="../"&rs("hw_pic")
FiLePaTh = Server.MapPath(tempfpath)[说是这个地方出错了](行20)
Set fso = CreateObject("Scripting.FileSystemObject")
fso.DeleteFile(FiLePaTh)
set fso=nothing
end if

conn.execute("delete * from hw where hw_id="&r

server.MapPath()不允许使用../
可以使用"\"和"/"效果一样

逐步如下测试:
第一步,启用父目录,方法:在iis的主目录里,执行权限的旁边有一个“配置”按钮,点一下,选择“选项”标签,勾选里面的“启用父目录”,点确定,然后打开你的页面,测试结果是否正常。如不正常则继续第二步。

第二步,去掉../ 。也就是将tempfpath="../"&rs("hw_pic") 改成
tempfpath=rs("hw_pic") ,实验,如仍不成功我们就采用第三步终极措施。

第三步,终极龌龊大法:采用绝对路径

tempfpath="../"&rs("hw_pic")
FiLePaTh = Server.MapPath(tempfpath)
改成
FiLePaTh = Server.MapPath("/")&"/"&rs("hw_pic")
这个绝对路径要根据情况设置呵呵。如你的rs对象的hw_pic字段里存的是根目录下的temp文件夹下的路径,那么在此就应该改成
FiLePaTh = Server.MapPath("/")&"/temp/"&rs("hw_pic")
你这个出错的原因是,默认情况下server对象的mappath方法,不支持你浏览根目录的上一级目录,也就是说,一般的,不允许你访问虚拟空间以外的东西,如你的虚拟空间在d盘的user文件夹里,那么你就一般情况下没有访问c盘下的文件。这是因为,现在的安全措施里,主机管理员为了防止黑客的无耻旁注攻击,为每一个虚拟空间用户设置了各自的应用程序池,iis访问帐号,及你的这个文件夹的访问权限。
二级域名的,说实在的,我还真没用过,不过按照理性的理解来说,二级域名应该没什么影响的,因为我们这个mappath可以求出其绝对路径,不受相对路径的影响。