出错的代码: FileUpload.PostedFile.SaveAs(phyiscalPath)  其中phyiscalpath的内容是:"D:\Document\WorkDocs\PortalVBVS\uploads\TrainPlan"项目位于:D:\Document\WorkDocs\PortalVBVS下

解决方案 »

  1.   

    关注!说的是没有写入权限。可能从IIS与NTFS权限入手。
      

  2.   

    我已经将aspnet 假如了administrators组了。而且所有相关的文件夹都设置了,连everyone都有完全控制权限了。还是错误依旧。。
      

  3.   

    一般都是将文件夹uploads共享
    属性--安全--添加用户asp 设置访问权限
    就可以
      

  4.   

    ju_feng(NorthSky):我就是这样做的,没用
      

  5.   

    你试试,该项目的dll文件的权限!!!!
      

  6.   

    TrainPlan文件夹设置为everyone可完全控制
      

  7.   

    若要授予 ASP.NET 对文件的写访问权,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”以添加“{machinename}\ASPNET”用户。突出显示此 ASP.NET 帐户,在“允许”列中选中“写”框。
    这样不行?
      

  8.   

    这是我采取的办法,结果都不行:1、将aspnet加入administrators 组2、在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”以添加“{machinename}\ASPNET”用户,在“允许”列中选中“写”框3、在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”以添加“everyone”用户,在“允许”列中选中“写”框
    我的文件夹没有任何的“拒绝”权限和用户!
      

  9.   

    TrainPlan文件夹属性安全里加everyone可完全控制
      

  10.   

    我也没遇到个这类的问题,,因为我都是在fat格式下面做,所以没大注意NTFS下面的情形;不知道可否用模拟的方法来解决??就是让某段代码(这里是上传时)以超级用户的身份运行,远行后再回复默认的ASP.NET身份..这样对你的系统安全性我想是最好的.
      

  11.   

    “{machinename}\ASPNET”用户,好象不支持组授权,要直接授权,微软承认这是他的BUG,把ASPNET加上去试试
      

  12.   

    可能你用的是FrontPage服务器扩展在IIS映射的站点的相应目录下加上写入权限(这个权限由IIS管理)通常情况下只有脚本权限否则,改成文件共享的方式使用调试
      

  13.   

    1、确认你在IIS里对该站点/目录设置了可写的权限。2、你的站点不要放到NTFS分区中。
      

  14.   

    using System;
    using System.IO;
    using System.Web.UI.HtmlControls;
    namespace SunYatSite.Common
    {
    public class fileUp
    {
    protected HtmlInputFile hifUpFile1=null;
    protected HtmlInputFile hifUpFile2=null;
    protected HtmlInputFile hifUpFile3=null;
    protected HtmlInputFile hifUpFile4=null;
    protected HtmlInputFile hifUpFile5=null;
    protected string strPath; public fileUp()
    {
    } public fileUp(HtmlInputFile h1,string strPath)
    {
    this.hifUpFile1=h1;
    this.strPath=strPath;
    }
    public fileUp(HtmlInputFile h1,HtmlInputFile h2,string strPath)
    {
    this.hifUpFile1=h1;
    this.hifUpFile2=h2;
    this.strPath=strPath;
    }
    public fileUp(HtmlInputFile h1,HtmlInputFile h2,HtmlInputFile h3,string strPath)
    {
    this.hifUpFile1=h1;
    this.hifUpFile2=h2;
    this.hifUpFile3=h3;
    this.strPath=strPath;
    }
    public fileUp(HtmlInputFile h1,HtmlInputFile h2,HtmlInputFile h3,HtmlInputFile h4,string strPath)
    {
    this.hifUpFile1=h1;
    this.hifUpFile2=h2;
    this.hifUpFile3=h3;
    this.hifUpFile4=h4;
    this.strPath=strPath;
    } public fileUp(HtmlInputFile h1,HtmlInputFile h2,HtmlInputFile h3,HtmlInputFile h4,HtmlInputFile h5,string strPath)
    {
    this.hifUpFile1=h1;
    this.hifUpFile2=h2;
    this.hifUpFile3=h3;
    this.hifUpFile4=h4;
    this.hifUpFile5=h5;
    this.strPath=strPath;
    } public string file_up()
    {
    //取得轉換後的名稱,比如2002+12+01+13+40+50+01
    string strFileName1="";
    if(hifUpFile1!=null)
    strFileName1=getFileName(hifUpFile1.PostedFile.FileName,"01");
    string strFileName2="";
    if(hifUpFile2!=null)
    strFileName2=getFileName(hifUpFile2.PostedFile.FileName,"02");
    string strFileName3="";
    if(hifUpFile3!=null)
    strFileName3=getFileName(hifUpFile3.PostedFile.FileName,"03");
    string strFileName4="";
    if(hifUpFile4!=null)
    strFileName4=getFileName(hifUpFile4.PostedFile.FileName,"04");
    string strFileName5="";
    if(hifUpFile5!=null)
    strFileName5=getFileName(hifUpFile5.PostedFile.FileName,"05");
    string strFileName="";
    string filepath="";
    try
    {
    if (strFileName1.Trim()!=""&&hifUpFile1.PostedFile != null) 
    {
    filepath = Path.Combine(Path.GetFullPath(strPath), Path.GetFileName(strFileName1));
    hifUpFile1.PostedFile.SaveAs(filepath);
    strFileName+=strFileName1+";";
    }
    if (strFileName2.Trim()!=""&&hifUpFile2.PostedFile != null) 
    {
    filepath = Path.Combine(Path.GetFullPath(strPath), Path.GetFileName(strFileName2));
    hifUpFile2.PostedFile.SaveAs(filepath);
    strFileName+=strFileName2+";";
    }
    if (strFileName3.Trim()!=""&&hifUpFile3.PostedFile != null) 
    {
    filepath = Path.Combine(Path.GetFullPath(strPath), Path.GetFileName(strFileName3));
    hifUpFile3.PostedFile.SaveAs(filepath);
    strFileName+=strFileName3+";";
    }
    if (strFileName4.Trim()!=""&&hifUpFile4.PostedFile != null) 
    {
    filepath = Path.Combine(Path.GetFullPath(strPath), Path.GetFileName(strFileName4));
    hifUpFile4.PostedFile.SaveAs(filepath);
    strFileName+=strFileName4+";";
    }
    if (strFileName5.Trim()!=""&&hifUpFile5.PostedFile != null) 
    {
    filepath = Path.Combine(Path.GetFullPath(strPath), Path.GetFileName(strFileName5));
    hifUpFile5.PostedFile.SaveAs(filepath);
    strFileName+=strFileName5+";";
    }
    }
    catch
    { }
    if(strFileName.Trim()!="")
    strFileName=strFileName.Substring(0,strFileName.Length-1);
    return strFileName;
    }
    public string file_up(string FileName)
    {
    //取得轉換後的名稱,比如2002+12+01+13+40+50+亂數+01
    string strFileName1=getFileName(FileName,"01");
    string strFileName="";
    string filepath="";
    try
    {
    if (strFileName1.Trim()!="") 
    {
    filepath = Path.Combine(Path.GetFullPath(strPath), Path.GetFileName(strFileName1));
    hifUpFile1.PostedFile.SaveAs(filepath);
    strFileName+=strFileName1+";";
    }

    }
    catch
    { }
    if(strFileName.Trim()!="")
    strFileName=strFileName.Substring(0,strFileName.Length-1);
    return strFileName;
    }
    //**************************************
    //*取得原始文件名
    //*輸入:文件的原始路徑
    //*輸出:原始文件名
    //**************************************
    public string getFileName1(string strFilePath)
    {
    string strFileName=""; //文件名
    string strTemp="";
    int intPost=strFilePath.LastIndexOf("\\");
    if(intPost>0)
    {
    strTemp=strFilePath.Substring(intPost+1);
    if(strTemp.LastIndexOf(".")>0)
    strFileName=strTemp;
    }
    return strFileName;
    } //**************************************
    //*取得轉換後的文件名
    //*輸入:文件的原始路徑,id
    //*輸出:系統轉換後的文件名,比如年+月+日+時+分+秒+id(2002+12+01+13+40+50+01).副檔名
    //**************************************
    public string getFileName(string strFilePath,string id)
    {
    int intIndex;
    string strFileName="";
    if(strFilePath!=""&&strFilePath!=null)
    {
    Random myRandom=new Random();

    strFileName=DateTime.Now.ToString("yyyyMMddHHmmss")+myRandom.Next(100,999)+id;
    intIndex=strFilePath.LastIndexOf(".");
    if(intIndex>0)
    strFileName+=strFilePath.Substring(intIndex);
    }
    return strFileName;
    } //**************************************
    //*取得轉換後的文件路徑
    //*輸入:轉化後的文件名,方式
    //*輸出:換後的文件路徑
    //**************************************
    public string getFilePath(string strFileName,string strWay)
    {
    string strPath="";
    if(strWay=="1"&&strFileName!="")
    strPath="../songs/"+strFileName;
    if(strWay=="2"&&strFileName!="")
    strPath="../images/m6/"+strFileName;
    return strPath;
    }
    }
    }
      

  15.   

    在ntfs格式下
    不光要设定设定共享权限
    还要设定安全性中的权限
    你把aspnet账户都加进去试试还有,没有必要把aspnet账户加到administrators组中
    如果,需要,那MS早就做成这个样子了
    不好哦~~
      

  16.   

    我能想到的、大家告诉我的,都试了,tmd,奇迹就是不出现,晕了,被它强奸了我一个晚上的睡眠时间,悲惨啊。。
      

  17.   

    想问一下,你保存的文件是否有形如XX.XX这种形式
    如果不是文件的话,会出现这样的错误,我刚才也出了这样的错
    错处就是我只是写了什么文件的名,没有后缀
      

  18.   

    在你保存的文件夹的权限中加入asp.net
      

  19.   

    一点小建议:把写入文件的部分做成一个dll文件。
      

  20.   

    要在资源管理器中选中程序所在目录,点右键,选属性->安全,加入{machinename}\ASPNET,我的机器名是KKK,此处就填KKK\ASP,为此用户加上写入、修改权限就行了!就是这个原因了,上面的错误提示已经说得很清楚了!
      

  21.   

    似乎只有一点大家没提到了:不光是\TrainPlan需要有访问权限,\TrainPlan上层的所有目录都需要有aspnet用户有"遍历文件夹/运行文件"这个权限,不知楼主设置了没
      

  22.   

    搞定了。TMd,是我忘了把文件名加上,只有路径,Tmd,microsoft真会误倒人啊,也怪我一时粗心,谢谢大家的热情帮助,昨天晚上干了一个通宵,先回去了,明天揭贴