13 messaggi dal 02 novembre 2013
scusate ma ho da poco ripreso a dilettarmi nel programmare.
ho fatto un sito ad un'amica su vs2012 e tutto funziona correttamente.
quando pubblico il sito ottengo questo errore:


MetadataException: The specified metadata path is not valid. A valid path must be either an existing directory, an existing file with extension '.csdl', '.ssdl', or '.msl', or a URI that identifies an embedded resource.]
System.Data.Metadata.Edm.MetadataArtifactLoader.Create(String path, ExtensionCheck extensionCheck, String validExtension, ICollection`1 uriRegistry, MetadataArtifactAssemblyResolver resolver) +8439126
System.Data.Metadata.Edm.MetadataCache.SplitPaths(String paths) +528
System.Data.Common.Utils.<>c__DisplayClass4_0.<Evaluate>b__0() +23
System.Data.Common.Utils.Result.GetValue() +123
System.Data.Common.Utils.Memoizer`2.Evaluate(TArg arg) +328
System.Data.EntityClient.EntityConnection.GetMetadataWorkspace(Boolean initializeAllCollections) +310
System.Data.Objects.ObjectContext.RetrieveMetadataWorkspaceFromConnection() +25
System.Data.Objects.ObjectContext..ctor(EntityConnection connection, Boolean isConnectionConstructor) +165
Data.NewsEntities..ctor() +27
Core.DAO.DaoRubrica.GetNewsHome(Int32 idcat) +95
Core.BLEventi.GetNewsHome(Int32 idcat) +69
UI.giuriska.Page_Load(Object sender, EventArgs e) +71
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51
System.Web.UI.Control.OnLoad(EventArgs e) +95
System.Web.UI.Control.LoadRecursive() +59
System.Web.UI.Control.LoadRecursive() +131
System.Web.UI.Control.LoadRecursive() +131
System.Web.UI.Control.LoadRecursive() +131
System.Web.UI.Control.LoadRecursive() +131
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2952

questa è la mia stringa di connessione:

<add name="NewsEntities" connectionString="metadata=.\EF.csdl|.\EF.ssdl|.\EF.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=62.149.153.58;Initial Catalog= MSSql138008;Integrated Security=False;Connect Timeout=0;Encrypt=False;Packet Size=4096;User ID= MSSql138008;Password= w022xikc35;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />

saprestedirmi dove ho sbagliato?

grazie
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
osserva la tua connection string: in essa vengono menzionati 3 file:

metadata=.\EF.csdl|.\EF.ssdl|.\EF.msl;provider=....


Questi 3 file servono ad Entity Framework per capire come è fatto il database e il tuo modello di classi, e come "mappare" queste due strutture.

Per come hai impostato i percorsi, è necessario che i tre file (EF.csdl, EF.ssdl e EF.msl) siano pubblicati anch'essi nel server. Probabilmente al momento non lo stai facendo. Verifica se nella cartella bin del tuo progetto (o da qualche altra parte) ci sono e, in caso, copiali.

C'è anche un'altra alternativa: i percorsi di questi 3 file di metadati possono essere modificati in modo che vengano cercati come risorse incorporate:

metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl


In questa situazione, i 3 file non devono essere pubblicati individualmente ma cercati all'interno degli assembly che compongono la tua applicazione.

Le possibili soluzioni sono:
  • Pubblica i 3 file
  • Oppure, prova a cambiare il tipo di percorso da così .\EF.csdl a così res://*/EF.csdl


Per capire meglio cosa sta succedendo, dovresti dire che proprietà hai per il tuo file .edmx (tasto destro sull'edmx -> Proprietà).

ciao,
Moreno

Enjoy learning and just keep making

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.