将图像上载到服务器中的文件夹时,拒绝访问路径

时间:2009-03-10 06:32:57

标签: c#

当您要将文件上传到服务器中的指定文件夹时,会出现错误。在这里,我将在storeimg文件夹中上传P6100083.jpg。当我要上传时,我收到以下错误:

访问路径'C:\inetpub\vhosts\bookmygroups.com\httpdocs\storeimg\P6100083.jpg' is denied.

任何人都可以帮助我...如何使用permisiion并使用...

我的代码是在上传图片时

if (FileUpload1.HasFile)
{           
    float fileSize = FileUpload1.PostedFile.ContentLength;
    float floatConverttoKB = fileSize / 1024;
    float floatConverttoMB = floatConverttoKB / 1024;
    string DirName = "storeimg";
    string savepath = Server.MapPath(DirName + "/");
    DirectoryInfo dir = new DirectoryInfo(savepath);
    // string savepath = "C:\\Documents and Settings\\ssis3\\My Documents\\Visual Studio 2005\\WebSites\\finalbookgroups\\" + DirName + "\\";

    if (fileSize < 4194304)
    {
        string filename = Server.HtmlEncode(FileUpload1.FileName);
        string extension = System.IO.Path.GetExtension(filename).ToUpper();

        if (extension.Equals(".jpg") || extension.Equals(".JPG") || extension.Equals(".JPEG") || extension.Equals(".GIF"))
        {            
            savepath += filename;                       
            FileUpload1.SaveAs(savepath);
        }
    }
}

提前致谢

6 个答案:

答案 0 :(得分:2)

我没有成功在IIS7上对文件系统进行上传或任何写操作。

仍然收到错误:拒绝访问路径。

我的AppPool在网络服务下运行。我已经授予各种帐户完全控制(网络服务,网络,IIS_IUSR,管理员,用户,所有人),重启webservice几次,研究所有IIS7设置,谷歌搜索两个小时,没有任何作用。

IIS7和WS2008 s-u-c-k-s。抱歉这个词。有人可以帮忙吗?

我只想添加:我注意到在上传的目标文件夹的属性中有一个名为“只读(仅适用于文件夹中的文件)”的复选框,并且已经选中了它。无法取消选中,取消选中并单击“确定”按钮后返回检查。是IIS7守护它吗?

编辑此消息以添加解决方案:我的管理员已关闭我们服务器上的愚蠢的UAC“安全确认功能”,重新启动机器,它现在可以正常工作。不需要“网络服务”或任何其他IIS使用帐户的“写入”访问权限。使用集成身份验证访问ASP.NET Web应用程序中的文件系统并在其web.confing中将模拟设置为true时,文件系统似乎由身份验证的最终用户帐户访问,而不是由网络服务帐户访问AppPool正在运行。 (许多人告诉您设置网络服务权限,但事实并非如此。)因此,您需要为特定文件夹上的最终用户(通常是域用户:“DOMAIN \域用户”)设置“写入”权限。

哦,是的,上面提到的“只读(仅适用于文件夹中的文件)”复选框似乎没有任何效果。但微软称“某些程序可能在写入此类文件夹时遇到问题,您应该使用命令行语句”attrib -r -s“来删除”只读“属性” - 但它不起作用。它会留在那里检查灰色。但不要担心。微软每天变得越来越愚蠢。

答案 1 :(得分:1)

Indead,这是一个服务器问题。

您需要验证应用程序池底层的用户是否具有该目录的写入权限。

如果你使用IIS7,你有一项新功能可以帮助你为这个用户提供自定义写入,并且dun需要更改用户。

看看这个链接: http://www.adopenstatic.com/cs/blogs/ken/archive/2008/01/29/15759.aspx

希望这有帮助。

答案 2 :(得分:0)

这是一个服务器问题。确保您具有写入文件的必要权限。

顺便说一下,由于您在分机上致电ToUpper(),因此没有理由为".jpg"进行测试。

答案 3 :(得分:0)

如果您使用的是Plesk Panel,请转到Plesk Panel的文件管理器。列出“httpdocs”中的文件和文件夹。每个文件和文件夹右侧都有一个锁定图标。单击“storeimg”文件夹以更改权限。点击advenced按钮。完全允许这些:

  • Plesk IIS WP用户(IWPD_214(your_login_name))
  • Plesk IIS WP用户(IWPD_214(your_login_name))

然后点击“确定”。

答案 4 :(得分:0)

首先检查权限是否启用,如果没有,则转到该文件夹​​,该文件夹必须用于包含文件,然后右键单击文件夹,然后将显示文件夹属性,然后单击安全性将显示多个数字用户必须是许可的用户然后单击允许激活所有权限。

答案 5 :(得分:0)

首先,确保您的代码在本地运行良好(我假设您已经完成了某些事情)。

然后部署到您的TEST或UAT环境。如果您遇到问题,那么这是一个配置问题。确保运行网站应用程序池的服务帐户可以访问该文件夹。

请使用C#方法Path.Combine()来构建路径并避免导致或尾随/和\的问题。