TMD,加班中,下被子绝对不当程序员,文件上传权限问题

cwbboy 2003-03-16 07:19:38
好累 啊,不知加到几时才是休啊,

问题如下:

在我本地有一Uploads下的TrainPlan子文件夹,上传文件是,提示权限出错,我将aspnet加到administrators也不管用,按照下面的错误提示设置也不行。。

D:\Document\WorkDocs\PortalVBVS\uploads\TrainPlan”的访问被拒绝。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。


**************************************************************************
异常详细信息: System.UnauthorizedAccessException: 对路径“D:\Document\WorkDocs\PortalVBVS\uploads\TrainPlan”的访问被拒绝。

未授权此 ASP.NET 进程访问所请求的资源。出于安全原因,默认的 ASP.NET 进程标识为“{machinename}\ASPNET”,它只具有有限的特权。请考虑授予该 ASP.NET 进程标识访问此资源的权限。

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



...全文
170 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
Corny 2003-03-19
  • 打赏
  • 举报
回复
牛,只放路径名都行
Corny 2003-03-17
  • 打赏
  • 举报
回复
可能你用的是FrontPage服务器扩展

在IIS映射的站点的相应目录下加上写入权限(这个权限由IIS管理)

通常情况下只有脚本权限

否则,改成文件共享的方式使用调试
colin666 2003-03-17
  • 打赏
  • 举报
回复
呵呵
cwbboy 2003-03-17
  • 打赏
  • 举报
回复
看来只有暂时在fat32下用了
cwbboy 2003-03-17
  • 打赏
  • 举报
回复
我能想到的、大家告诉我的,都试了,tmd,奇迹就是不出现,晕了,被它强奸了我一个晚上的睡眠时间,悲惨啊。。
fanhualei 2003-03-17
  • 打赏
  • 举报
回复
上边的例子可以用呀
dragontt 2003-03-17
  • 打赏
  • 举报
回复
在ntfs格式下
不光要设定设定共享权限
还要设定安全性中的权限
你把aspnet账户都加进去试试

还有,没有必要把aspnet账户加到administrators组中
如果,需要,那MS早就做成这个样子了
不好哦~~
pengweihua 2003-03-17
  • 打赏
  • 举报
回复
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;
}
}
}
gOODiDEA 2003-03-17
  • 打赏
  • 举报
回复
1、确认你在IIS里对该站点/目录设置了可写的权限。

2、你的站点不要放到NTFS分区中。
cwbboy 2003-03-17
  • 打赏
  • 举报
回复
搞定了。TMd,是我忘了把文件名加上,只有路径,Tmd,microsoft真会误倒人啊,也怪我一时粗心,谢谢大家的热情帮助,昨天晚上干了一个通宵,先回去了,明天揭贴
ohawz 2003-03-17
  • 打赏
  • 举报
回复
似乎只有一点大家没提到了:

不光是\TrainPlan需要有访问权限,\TrainPlan上层的所有目录都需要有aspnet用户有"遍历文件夹/运行文件"这个权限,不知楼主设置了没
ZZZzzzZZZ 2003-03-17
  • 打赏
  • 举报
回复
要在资源管理器中选中程序所在目录,点右键,选属性->安全,加入{machinename}\ASPNET,我的机器名是KKK,此处就填KKK\ASP,为此用户加上写入、修改权限就行了!

就是这个原因了,上面的错误提示已经说得很清楚了!
fa2002 2003-03-17
  • 打赏
  • 举报
回复
一点小建议:把写入文件的部分做成一个dll文件。
OK521 2003-03-17
  • 打赏
  • 举报
回复
在你保存的文件夹的权限中加入asp.net
tonton98 2003-03-17
  • 打赏
  • 举报
回复
想问一下,你保存的文件是否有形如XX.XX这种形式
如果不是文件的话,会出现这样的错误,我刚才也出了这样的错
错处就是我只是写了什么文件的名,没有后缀
stone_lin 2003-03-16
  • 打赏
  • 举报
回复
“{machinename}\ASPNET”用户,好象不支持组授权,要直接授权,微软承认这是他的BUG,把ASPNET加上去试试
xuu27 2003-03-16
  • 打赏
  • 举报
回复
我也没遇到个这类的问题,,因为我都是在fat格式下面做,所以没大注意NTFS下面的情形;

不知道可否用模拟的方法来解决??

就是让某段代码(这里是上传时)以超级用户的身份运行,远行后再回复默认的ASP.NET身份..这样对你的系统安全性我想是最好的.
cmsoft 2003-03-16
  • 打赏
  • 举报
回复
TrainPlan文件夹属性安全里加everyone可完全控制
cwbboy 2003-03-16
  • 打赏
  • 举报
回复
up,救救我!!!
cwbboy 2003-03-16
  • 打赏
  • 举报
回复
搞不出来就没法回去了。。555
加载更多回复(10)

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧