1。服务器上两个目录:  
wwwroot/admin 
wwwroot/html 2。admin目录下有两个asp文件 
fso_test.asp 
fso2_test.asp 3。运行方法,以及运行结果。 
http://www.mydomain.com/admin/fso_test.asp,成功在html目录下生成test.htm 
http://www.mydomain.com/admin/fso2_test.asp,发生错误:Server.MapPath() error 'ASP 0173 : 80004005' 
4。附录,两个文件的内容: fso_test.asp 
<% 
Set fso = Server.CreateObject("Scripting.FileSystemObject") 
Set fl = fso.CreateTextFile(Server.MapPath("../html/test.htm")) 
fl.WriteLine " <HTML> " 
fl.WriteLine " <TITLE> test page! </TITLE> " 
fl.WriteLine "fso 相对路径" 
fl.WriteLine " </HTML> " 
fl.Close 
%> fso2_test.asp 
<% 
Set fso = Server.CreateObject("Scripting.FileSystemObject") 
Set fl = fso.CreateTextFile(Server.MapPath("http://www.mydomain.com/html/test2.htm")) 
fl.WriteLine " <HTML> " 
fl.WriteLine " <TITLE> test2 page! </TITLE> " 
fl.WriteLine "fso 绝对路径" 
fl.WriteLine " </HTML> " 
fl.Close 
%> 5。已有权限 
1) IUSR 完全控制权限 
2) IIS网站的“主目录”中的“写入”权限 
6。问题 
请问要如何设置,才能使得fso2_test.asp能够成功运行?

解决方案 »

  1.   

    Server.MapPath是相对路径.第二个页面移掉Server.MapPath即可.你可以看看Server.MapPath生成的string.很简单的问题.
      

  2.   

    Server.MapPath后面传入的应该是相对路径.抱歉有点没说清楚.
      

  3.   

    Server.MapPath("http://www.mydomain.com/html/test2.htm") 
    这样是肯定不行的
      

  4.   

    Set fl = fso.CreateTextFile(Server.MapPath("http://www.mydomain.com/html/test2.htm"))  
    可以拥CONFIG
    读取的时候设置为"AAA.WEB.COM/IMAGES/"
    保存的时候设置为"../image/"
    用的时候自己去读CONFIG拼接 就好了
      

  5.   

    很容易解决的问题.目录都位置 wwwroot目录下.那么以根目录开始算写绝对目径.Set fso = Server.CreateObject("Scripting.FileSystemObject")  
    Set fl = fso.CreateTextFile(Server.MapPath("/html/test.htm"))不管你的文件在admin还是html目录下,那么都能访问 /html/test.htm
      

  6.   

    说了把Server.MapPath去掉.你可以赋给一个string看看结果嘛
    string s=Server.MapPath("path");
    很简单的问题.
      

  7.   

    Server.MapPath("http://www.mydomain.com/html/test2.htm")   
    改成
    "http://www.mydomain.com/html/test2.htm"
    我说了那么久你不听,晕死了.
      

  8.   

     发表于:2008-03-08 12:15:169楼 得分:0  
    很容易解决的问题.  目录都位置 wwwroot目录下.  那么以根目录开始算写绝对目径.  Set fso = Server.CreateObject("Scripting.FileSystemObject")    
    Set fl = fso.CreateTextFile(Server.MapPath("/html/test.htm"))  不管你的文件在admin还是html目录下,那么都能访问 /html/test.htm  
      
    ___________________ 这个是可以成功执行的。 
    请问:如果要让Set fl = fso.CreateTextFile(Server.MapPath("http://www.mydomain.com/html/test2.htm"))  能成功执行,需要什么权限?
    -------------------------------------------------------------------------
    以站点根目录做为起点,计算绝对路径,是这一类路径问题解决的通用办法. 这要求人有一个习惯, 比如说就一个简单的href也会这么来指,而不是../html/..
    形成惯性思维之后怎么都不会出错.到于 要 server.mappath("http://xxxx") 这种是不是会执行成功的.
    首先你需要明白server对象指的是什么,就是指的你的服务器上的当前站点, 那么mappath又能指到哪呢? 无法超出服务器范围.
    虽然,www.mydomain.com 可能就是指向你的服务器, 但在这种处理情况下,系统不这么认为,它认为这是一个跨域操作.所以无论你怎么设置test2.htm或html目录的权限都是不行的.
    因为它的流程是:server1.asp 创建fso对像. 使用 iusr_xxx 默认来宾帐号, iusr_xxx 具有对html目录的写权限
    server1.asp.fso.createFile to server2 (这里把http://www.mydomain.com/ 理解为serverv2, 尽管它们位于同一服务器) server1.iusr_xxx 执行本地代码往server2上写文件? 这不仅仅是fso对象不支持的,也是协议不支持的.试想,如果我的站点上执行一段代码能改你网站上的文件...那就天下大乱了.如果非往http:// 这样的地方写文件,那么最好是,在 http://... 这里建立webservice, 然后本地服务器代码调用web service生成.
      

  9.   

    我只是跟你说Server.MapPath生成的string是怎么样的而已.改成这样以后string肯定对了.后面是CreateTextFile的问题.
      

  10.   

    非常感谢 fcuandy 的详细解释。是这样,以下这个语句,在有的isp处能够执行,有的isp却不能执行。所以我想知道权限设置的问题。
    Set fl = fso.CreateTextFile(Server.MapPath("http://www.mydomain.com/html/test2.htm"))  
      

  11.   

    新问题:
    1。服务器上3个目录:  
    wwwroot/admin 
    wwwroot/html 
    wwwroot/inc2。如果fso_test.asp 放在inc目录里,或者admin目录里,都能正确运行。3。如果fso_test.asp 做成函数,放在inc目录里. 在admin里的程序调用这个函数, 结果是: 生成的/html/test.htm 是一个0字节的文件.4。重要声明: 程序肯定没有错,在有的isp上能正常生成文件,但有的isp上生成0字节的文件. 应该是什么权限问题。5。附录:
    fso_test.asp 
    <% 
    Set fso = Server.CreateObject("Scripting.FileSystemObject") 
    Set fl = fso.CreateTextFile(Server.MapPath("/html/test.htm")) 
    fl.WriteLine " <HTML> " 
    fl.WriteLine " <TITLE> test page! </TITLE> " 
    fl.WriteLine "fso 相对路径" 
    fl.WriteLine " </HTML> " 
    fl.Close 
    %> 函数 Public Sub MakeHtml()
    Set fso = Server.CreateObject("Scripting.FileSystemObject") 
    Set fl = fso.CreateTextFile(Server.MapPath("/html/test.htm")) 
    fl.WriteLine " <HTML> " 
    fl.WriteLine " <TITLE> test page! </TITLE> " 
    fl.WriteLine "fso 相对路径" 
    fl.WriteLine " </HTML> " 
    fl.Close
    End Sub
      

  12.   

    不要怀疑调用函数错误. 如果admin的的程序传参数给MakeHtml(),是能够正确传递的.
      

  13.   

    我对FSO也就了解那么多
    FSO太多知识我还没了解到了