Jeg får en " Typen 'Service.orderEntry[]' kan ikke implicit konverteres til 'service.orderEntry' " fejl i VS2005 når jeg prøver at køre det. Nogen der kan pege mig i den rigtige retning?
Nåå - ja - store og små bogstaver var vidst lige en skrivefejl :-)
Hvis jeg prøver OrderEntry[] i stedet for OrderEntry får build succeeded fra VS, men når jeg prøver at køre webservicen får jeg en fejl 500. Syntes iøvrigt jeg har slået debugging til i web.config, men syns ikke der kommer meget debugging info om den fejl 500...
Gå ind i Internet Options, vælg Ananveret, scroll ned til at du finder checkboksen udfor noget med "venlige HTTP fejl beskeder". Fjern hakket og prøv så igen.
System.NullReferenceException: Objektreferencen er ikke indstillet til en forekomst af et objekt. ved Service.readEntries(String inputIds) i Service.cs:linje 50 ved Service.getEntries(String id) i Service.cs:linje 66
readEntries ser således ud:
public void readEntries(string inputIds) { string connectionString = "provider=Microsoft.Jet.OLEDB.4.0;data source=TestDB.mdb"; OleDbConnection OleDbConnection = new OleDbConnection(connectionString); OleDbCommand OleDbCommand = OleDbConnection.CreateCommand();
string[] ids = inputIds.Split(',');
OleDbConnection.Open();
for (int i = 0; i < ids.Length; i++) { OleDbCommand.CommandText = "SELECT * FROM tOrders WHERE id=" + Convert.ToInt32(ids[i]); OleDbDataReader OleDbDataReader = OleDbCommand.ExecuteReader();
Det ville nok hjælpe hvis du fortalte hvilken der var linje 50?
Jeg gætter dog på at det er din orderData[] som ikke er initialiseret. Hvor kommer den egentlig fra?
Umiddelbart ville jeg synes at det var pære programmering, hvis det var readEntries() som initialiserede og oprettede orderData[]. Så kunne den passende returneder den i stedet for void.
Jaa det kan du have ret i. Det er orderData der er linje 50, og den er et array af orderEntry som vistnok står i det originale spørgsmål. Men kan godt se din pointe - jeg prøver at lave readEntries() om så den returnerer arrayet fremfor void så snart jeg kommer tilbage til puteren i morgen tidlig ;-)
Sorry jeg ikke lige fik opdateret tråden - der kom lige pludselig en masse andet i vejen. Jeg forsøgte at fjerne void og returnere funktionen i stedet, men uden held. Kan desværre først poste hele koden på fredag.
Her er koden for den simple webservice. Den build'er fint i VS, men så snart den åbnes i browser får jeg fejlen:
System.NullReferenceException: Objektreferencen er ikke indstillet til en forekomst af et objekt. ved Service.readEntries(String inputIds) i c:\Users\Vista-1\Documents\Visual Studio 2005\WebSites\dbService\App_Code\Service.cs:linje 50 ved Service.getDatabaseEntries(String id) i c:\Users\Vista-1\Documents\Visual Studio 2005\WebSites\dbService\App_Code\Service.cs:linje 67
Linje 50 og 67 er markeret i koden...
public class Service : System.Web.Services.WebService { public Service () {
//Uncomment the following line if using designed components //InitializeComponent(); }
public struct OrderEntry { public int ID; public int CustomerNo; }
OrderEntry[] orderData;
//Old single input command: public void readEntries(int number) public OrderEntry[] readEntries(string inputIds) { string connectionString = "provider=Microsoft.Jet.OLEDB.4.0;data source=TestDB.mdb"; OleDbConnection OleDbConnection = new OleDbConnection(connectionString); OleDbCommand OleDbCommand = OleDbConnection.CreateCommand();
string[] ids = inputIds.Split(',');
OleDbConnection.Open();
for (int i = 0; i < ids.Length; i++) { OleDbCommand.CommandText = "SELECT * FROM tOrders WHERE id=" + Convert.ToInt32(ids[i]); OleDbDataReader OleDbDataReader = OleDbCommand.ExecuteReader();
ID'et er i tabellen. Oprindeligt kørte webservicen fint med man gav den et id og så returnere den noget, men jeg prøver at udbygge den til at ville acceptere flere id'er sepereret af et komma hvis det er til nogen hjælp...
Okay, men det er stadigvæk u-god kode ikke at tjekke, at der er en række før man bruger indholdet - du kan køre videre så længe du ved de id-er er der, men ret det snarest.
Problemet som du har er derimod at du ikke har oprettet arrayet orderData - derfor din null-reference.
Du har kun erklæret det, og så er det null. Du skal 1) Give det en størrelse, så det får et antal indgange 2) Lægge et objekt af typen OrderEntry i hver indgang med "new"
Du må nu gerne give mig karma ... hvis du kan, hehe ;) Jeg skal vist have rettet i mit minisite.
Næh, du, det lidt hjælp jeg lægger på eksperten.dk har været ganske pointløst i en 3-4 år. Point giver bare anledning til ævl og kævl, og det er jeg nu så dejligt fri for.
Til stor glæde for alle, kan jeg oplyse at vi har besluttet at fjerne karmasystemet på Eksperten.
Alle karma'er er blevet slettet og alt vedr. karmasystemet er fjernet.
Karmasystemet vil alligevel være fjernet i den nye version af Eksperten, men kontroverserne er den seneste tid blevet større og værre, hvilket har fået os til at fjerne systemet nu.
Syns godt nok nyheden står til at være postet om 19 minutter, men hva'... Du får ihvertfald et tak for hjælpen og god weekend :-) Holder lige tråden kørende for at se om nielle vil have lidt point for hjælpen i starten af ugen!
erikjacobsen -> Du har helt ret - skal vidst lære at læse...
nielle -> Det kan der være noget om - jeg bytter ud med en liste!
God weekend!
mvh Mads
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.