0

我正在 asp.net 中的一个项目中工作,我将一些文件存储在一个目录中,比如 temp。我想只向登录的用户授予对该文件夹及其内容的访问权限,否则它应该显示拒绝访问。

我努力了

<system.web>
  <authentication mode="Forms">
    <forms loginUrl="Default.aspx" defaultUrl="Default.aspx" ></forms>
  </authentication>
  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>

  <location path="temp">
   <system.web>
    <authorization>
      <deny users="?"/>
    </authorization>
   </system.web>
 </location>

但它不起作用。

我究竟做错了什么 ?正确的方法应该是什么?

4

1 回答 1

2

首先,忘记修改 global web.config,没有必要这样做。web.config您只需在上述文件夹中创建一个辅助文件并放入:

<?xml version="1.0"?>
<configuration>
 <system.web>
  <authorization>
    <deny users="?"/>
    <allow users="*"/>
  </authorization>
 </system.web>
</configuration>

里面。

其次,这不适用于不通过 ASP.NET 管道的静态文件。这很棘手,因为开发服务器为所有文件提供请求,并且仅当您将应用程序部署到 IIS 时才会出现问题。

你必须添加

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
</system.webServer>

它告诉 IIS 使用 ASP.NET 管道处理所有可能的请求(包括对静态资源的请求)。但是,这有其缺点,因为它可能会稍微减慢服务器的速度。

于 2012-12-21T08:45:10.547 回答