"Impossibile caricare il tipo" nel servizio Web convertito in VB.NET
-
09-06-2019 - |
Domanda
Ho scritto un semplice servizio web in C# utilizzando SharpDevelop (che ho appena ricevuto e adoro).
Il cliente lo voleva in VB e fortunatamente c'è una funzione Converti in VB.NET.È ottimo.Tradotto tutto il codice e compilato.(Sono un tipo da "Blocco note" da molto tempo, quindi potrei sembrare un po' vecchio stile.)
Ma ricevo questo errore quando provo a caricare il servizio adesso.
Parser Error Message: Could not load type 'flightinfo.Soap' from assembly 'flightinfo'. Source Error: Line 1: <%@ WebService Class="flightinfo.Soap,flightinfo" %>
Ho eliminato e ricostruito i contenitori e ho cercato su Google (e StackOverflow).Ho analizzato i file di progetto per eventuali resti di C#.
Qualche idea?
Soluzione
In VB.NET, le dichiarazioni dello spazio dei nomi sono relative allo spazio dei nomi predefinito del progetto.Quindi, se lo spazio dei nomi predefinito per il progetto è impostato su X.Y, tutto il resto Namespace Z
E End Namespace
sarà nello spazio dei nomi X.Y.Z.In C# devi fornire il nome completo dello spazio dei nomi, indipendentemente dallo spazio dei nomi predefinito del progetto.Pertanto, se il progetto C# avesse lo spazio dei nomi predefinito X.Y, i file CS includerebbero comunque il file namespace X.Y
dichiarazione.Dopo la conversione in VB, se sia lo spazio dei nomi predefinito che le dichiarazioni dello spazio dei nomi nei file rimangono gli stessi, ti ritroverai con le classi nello spazio dei nomi X.Y.X.Y.Quindi, nel tuo caso, la classe Soap è ora nello spazio dei nomi flightinfo.flightinfo.Ci sono quindi tre possibili soluzioni:
cambia il file asmx in
rimuovere lo spazio dei nomi predefinito dal progetto
- rimuovere le dichiarazioni dello spazio dei nomi dai file vb
Altri suggerimenti
<%@ WebService Class="flightinfo.Soap,flightinfo" %>
Come si chiama la tua classe?
Il problema potrebbe essere causato dai progetti VB.NET e C# che utilizzano convenzioni di denominazione diverse per gli assembly di progetto e dal modo in cui viene utilizzato lo spazio dei nomi del progetto.Almeno è lì che inizierei a cercare.