2017-04-03 90 views
2

我有一個C#Webform應用程序。ASP.NET無法使文件夾無法訪問

它包含在它裏面一個報告文件夾其中包含一些PDF文件。

我的應用程序將按需顯示這些報告。

但我不希望有人通過鍵入URL直接

例如訪問這些:www.abc.com/Reports/a.pdf

我創建了下面的Web.config中的報告文件夾中:

<configuration> 
<system.web> 
      <authorization> 
       <deny users="?" />     
      </authorization> 
</system.web> 
</configuration> 

不過,測試時我可以直接訪問pdf文件。

另外,根據業務規則,我無法使用表單身份驗證。 ASP.NET管道,而不是IIS的

回答

3

<system.web>控制配置。如果您在IIS下運行,則不會爲靜態文件請求調用ASP.NET,例如您提到的PDF文件。

要拒絕這些請求使用<system.webServer>代替。看到這個QA:How to make IIS7 stop serving a folder?

<configuration> 
    <system.webServer> 
     <security> 
      <requestFiltering> 
       <hiddenSegments> 
        <add segment="My_Directory" /> 
       </hiddenSegments> 
      </requestFiltering> 
     </security> 
    </system.webServer> 
</configuration> 

注意<system.webServer>需要IIS7或更高版本(Windows Server 2008中)。如果你運行的是IIS6(Windows Server 2003或Windows XP),那麼這將不起作用。

+0

測試您的解決方案... –

+0

我測試你的解決方案,但現在我不能從應用程序中訪問文件。 –

+0

@SNash如果您的應用程序通過將*重定向到靜態文件來提供文件,那麼就不可能將請求過濾到文件。爲了保護文件,應該讓應用程序使用'Response.WriteFile'通過自己的代碼返回文件(不要忘記設置Content-Type頭)。 – Dai