我的代码背后
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
DirectoryInfo theFolder = new DirectoryInfo(@"C:\temp\Server_Attachments\6");
string Attachment = "";
foreach (FileInfo nextFile in theFolder.GetFiles())
{
Attachment += "<a href=\"C:\\temp\\Server_Attachments\\6\\blabla.xls\">" + nextFile.ToString() + "</a><br />";
div1.InnerHtml = Attachment;
}
}
protected void Attach_File(object sender, EventArgs e)
{
FileUpload1.SaveAs(@"C:\Server_Attachments\6");
}
}
我的HTML页面就像这样
<div id="div1" runat="server"></div>
<asp:Label ID="Label1" runat="server" Text=" Attach a file : "></asp:Label><br />
<asp:FileUpload ID="FileUpload1" runat="server" Font-Names="Tahoma" Font-Size="Small" />
<br />
<asp:Button ID="Button2" runat="server" Text=" Attach " Font-Names="Tahoma" Font- Size="Small" OnClick="Attach_File" />
没有超链接,也没有上传工作:(
当我点击超链接时,没有发生任何事情(虽然“目标另存为”正在运行)。
当我尝试上传时,我收到错误“访问路径'C:\ Server_Attachments \ 6'被拒绝。”
这显然是一个安全问题。我已经检查了哪个帐户正在运行该程序,它是NETWORK SERVICE。
我该如何解决这个问题?我可以完全访问NETWORK SERVICE吗?它安全吗?
答案 0 :(得分:2)
您应该考虑整个应用程序的权限以及它可以访问的资源。
好的做法是在服务器上创建一个新用户,从用户组中删除它并将其添加为IIS_IUSER组的成员。
现在,应用程序访问的文件夹可以访问该用户,也可以为该用户创建数据库登录并映射应用程序数据库。
这样,您的应用程序就会通过权限与其他应用程序隔离。
答案 1 :(得分:1)
如果您想允许文件上传,那么您就必须这样做。是的,这可能是一个安全问题 - 你需要确保其他一切都被锁定。
为上传文件夹的“网络服务”提供“写入”访问权限。为下载文件夹提供“网络服务”的“读取”访问权限。
无需授予对网络服务的完全控制权。
答案 2 :(得分:0)
为该文件夹的IIS_IUSER提供写入权限并尝试。