Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何在iis7中阻止web文件访问之外的网站目录_Asp.net_Iis 7_Windows Server 2008 - Fatal编程技术网

Asp.net 如何在iis7中阻止web文件访问之外的网站目录

Asp.net 如何在iis7中阻止web文件访问之外的网站目录,asp.net,iis-7,windows-server-2008,Asp.net,Iis 7,Windows Server 2008,我有一台windows server 2008。我添加了几个使用IIS7的网站。但所有网站都可以访问外部文件。例如: @{ DirectoryInfo di=new DirectoryInfo("c:\\");} @foreach (var item in di.GetFiles()) { <div>@item.FullName</div> } @{DirectoryInfo di=newdirectoryinfo(“c:\\”);} @foreach(di.G

我有一台windows server 2008。我添加了几个使用IIS7的网站。但所有网站都可以访问外部文件。例如:

@{ DirectoryInfo di=new DirectoryInfo("c:\\");}
@foreach (var item in di.GetFiles())
{
    <div>@item.FullName</div>
}
@{DirectoryInfo di=newdirectoryinfo(“c:\\”);}
@foreach(di.GetFiles()中的变量项)
{
@item.FullName
}
此代码成功枚举文件。我需要配置无法访问外部网站目录。仅在文件和文件夹内使用


怎么做

您可以创建具有有限权限的新用户,并将其设置为在此用户下运行应用程序池

更改应用程序池的标识(即指定应用程序池运行的凭据)

  • 开放IIS
  • 在连接树中选择应用程序池
  • 选择应用程序池
  • 单击鼠标右键,然后选择“高级设置”
  • 查找流程模型/标识。默认值可能为ApplicationPoolIdentity
  • 单击该值(例如ApplicationPoolIdentity)
  • 单击右侧显示的省略号
  • 选择内置帐户或单击“自定义帐户”
  • 如果选择了自定义帐户,请单击设置并指定Windows帐户和密码
  • 单击“确定”关闭“设置凭据”对话框
  • 单击“确定”关闭“应用程序池标识”对话框
  • 单击“确定”关闭“高级设置”对话框
  • 回收应用程序池
  • 您还可以在web.config文件中设置标识:

    <system.web>
      <identity impersonate="true"
                userName="UserName"
                password="Password"/>
    </system.web>
    

    您可以创建具有有限权限的新用户,并将其设置为在此用户下运行应用程序池

    更改应用程序池的标识(即指定应用程序池运行的凭据)

  • 开放IIS
  • 在连接树中选择应用程序池
  • 选择应用程序池
  • 单击鼠标右键,然后选择“高级设置”
  • 查找流程模型/标识。默认值可能为ApplicationPoolIdentity
  • 单击该值(例如ApplicationPoolIdentity)
  • 单击右侧显示的省略号
  • 选择内置帐户或单击“自定义帐户”
  • 如果选择了自定义帐户,请单击设置并指定Windows帐户和密码
  • 单击“确定”关闭“设置凭据”对话框
  • 单击“确定”关闭“应用程序池标识”对话框
  • 单击“确定”关闭“高级设置”对话框
  • 回收应用程序池
  • 您还可以在web.config文件中设置标识:

    <system.web>
      <identity impersonate="true"
                userName="UserName"
                password="Password"/>
    </system.web>
    

    您显示的代码并不意味着外部个人可以访问您服务器上的文件,它显示的只是运行在您服务器上的程序可以访问服务器上有意义的文件

    如果要阻止程序访问这些文件,请为运行要阻止其访问的程序的用户以外的用户添加安全权限


    如果您希望保护目录,请使用.htaccess(非常基本的安全性)或考虑Alex的解决方案

    您显示的代码并不意味着外部个人可以访问您服务器上的文件,它所显示的是,在您服务器上运行的程序可以访问服务器上的文件,这是有意义的

    如果要阻止程序访问这些文件,请为运行要阻止其访问的程序的用户以外的用户添加安全权限

    如果您希望保护目录,请使用.htaccess(非常基本的安全性)或考虑Alex的解决方案