2009-06-27 10 views
8

Nella mia applicazione Web è presente un file Entity-Framework * .edmx di ADO.NET.Come limitare l'accesso ai file con estensioni specifiche in ASP.NET?

Quando navigo nel browser (quando l'applicazione è in esecuzione) in un file edmx, non mostra la pagina di errore come quando si esplora un file * .cs o vb, apre edmx e mostra il mio modello schema a tutti gli utenti !!!

Come evitare questo.

risposta

8

È possibile farlo in due modi; in primo luogo nel web.config o in secondo luogo in IIS

<system.web> 
    <httpHandlers> 
     <add verb="*" path="*.edmx" type="System.Web.HttpForbiddenHandler" /> 
    </httpHandlers> 
</system.web> 

Ecco un link ad una pagina di supporto di Microsoft che descrive come farlo nella configurazione web e IIS.

http://support.microsoft.com/kb/815152

+2

Vale la pena notare che questo funziona solo per la radice web.config - La risposta di Mehrdad funziona per le sottocartelle –

9

È necessario associare l'estensione alla classe System.Web.HttpForbiddenHandler di ASP.NET in web.config. Se si utilizza IIS6, prima di poterlo fare, è necessario associare l'estensione al gestore ISAPI di ASP.NET.

IIS7 modalità di integrazione:

<system.webServer> 
    <handlers> 
     <add name="MyForbiddenExtensionHandler" 
      path="*.edmx" 
      verb="*" 
      type="System.Web.HttpForbiddenHandler" 
      preCondition="integratedMode" /> 
    </handlers> 
</system.webServer> 

IIS7 modalità Classic. Qualcosa di simile:

<system.web> 
    <httpHandlers> 
    <add path="*.edmx" 
     verb="*" 
     type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
    </httpHandlers> 
</system.web> 
<system.webServer> 
    <handlers> 
    <add name="MyExtensionISAPI" 
     path="*.edmx" 
     verb="*" 
     modules="IsapiModule" 
     scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" /> 
    </handlers> 
</system.webServer> 

IIS6 (dopo la mappatura del gestore di aspnet_isapi.dll in configurazione IIS6):

<system.web> 
    <httpHandlers> 
    <add path="*.edmx" 
     verb="*" 
     type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
    </httpHandlers> 
</system.web> 
+0

type = "System.Web.HttpForbiddenHandler, System.Web" System.Web alla fine, ha generato un errore. dovrebbe essere solo type = "System.Web.HttpForbiddenHandler". – Shimmy

+0

Aggiornato la risposta con il nome completo dell'assembly System.Web per renderlo infallibile. Preferisco specificare il nome dell'assembly per evitare che venga caricato accidentalmente da un altro assieme se contiene un tipo con lo stesso nome. –