Domanda

Ho un'installazione di Windows Web 2008 x64 in esecuzione.

A causa del requisito per l'applicazione in grado di importare file Excel, ho dovuto modificare l'applicazione Web per l'esecuzione in modalità 32 bit. Le librerie MSAccess / Excel non sono disponibili in x64.

Ho anche dovuto eliminare l'applicazione per eseguire in trust = Full. In precedenza era sotto level = medium.

Esiste una buona soluzione a questo problema. Voglio abbassare il livello di fiducia e non dover compromettere l'app a 32 bit solo perché una schermata richiede l'importazione eccellente (l'utilizzo di questa schermata non è frequente)

È possibile impostare una cartella / pagina particolare da usare a 32 bit nell'applicazione e il resto come x64. Non credo che tu possa. E lo stesso per il livello di fiducia. L'applicazione a livello di attendibilità è specifica o posso inviarla in una cartella nidificata?

È stato utile?

Soluzione

Come FoxFire indica correttamente , tu impossibile combinare codice a 32 e 64 bit nello stesso processo.

Qualsiasi applicazione ASP.NET che deve interagire con Office richiederà livelli di attendibilità elevati.

C'è un modo per aggirare questo usando una tecnica nota come "sandboxing".

Quello che fai è scrivere un assembly wrapper che fa esattamente il lavoro richiesto con Excel. Contrassegnare l'assembly con l'attributo [assembly: AllowPartiallyTrustedCallers] , firmarlo e quindi distribuirlo nel GAC.

Qualsiasi classe in questo assembly richiesta per comunicare con i componenti di Office Interop deve essere attribuita con [PermissionSet (SecurityAction.Assert, Unrestricted = true)] o qualunque altra richiesta sia richiesta.

Ciò ti consentirà di abbassare il livello di affidabilità sul tuo server ma di utilizzare comunque i componenti di Office.

Questo si basa sul presupposto che si disponga dell'accesso amministrativo al server per poter rilasciare l'assembly sandbox "attendibile" nel GAC.

Altri suggerimenti

All'interno dello stesso processo non puoi mai aver mescolato 32 bit e 64 bit. Potresti forse scrivere una seconda applicazione che fa il materiale Excel per te e poi compilarlo in un eseguibile a 32 bit. Potresti quindi chiamare (esegui il file con alcuni parametri) quel file eseguibile dalla tua applicazione web (richiederà comunque la massima fiducia, ma allora potrebbe funzionare a 64 bit).

Modifica: non è necessaria la fiducia totale necessaria. È inoltre possibile creare un livello di affidabilità personalizzato. Ma il punto è che non funzionerà nel livello di attendibilità del web standard.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top