14 messaggi dal 23 aprile 2012
Salve ragazzi ho sviluppato un'applicazione in ASP.NET 4.0 interfacciata a database MySQL Server [premetto che è il mio primo sviluppo in AP.NET 4 quindi posso anche aver commesso degli errori banali ma preferisco confrontarmi con qualcuno di più esperto];

il mio problema sorge quando vado a testare sul server di produzione l'applicazione in poche parole ricevo il seguente messaggio:

"Messaggio di errore del compilatore: CS0246: Impossibile trovare il tipo o il nome dello spazio dei nomi. Probabilmente manca una direttiva using o un riferimento a un assembly"

Dall'errore capisco che il problema è circoscritto alle classi personalizzate, che ho correttamente inserito nella cartella App_code del mio progetto e che ho quindi anche uploadato sul server.

Ho cmq di mio effettuato delle prove:

1 - Uploadato sul server locale il sito e convertito la cartella del progetto in applicazione -> RISULTATO: FUNZIONA;
2 - Compilato il progetto ed eseguito la prova sia sul server remoto che in locale ma ricevo il seguente errore:
"Messaggio di errore del parser: Impossibile caricare l'assembly 'App_Web_jdmesx1m'. Prima di accedere alla pagina, assicurarsi che sia stato compilato" -> Ho verificato che i nomi delle dll erano giusti e che fossero contenuti nella cartella Bin, ma il risultato non cambia.

In conclusione il 1° punto soddisfa il mio obiettivo ma in remoto come faccio a dire di convertire la cartella in applicazione senza avere IIS sotto mano? Devo contattare il mantainer? Ci sarebbero altre alternative.

Attendo vostro riscontro, Grazie in anticipo.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao, benvenuto nel forum!
leggo che usi la cartella /App_Code, quindi immagino che il tuo progetto sia di tipo "Sito Web".
E' molto semplice pubblicarlo: bisogna caricare nel server tutto il contenuto della directory principale del sito. Questa modalità di pubblicazione è chiamata "XCopy" e non richiede alcuna precompilazione né lo spostamento di assembly App_Web_jdmesx1m.

Da Visual Studio, pannello Solution Explorer, fai tasto destro sul progetto e clicca "Copy website" (o "Copia sito web"). Ti apparirà un qualcosa che assomiglia ad un client FTP, dovrai semplicemente cliccare un tasto "Connect" e inserire i dati di accesso al server remoto. Dopodiché, trasferire tutti i file. E' una cosa che potresti fare anche con un client FTP vero e proprio.

Certo, Visual Studio ti offre anche un'altra modalità di pubblicazione ("Publish website") che ti permette di precompilare il sito, nel caso in cui tu non voglia divulgare il codice sorgente del tuo sito. Anche questa modalità richiede il minimo sforzo: indichi una destinazione e sarà Visual Studio a determinare quali file pubblicare.

m1h4wk ha scritto:

Messaggio di errore del compilatore: CS0246: Impossibile trovare il tipo o il nome dello spazio dei nomi. Probabilmente manca una direttiva using o un riferimento a un assembly"

Questo errore però può capitare per un altro motivo: se il tuo sito usa un assembly che si trova installato nella GAC del tuo PC di sviluppo, ma non nella GAC del server.
Siccome gli assembly che si trovano nella GAC non vengono pubblicati insieme al progetto, ecco che quando il sito gira nel server non riuscirà a trovare l'assembly.

Stai usando MySql, quindi forse l'assembly in questione è MySql.Data.dll. Devi fare in modo di portarlo nella cartella /bin, così che possa essere copiato anche nel server.

Se hai installato NuGet, lo puoi comodamente scaricare dalla sua gallery o lanciando il comando Install-Package MySql.Data. Altrimenti, cerca il file MySql.Data.dll sul tuo disco e copialo manualmente nella cartella /bin. Dopodiché, ripubblica.

Qui ho fatto un esempio con il connector di MySql ma potrebbe trattarsi di MVC o di altri assembly. Vedi se riesci a capire dall'errore di che assembly si tratta.

ciao
Modificato da BrightSoul il 04 luglio 2012 00.01 -

Enjoy learning and just keep making
14 messaggi dal 23 aprile 2012
Ciao, ti ringrazio per la tua collaborazione comunque avevo già fatto l'upload dei file senza compilazione tramite FileZilla ma comunque il server mi restituisce: "Messaggio di errore del compilatore: CS0246: Impossibile trovare il tipo o il nome dello spazio dei nomi 'Utenti'; probabilmente manca una direttiva using o un riferimento a un assembly".

Intuisco che si tratti di una classe esattamente l'errore mostra quanto segue:

Errore nel codice sorgente:

Riga 8: public partial class _Default : System.Web.UI.Page
Riga 9: {
Riga 10: Utenti users = new Utenti();
Riga 11:
Riga 12: protected void Page_Load(object sender, EventArgs e)

Però come ho spiegato precedentemente se dal mio IIS Locale converto la cartella in applicazione il suddetto messaggio non compare e funziona tutto bene; ma dal server remoto non posso fare questa operazione per questo ho pensato di compilare ma mi restituisce l'errore:

Messaggio di errore del parser: Impossibile caricare l'assembly 'App_eccecc'. Prima di accedere alla pagina, assicurarsi che sia stato compilato. <-- come detto ho verificato nella cartella bin ed il file corrisponde.

Non saprei come risolvere... in cosa sbaglio?

Grazie ancora per l'aiuto
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,

m1h4wk ha scritto:

dal mio IIS Locale converto la cartella in applicazione ma dal server remoto non posso fare questa operazione


Nel server remoto non c'è bisogno di fare quest'operazione. Penso che la ditta di hosting (o comunque chi gestisce il server) ti abbia fornito l'accesso FTP ad una cartella principale, in un nuovo sito IIS creato appositamente per te. (A meno che non abbiate preso accordi differenti).

Anche nel tuo IIS Locale hai l'opportunità di creare un nuovo sito per ogni nuovo progetto, non c'è bisogno di creare sottocartelle.

Se hai creato una sottocartella all'interno del Sito Predefinito è per tua scelta e solo in questo caso si pone il problema di doverla convertire in applicazione, perché App_Code ha un significato speciale solo se si trova nella root dell'applicazione.

Per ora, assicurati che il file che contiene la classe Utente sia pubblicato nella cartella App_Code. Questa cartella deve trovarsi nella root dell'applicazione. Poi visita il sito e controlla se funziona. Se non funziona, vedi se l'errore è cambiato. Magari ora si lamenta di qualche altra classe...

La cartella /bin invece non deve contenere gli assembly precompilati della tua applicazione, ma solo gli assembly di terze parti come ad esempio MySql.Data.dll.

ciao
Modificato da BrightSoul il 04 luglio 2012 14.09 -

Enjoy learning and just keep making
14 messaggi dal 23 aprile 2012
Ciao, ti ringrazio ancora una volta per il tuo prezioso aiuto, in effetti era proprio quello il passaggio che mi ero perso:



Se hai creato una sottocartella all'interno del Sito Predefinito è per tua scelta e solo in questo caso si pone il problema di doverla convertire in applicazione, perché App_Code ha un significato speciale solo se si trova nella root dell'applicazione.



Mettendo il sito nella root principale il problema si risolve, idem per il pre-compilato quindi se volessi utilizzare sotto cartelle in cui inserire altri mini-sitiweb dovrei chiedere autorizzazione al provider vero?

Grazie ancora per il valido supporto.

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.