C# 不允许直接浏览文件

C# 不允许直接浏览文件,c#,asp.net,iis,C#,Asp.net,Iis,在asp.net web表单网站中,我不允许用户直接浏览存储在目录中的文件。例如,我将PDF存储在一个目录中,如果用户知道路径,他们只需在浏览器地址栏中键入该路径并调出PDF即可 正在寻找有关如何停止此操作的想法,除非他们使用与目录名匹配的特定id登录 欢迎任何想法。在IIS中,选择您的网站,甚至是特定的应用程序 然后,在右侧,双击“目录浏览”可以禁用/启用目录浏览。在web.config文件中,添加以下内容: <configuration> <location path=

在asp.net web表单网站中,我不允许用户直接浏览存储在目录中的文件。例如,我将PDF存储在一个目录中,如果用户知道路径,他们只需在浏览器地址栏中键入该路径并调出PDF即可

正在寻找有关如何停止此操作的想法,除非他们使用与目录名匹配的特定id登录


欢迎任何想法。

在IIS中,选择您的网站,甚至是特定的应用程序


然后,在右侧,双击“目录浏览”可以禁用/启用目录浏览。

在web.config文件中,添加以下内容:

<configuration>
  <location path="Secured">
    <system.webServer>
      <directoryBrowse enabled="false" />
    </system.webServer>
  </location>
</configuration>

如何禁用目录浏览,除非它们是在 特定id

我假设这是ASP.NET Web表单

如果使用ASP.NET成员资格提供程序或表单身份验证,则可以在web.config中为所有用户和所有文件进行配置

然而,如果用户和文件不断变化,上述方法将不起作用


这就变得复杂了。我将用户及其授权文件存储在持久性存储(如数据库)中。然后将实际文件存储在
App\u Data
文件夹(或专用blob存储)中。IIS不会提供存储在
App\u Data
文件夹中的文件。然后,每个文件请求都经过通用处理程序,例如
FileHandler.ashx?filename=sample.pdf

如果有一种方法可以检测.pdf是否打开,可以调用c#code进行检查。这是自定义处理程序吗?我不熟悉。我所做的只是不将这些文件存储在网站的根目录下,而是完全存储在外部,并使用(WebForms)或文件结果(MVC)将文件交付给允许的用户。