Win 8.1上的ASP Net权限允许Web用户保存文件?

时间:2015-05-24 13:50:07

标签: c# asp.net permissions

我正在使用ASP.NET和IIS 8.5的网站上工作。

该网站目前正在我的开发机器上运行(标准win 8.1笔记本电脑),我可以在网站上浏览一般。

当用户尝试将文件保存到文件夹时,我的问题就出现了。我收到错误: Access to the folder blah is denied

在网上搜索过后,我发现解决方法是将该文件夹的写权限授予ASP.NET用户。

我已授予I_USERS群组,应用池用户和网络服务的写入权限,但这仍未解决问题。

我也看到用户ASPNET也必须添加到权限中,但我似乎没有在我的计算机上拥有该用户。 - 这就是我收到错误的原因,还是完全不同的其他原因?

一些代码:

标记:

    <div class="col-sm-10" Style="float: left; padding-left: 10px;">
         <asp:FileUpload ID="FileUploader" style="width:100%" runat="server" CssClass="text" />
    </div>  

        /*****Some other controls (eg.textboxes) here *****/

    <div class="row">
        <div class="col-sm-12" style="margin-top:10px;">
            <asp:Button ID="uploadBTN" runat="server" CssClass="frbtn" OnClick="uploadBTN_Click" Text="Upload Video" Style="width: 20%; float: right;" />
        </div>
    </div>

代码背后:

    protected void uploadBTN_Click(object sender, EventArgs e)
    {
        FileUploader.SaveAs(FRConfig.VideoFolder); //This bit does the saving
        Video v = new Video(FileUploader.FileName, fileDescripTB.Text);//This saves the video data to a database.
        Helpers.Show("Video Uploaded Successfully!"); //This launches an alert to state it has been sucessfully uploaded.
    }

谢谢

1 个答案:

答案 0 :(得分:0)

使用IIS默认设置时,授予IIS_IUSRS写入权限应该足够了。 App Pool User自动成为IIS_IUSRS的成员,只有在更改应用程序池的标识时才需要Network Service

以下aspx页面测试默认网站的写入权限:

<%@ Page Language="C#" debug="true"%>
<script runat="server">
   void Page_Load() {
      System.IO.File.Copy(@"C:\inetpub\wwwroot\iis-85.png",@"C:\inetpub\wwwroot\new.png",true);
   }
</script>

您不应允许对Web根目录下的位置进行写访问,将文件上载放到不同的目录中。