Pubblicazione sito

giovedì 31 gennaio 2008 - 10.08

illusione Profilo | Junior Member

Salve

ho pubblicato un sito e mi viene segnalato nel server questo errore nella linea 1

Line 1: <?xml version="1.0" encoding="utf-8"?>
Line 2: <xs:schema id="DataSet1" targetNamespace="http://tempuri.org/DataSet1.xsd" xmlns:mstns="http://tempuri.org/DataSet1.xsd" xmlns="http://tempuri.org/DataSet1.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop" attributeFormDefault="qualified" elementFormDefault="qualified">
Line 3: <xs:annotation>

che significa?

Il sito è fatto in ASPNET 2.0 è in locale funziona correttamente.

Grazie!


freeteo Profilo | Guru

ciao,
dove hai pubblicato c'e' installato il framework 2.0 ?

Cmq metti tutto il dettaglio dell'errore perche' da quello che hai postato tu, non si capisce completamente il "messaggio di errore", di solito c'e' anche l'analisi dello stack e il motivo vero e proprio con il codice dell'errore...

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

illusione Profilo | Junior Member

Ciao
sono riuscito ad isolare l'errore.

Il problema è nella connessione al DB MYSQL5 o meglio
se mi collego tramite codice

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

funziona!

Se mi collego tramite configurazione guidata del
mysqldatasource mi da errore.

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Utilizzo un data provider a pagamento Corelab (ottimo!)
ho copiato nella cartella bin le dll di corelab infatti
come dicevo prima con il codice funziona con la configurazione guidata no!

Come mai?

grazie!

freeteo Profilo | Guru

ciao,
mi viene da pensare che tu abbia installato il provider per mysql sul tuo pc, mentre sul server non c'e'.

.net da di default una serie di provider i quali li vedi gia' integrati con visual studio quando fai una connessione al db, e sono quelli per sql, access e se non ricordo male anche Oracle.
Questi sono installati nella tua macchina, perche' facenti parte del framework, ma espongono delle interfacce che possono essere implementate anche da altri per gestire l'accesso ai propri database, tra i quali proprio il tuo della Corelab per Mysql.
Questi pero' sono pacchetti che si isntallano e usano DLL che sono nella GAC (e vengono messe li proprio dal pacchetto di installazione), quindi quando compili, nella dir "bin" non ci sono tutti i file che servono, perche' alcuni sono proprio nella GAC.

Questa GAC corrisponde in tutte le macchine inizialmente quando installi il framework, e quindi mediamente non hai problemi a fare il copia incolla dell'applicazione web o win32, pero' nel caso di pacchetti aggiuntivi, la possibile soluzione ti arriva dal pacchetto di Setup, il quale va a vedere cosa gli serve in termini anche di riferimenti nella gac etc...

Se hai acesso alla macchina dove fai il deploy, ti basta installare il runtime di Corelab, altrimenti cmq devi pensare di fare un pacchetto di setup per la tua applicazione.

Se non hai accesso, allora l'unica cosa è usare un provider incluso nel framework, come "OleDB" o "ODBC"... oppure se vuoi provare a cercarti nella GAC ( cerca sotto c:\windows\assembly ) i file di corelab mysql, sperando che non vadano ad utilizzare niente di COM, e provare a copiarli nella stessa bin a mano insieme agli altri file...

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

illusione Profilo | Junior Member

Ciao

L'Hosting è configurato per MySQL.

io credo che se dovessero mancare dei riferimenti nella GAC o nella cartella bin non dovrebbe connettersi neanche tramite codice!

Invece mi apre la tabella e leggo perfettamente i records.

Ho cercato negli assembly e le uniche dll sono Corelab.Mysql.dll Corelab.data e Corelab.Mysql.web
quelli che la stessa casa dice di copiare nella cartella bin.

Il problema potrebbe essere risolto eliminando tutte le configurazione guidate dei dataset e riscrivendoli tutti da codice ma è una cosa assurda; ma non so che fare!!

Grazie!
Ciao


freeteo Profilo | Guru

ciao,
guarda bene il codice che genera il progetto, quando aggiungi un dataset tipizzato infatti, viene creato un file di codice che usa tipicamente la connectionstring che hai nell'app.config con le classi etc...insomma ti scrive il codice visual studio e tu ti gestisci tutto a design

Ecco dentro li, insieme alla connectionstring che scrive nell'app.config dovresti capire che provider sta usando, perche' se sta usando un provider che non trova nel sistema, da quell'errore (almeno questo è quello che ho capito dal mesaggio di errore che ti da).

Ad esempio:

<?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <add name="Win32Tmp.Properties.Settings.qprimeConnectionString" connectionString="Data Source=......" providerName="System.Data.SqlClient" /> </connectionStrings> </configuration>

il fatto di dire di usare il provider "System.Data.SqlClient" vuol dire che lui genera un provider a runtime di quel tipo, nel tuo caso sara' "MySql"....mi viene da pensare che sia richiesta l'installazione di questo provider, altrimenti non riesce a generarlo ed ecco spiegato l'errore di "missing provider"....il fatto che scrivendo fisso il tipo di provider vada, mi lascia perplesso...

Ma tu lo agganci come mostrato qui:
http://blogs.dotnethell.it/freeteo/Firebird-e-Mysql-integrati-in-Visual-Studio-Data-Designer__8546.aspx
?

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

illusione Profilo | Junior Member

Ciao
questo è il codice generato dal dataset:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Questo quello del web.config:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Ciao

freeteo Profilo | Guru

ciao,
il problema sta tutto nella factory che .net fa quando specifichi il provider dentro al web.config, come spiegano qui il motore http://www.c-sharpcorner.com/UploadFile/amit_agrl/ProviderFactory08052005030042AM/ProviderFactory.aspx?ArticleID=aa940985-17d4-4825-b28c-5c307b21f88d

Se tu ad esempio provi a farti una pagina di test che ti torna questa datatable:
DbProviderFactories.GetFactoryClasses()

secondo me vedrai che da te in locale mostreraì anche il provider per mysql, ma se la lanci sul server non compare...questo è il problema, deve essere installato anche sul server...pero' adesso non ho una soluzione precisa...io di solito i provider me li faccio a mano e non lavoro quasi mai con dataset tipizzati proprio per avere maggior controllo,e quindi fortunatamente non casco mai in questi errori...
Per questo non saprei aiutarti di piu', il problema a mio avviso ti ho detto qual'e', prova a verificare se è cosi' ma non ci sono tante altre possibilita'...

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

illusione Profilo | Junior Member

Hai proprio ragione, ho ricevuto un'email dalla Corelab dove dice che deve essere installato anche nel server.

Cmq adesso ho capito la lezione... meglio un pò di codice in più e avere tutto sotto controllo infatti ho eliminato i dataset e ricrivo tutto tramite codice.

Ti ringranzio per la pazienza e per la professionalità delle risposte.

Ciao a presto!!!

freeteo Profilo | Guru

eh si, io sviluppo in ambienti ms da tanti anni, e devo dire che sono veramente fenomenali per tantissimi motivi, ma come tutte le cose hanno anche dei difetti, e a mio avviso la spinta all'utilizzo di dataset e datatable, è sbagliato....l'ho imparato ankio a mie spese, ed ho deciso di pedere quel po' di tempo in piu' inizialmente per avere un beneficio a lungo termine.

ps: adesso stanno uscendo dei pacchetti interessanti come Ado.Net Entity Framework, e lo stesso Linq, che mi aiuteranno di piu' dei dataset tipizzati...

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

illusione Profilo | Junior Member

Ciao Matteo

avevi ragione il problema era proprio nel DbProviderFactories

infatti la Corelab mi ha mandato questo script da aggiungere al web config

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

e adesso funziona alla grande!

Ci tenevo a dirterlo dato che sei stato molto gentile
nel darmi tanti input!

P.S.: Peccato! Sono arrivati in ritardo, avevo gia
riscritto tutto il codice senza usara piu il datasource.

Ciao!

freeteo Profilo | Guru

Ah vedi che il problema era proprio li!
Grazie di aver postato la soluzione, potra' essere utile ad altri sicuramente...

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5