We zijn hier bezig met een ASP.NET applicatie waar gebruik wordt gemaakt van een FOX Com dll. Om hier gebruik van te maken is er een stub gegenereerd door VS.NET ( Gewoon door een reference toe te voegen naar de COM dll ). Als deze dll gebruikt wordt op de test server of op de ontwikkel machines werkt dit allemaal goed. maar zo gauw als het op een andere server gezet wordt werkt het opeens niet meer en komen er exception. Een van de exceptions is bijvoorbeeld
De com dll is gebouwd met Visual Foxpro 8. Het lijkt erop dat het fout gaat bij het Casten naar een ADODB.Recordset, als namelijk de zelfde methode aangeroepen wordt die alleen een int terug geeft ( het eerste field uit de recordset ) dan gaat het wel goed. De recordset bevat dus ook gegevens, het gaat dus niet verkeerd omdat de recordset bijvoorbeeld NULL is.
Om te testen waar het probleem zit hebben we een simpele ASP.NET pagina gemaakt die de volgende code uitvoerd
Als deze code uitgevoerd wordt komt er dus in de moGetUserProp ( die deel uitmaakt van de stub die door VS.NET gegenereerd is ) de bovengenoemde Exception.
Ik vindt de Message van de Exception ook heel vreemd ( "?" ). Het is geen exception die door ons zelf gethrowed wordt. Ook zoeken op Google met die message heeft niet zoveel nut aangezien Google ( en andere zoekmachines ) het vraagteken gewoon negeren.
Heeft er iemand mischien nog een idee waarom het op de ene machine wel werkt en op de andere niet?
Ik weet zeker dat er op de machines dezelfde dll draait want we hebben deze meerdere malen weg gegooid en opnieuw geregistreerd. De com dll werkt ook gewoon goed als je hem bijvoorbeeld vanuit een simpele ASP Clasic pagina aanroept.
code:
1
2
3
4
5
6
7
8
9
| Exception of type: System.InvalidCastException HelpLink: Message: ? Source: Interop.bbbusiness TargeSite: ADODB.Recordset moGetUserProp( ... ) StackTrace: at bbbusiness.cMemPlusClass.moGetUserProp( ... ) at ... GetFriends(Int32 mUserId) in ... SaldoMasterDataAccess.cs |
De com dll is gebouwd met Visual Foxpro 8. Het lijkt erop dat het fout gaat bij het Casten naar een ADODB.Recordset, als namelijk de zelfde methode aangeroepen wordt die alleen een int terug geeft ( het eerste field uit de recordset ) dan gaat het wel goed. De recordset bevat dus ook gegevens, het gaat dus niet verkeerd omdat de recordset bijvoorbeeld NULL is.
Om te testen waar het probleem zit hebben we een simpele ASP.NET pagina gemaakt die de volgende code uitvoerd
ASP.NET:
1
2
| bbbusiness.cMemPlusClass memTest = new bbbusiness.cMemPlusClass(); Response.Write( memTest.moGetUserProp( "string","string", "string" ) ); |
Als deze code uitgevoerd wordt komt er dus in de moGetUserProp ( die deel uitmaakt van de stub die door VS.NET gegenereerd is ) de bovengenoemde Exception.
Ik vindt de Message van de Exception ook heel vreemd ( "?" ). Het is geen exception die door ons zelf gethrowed wordt. Ook zoeken op Google met die message heeft niet zoveel nut aangezien Google ( en andere zoekmachines ) het vraagteken gewoon negeren.
Heeft er iemand mischien nog een idee waarom het op de ene machine wel werkt en op de andere niet?
Ik weet zeker dat er op de machines dezelfde dll draait want we hebben deze meerdere malen weg gegooid en opnieuw geregistreerd. De com dll werkt ook gewoon goed als je hem bijvoorbeeld vanuit een simpele ASP Clasic pagina aanroept.
[ Voor 6% gewijzigd door Woy op 31-08-2004 10:56 . Reden: Even de layout verbeterd ]
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”