354 messaggi dal 13 marzo 2013
Ciao ho fatto le modifiche che mi hai detto ma l'handler sembra non voler funzionare.
Innanzitutto però, ho controllato le proprietà del mio progetto ma ho solo alcune righe, non tutte quelle che mi hai presentato te.Nelle mie proprietà compaiono le opzioni
Always start with Debug
Project File
Project Folder
le altre non ci sono, è possibile?
(scusa la confusione ma è un progetto che ho "ereditato")

leggendo sempre su aspitalia e un po' in giro ho trovato questi articoli che ho rielaborato
http://social.msdn.microsoft.com/Forums/it-IT/aspnetit/thread/7d893339-f3d7-4979-9cab-441172a3678b/
http://www.aspitalia.com/script/719/Forzare-Download-Documento-Pagina-ASP.NET.aspx

la soluzione che ho implementato, e che sembra funzionare, è la seguente

utilizzo l'handler System.Web.HttpForbiddenHandler per impedire l'accesso diretto ai file mentre, quando clicco su un link nella mia area riservata per scaricarli li re-indirizzo ad una nuova pagina in cui, dopo aver controllato se l'utente ha i permessi per stare in quell'area, permetto il download.

Può essere una buona soluzione?
ah l'handler, per essere considerato, l'ho dichiarato in questa area
<system.web>
   <httpHandlers>
      <add verb="*" path="*.pdf" type="System.Web.HttpForbiddenHandler" />
   </httpHandlers>
</system.web>

se no non andava.

Rettifica: questa soluzione funziona in locale ma sul server di produzione, una volta pubblicato, si blocca tutto e torna un server error 500..credo sia sempre una cosa legata agli handler visto che il server funziona in modalità pipeline integrata, cosa che però non sembra essere vera in debug.
Spostando la posizione in cui richiamo gli handler e mettendoli in System.webserver\handlers il tutto non si blocca ma sembra comunque non funzionare, sto facendo un po' di prove ora.
La cartella in cui ho i file è in inetpub, non è che è quello il problema (e lasciandola in inetpub ho tipo un'autostrada aperta) e al posto di metterla in inetpub è meglio metterla nella directory del progetto o altrove?
ora provo anche con una cartella temporanea nella dir del progetto e vedo cosa succede
Modificato da PR17 il 14 maggio 2013 12.54 -
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao!

PR17 ha scritto:

Nelle mie proprietà compaiono le opzioni ... le altre non ci sono, è possibile?

Sì è possibile, con che versione di Visual Studio stai sviluppando? Se si tratta di una vecchia versione, come la 2005, la modalità integrata non era ancora stata introdotta e perciò non vedi quelle opzioni.

PR17 ha scritto:

utilizzo l'handler System.Web.HttpForbiddenHandler. Può essere una buona soluzione?

Tutto sommato sì, riesci comunque ad impedire l'accesso diretto alla risorsa.
Dato che il tuo webserver di debug non supporta la modalità integrata, la soluzione era propio quella di registrare l'handler nel nodo system.web/httpHandlers, come del resto hai già fatto.

PR17 ha scritto:

si blocca tutto e torna un server error 500

Già, perché nel tuo web.config hai configurato l'handler dentro system.web/httpHandlers che è un nodo che non può essere usato in modalità integrata. L'handler andrebbe invece configurato dentro system.webServer/handlers ma hai già detto che si presentano altri problemi.

La soluzione più immediata sarebbe quella di collegarsi al server col desktop remoto e provare a cambiare la modalità da Integrata a Classica. Ti è consentito di fare questa operazione?
Sul tuo PC di sviluppo che sistema operativo e che versione di Visual Studio hai?

ciao
Modificato da BrightSoul il 14 maggio 2013 20.53 -

Enjoy learning and just keep making
354 messaggi dal 13 marzo 2013
Ciao rispondo per ordine:

BrightSoul ha scritto:
ciao!

PR17 ha scritto:

Nelle mie proprietà compaiono le opzioni ... le altre non ci sono, è possibile?

Sì è possibile, con che versione di Visual Studio stai sviluppando? Se si tratta di una vecchia versione, come la 2005, la modalità integrata non era ancora stata introdotta e perciò non vedi quelle opzioni.

uso la 2010, quindi mi sembra strano non vederla.

BrightSoul ha scritto:

PR17 ha scritto:

utilizzo l'handler System.Web.HttpForbiddenHandler. Può essere una buona soluzione?

Tutto sommato sì, riesci comunque ad impedire l'accesso diretto alla risorsa.
Dato che il tuo webserver di debug non supporta la modalità integrata, la soluzione era propio quella di registrare l'handler nel nodo system.web/httpHandlers, come del resto hai già fatto.

PR17 ha scritto:

si blocca tutto e torna un server error 500

Già, perché nel tuo web.config hai configurato l'handler dentro system.web/httpHandlers che è un nodo che non può essere usato in modalità integrata. L'handler andrebbe invece configurato dentro system.webServer/handlers ma hai già detto che si presentano altri problemi.

La soluzione più immediata sarebbe quella di collegarsi al server col desktop remoto e provare a cambiare la modalità da Integrata a Classica. Ti è consentito di fare questa operazione?
Sul tuo PC di sviluppo che sistema operativo e che versione di Visual Studio hai?


Ho pensato anche che potrei adottare una situazione di questo tipo: in produzione sposto gli handler in system.webServer/handlers, il sistema non si blocca ma non protegge, questo credo perché la mia cartella dei documenti è in inetpub/documenti e il mio progetto è in inetpub/mio progetto, quindi sullo stesso livello, può essere per quello che non funziona l'handler del progetto (che è ovviamente nella cartella del progetto)?.
Nel server che uso in locale (non in debug ma quello che simula il server di produzione) ho provato ad inserire un nuovo web.config direttamente nella cartella inetpub e qua sembra bloccarmi l'accesso diretto anche alla cartella documenti.O forse è meglio metterlo direttamente nella cartella documenti?
Per quanto riguarda l'accesso al server remoto si, posso farlo.
Ma cambiando la modalità di pipeline cambia qualcosa?
Grazie
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,

PR17 ha scritto:

Nel server che uso in locale (non in debug ma quello che simula il server di produzione)

Se in locale hai già installato IIS 7 allora puoi usarlo per debuggare, infatti Visual Studio non ti obbliga ad usare il suo server di sviluppo.
Si configura dalle proprietà del progetto, segui queste indicazioni.
http://idosql.com/2011/05/25/181/
L'articolo parla di un'opzione "Use custom server". Se nel tuo Visual Studio la trovi disabilitata, risolvi in questo modo.

A questo punto hai la possibilità di debuggare direttamente su IIS ma prima accedi alla sua console e imposta la modalità Integrata per l'application pool in cui gira il sito.
Ora il tuo ambiente di sviluppo è molto più simile a quello del server. Ciò che funziona in locale *dovrebbe* funzionare ugualmente bene anche nel server.

PR17 ha scritto:

ho provato ad inserire un nuovo web.config direttamente nella cartella inetpub e qua sembra bloccarmi l'accesso diretto anche alla cartella documenti.O forse è meglio metterlo direttamente nella cartella documenti?

Sì, il web.config deve trovarsi nella cartella "documenti" oppure nella cartella genitore che è "inetpub".
Se lo metti dentro "mio progetto" non avrà alcun effetto.

PR17 ha scritto:

Ma cambiando la modalità di pipeline cambia qualcosa?

In modalità integrata, il file di configurazione di IIS è il web.config. Ciò che puoi fare dalla console di IIS (tranne forse gestire vecchie sezioni che richiedono il metabase di IIS6) lo puoi fare agendo manualmente sul nodo system.webServer del tuo web.config. Per te quindi è molto più facile configurare determinati aspetti perché in molte situazioni non devi più accedere al server via desktop remoto.
In qualche caso questo non sarebbe neanche possibile: non è il tuo caso ma pensa a coloro che devono pubblicare il sito in hosting condiviso.
Qui trovi un approfondimento tecnico sulle differenze tra le due modalità.
http://www.aspitalia.com/articoli/windows-server/IIS-7.0.aspx#title_2

ciao
Modificato da BrightSoul il 15 maggio 2013 20.47 -

Enjoy learning and just keep making
354 messaggi dal 13 marzo 2013
Ciao grazie per le delucidazioni, mi stanno chiarendo molte cose.
Un piccolo appunto, purtroppo non ho ancora potuto effettuare il cambio del server perché il link che mi hai passato (http://idosql.com/2011/05/25/181/ ) non funziona.
In rete ho trovato questa procedura,
http://msdn.microsoft.com/it-it/library/ms178108(v=vs.100).aspx
http://idosql.com/category/asp-net-development/ (oppure questa, sempre sul sito che mi hai segnalato
sono corrette?
Prima di procedere volevo una conferma se puoi darmela.
Grazie ancora
Modificato da PR17 il 16 maggio 2013 17.49 -
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao, prego :)

PR17 ha scritto:

http://idosql.com/category/asp-net-development/ (oppure questa, sempre sul sito che mi hai segnalato

Sì, l'articolo è proprio quello. Il tutto consiste nell'accedere alle opzioni del progetto per selezionare "Use custom server" e indicare l'URL al quale hai pubblicato il sito in IIS. (solitamente è un URL http://localhost:numeroporta/)

ciao

Enjoy learning and just keep making
354 messaggi dal 13 marzo 2013
Ottimo, grazie mille.
Sono stato via alcuni giorni e sto leggendo ora l'articolo, domani provo a modificare il tutto.Spero di non doverti disturbare oltre
354 messaggi dal 13 marzo 2013
Ciao ma scusa un chiarimento
ma devo comunque da IIS 7 creare la dir virtuale e farla puntare alla mia cartella come spiegato nella guida o cambio solo le impostazioni nel progetto?

Un'ultima cosa: tra le opzioni vedo
use visual studio development server
use local IIS web server
Use custom Web server
immagino di dover usare la seconda e indicare la directory del tipo d:\webiste\miosito
è corretto?

Grazie

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.