Toon posts:

[ASP.NET/VB.NET] Business-object doet het niet

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb via een voorbeeld een businessobject gemaakt die er alsvolgt er uit ziet:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Imports System
Imports System.Data
Imports System.Data.OleDb

Namespace CMEDIA

  Public Class database
    Public function chkName( strName As string) As Boolean
      If( strName = "Gert" ) Then
        Return True
      Else
        Return False
      End If
    End Function  
  End Class

End Namespace


Deze heb ik gecompileerd volgens deze opdracht
code:
1
vbc /t:library /out:bin\CMEDIA.dll /r:System.dll /r:System.Data.dll database.vb

Dit lukt allemaal en er wordt een dll aangemaakt in de map bin.

Nu wil ik de functie in de namespace gebruiken in het volgende ASP.NET document:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%@ Page Language="VB" %>
<%@ Import Namespace="CMEDIA" %>

<script runat="server">
  sub Page_load(obj as object, e as eventArgs)
    dim objCM as new database
    txtBox.Text = objCM.chkName("SDF")
  end sub

</script>

<html><body>
  <asp:TextBox ID="txtBox" runat="server" />
</body></html>


Als je dit ASP.NET document opvraagt dan krijg ik de volgende fout:
BC30002: Type is not defined: 'database'

Wil dus zeggen dat hij de class niet kan vinden, maar hij bestaat toch echt wel. Wie kan mij helpen?

  • whoami
  • Registratie: December 2000
  • Laatst online: 23-05 16:52
Je moet die DLL waarin die database class zit, toevoegen aan de references van je project.

https://fgheysels.github.io/


Verwijderd

Topicstarter
in het boek dat ik voor me heb, staat dat je alleen je dll in de bin directory moet doen en dat hij hem dan automatisch pakt. is dit niet zo dan?

  • whoami
  • Registratie: December 2000
  • Laatst online: 23-05 16:52
Nee. Je moet 'm echt wel aan die references toevoegen.

Maar, als je het heel zeker wilt zijn, dan kan je het eens proberen om de FQN te gebruiken.
Dat is dus ipv 'database' CMEDIA.database.
Als dat ook niet lukt, dan moet je 't echt wel aan de references toevoegen.

https://fgheysels.github.io/


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Overigens:

code:
1
2
3
4
5
6
7
Public function chkName( strName As string) As Boolean
    If( strName = "Gert" ) Then
        Return True
    Else
        Return False
    End If
End Function

Equals:

code:
1
2
3
Public function chkName( strName As string) As Boolean
    Return (strName = "Gert")
End Function


en je kunt hem helemaal verwijderen, want de string check kun je op de plek van chkName doen. Maar dat terzijde ;)

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


Verwijderd

Topicstarter
het is meer test code dus kijk ik niet echt of het nog beter kan.

trouwens het is wel heel leuk om een reference toe te voegen maar dat kan alleen met vs.net (volgens mij). als je alles nou gewoon met kladblok maakt, hoe moet je dan een reference toe voegen?

  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 25-09-2023
Hint: meegeven aan de compiler...

[ Voor 7% gewijzigd door Infinitive op 23-08-2004 14:49 ]

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


Verwijderd

Topicstarter
Infinitive schreef op 23 augustus 2004 @ 14:48:
Hint: meegeven aan de compiler...
ik heb even gekeken bij vbc /? maar daar kan je namespaces als referentie meegeven zoals ik in mijn startpost liet zien.

je moet toch in het aspx bestand een referentie naar de dll geven? of ben ik nou gek :P

  • EfBe
  • Registratie: Januari 2000
  • Niet online
Ze doelen erop dat je je webapplication ook moet compileren. Jij hebt een 'on-the-fly' app gemaakt, zonder project file en code behinds. Geen idee hoe je die configged voor compile time maar het zou me niets verbazen als die Imports directive een filename parameter heeft ;)

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


Verwijderd

De CLR kijkt voor een ASP.NET applicatie idd oa in de [bin] directory onder de root van de applicatie.

Ik ga er van uit dat je gebruik maakt van IIS, in dat geval is de enige reden die ik kan bedenken waarom er iets mis gaat bij de zgn probing naar de CMEDIA assembly dat je application root niet ligt waar je denkt dat hij ligt.

Een ASP.NET applicatie wordt gedefinieerd in de IIS admin, als je hier de properties opvraagt van de directory waarin je applicatie draait kun je bij het tabje [Home Directory] onderaan bij [Application Settings] een applicatie creeeren.

Als er op de knop naast het tekstboxje [Application Name] [Create] staat is de directory nog geen applicatie. De CLR gaat uit van de root van de applicatie en kan derhalve je assembly niet vinden.

Lost dit je probleem op? Zo nee, dan zul je meer details over de foutmelding moeten geven en je IIS (of gebruik je Cassini, Mono/XSP of Mono/Apache ?) configuratie moeten toelichten.

Verwijderd

Topicstarter
oke dat is mooi, maar ik heb iis niet zelf geinstalleerd en draai het allemaal bij een webhoster. Ik heb het nu wel op een andere manier gedaan en dan wordt de dll file wel gevonden:


code:
1
2
3
4
5
6
7
8
9
<configuration>
  <system.web>
    <compilation>
      <assemblies>
        <add assembly="CMEDIA"/>
      </assemblies>
    </compilation>
  </system.web>    
</configuration>

maar nu krijg ik de volgende foutmelding:
File or assembly name Microsoft.VisualBasic, or one of its dependencies, was not found.

Wat is de bedoeling van die foutmelding

[ Voor 12% gewijzigd door Verwijderd op 24-08-2004 19:45 ]


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Verwijderd schreef op 24 augustus 2004 @ 19:44:
oke dat is mooi, maar ik heb iis niet zelf geinstalleerd en draai het allemaal bij een webhoster. Ik heb het nu wel op een andere manier gedaan en dan wordt de dll file wel gevonden:


code:
1
2
3
4
5
6
7
8
9
<configuration>
  <system.web>
    <compilation>
      <assemblies>
        <add assembly="CMEDIA"/>
      </assemblies>
    </compilation>
  </system.web>    
</configuration>

maar nu krijg ik de volgende foutmelding:
File or assembly name Microsoft.VisualBasic, or one of its dependencies, was not found.

Wat is de bedoeling van die foutmelding
De bedoeling is jou te melden dat je iets fout doet ;)

de VB.NET compiler heeft een lullige eigenschap (ok, wel meer, maar dat terzijde): hij snapt niet dat hij een onderdeel van .NET is. Dit houdt in dat hij geen system assemblies referenced automatisch. Je moet dus die references ook opgeven in de <assemblies> tag. Deze zitten in de GAC, dus je kunt gewoon Microsoft.VisualBasic toevoegen aan de assemblies list, en wellicht ook System, System.Collections, System.Web.Forms en andere ongein.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


Verwijderd

Topicstarter
ik heb nu weer alles geprobeerd maar het lijkt erop dat mijn hoster Microsoft.VisualBasic gewoon niet heeft geinstalleerd of zoiets. Of kan ik ook nog fouten maken.

Ik heb de volgende methodes geprobeerd, uiteraard met de <configuration> <system.web> tags ervoor

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
      <assemblies>
        <add assembly="Microsoft.VisualBasic, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
      </assemblies>

en

      <assemblies>
        <add assembly="Microsoft.VisualBasic"/>
      </assemblies>

en

      <assemblies>
        <add assembly="*"/>
      </assemblies>

Verwijderd

Hoewel ik vind dat je wel erg aan het hacken bent en niet naar de oorzaak van het probleem aan het kijken bent toch de volgende (hack) suggestie:

Je kunt de Microsoft.VisualBasic assembly ook toevoegen aan de /bin, deze staat in:

C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Microsoft.VisualBasic.dll

Als hij jouw eigen assembly ook kon vinden door deze toe te voegen aan de /bin + de .config aanpassing dan zal dat met deze assembly ook wel werken...

Verwijderd

Topicstarter
Hoezo hacken? en hoezo oorzaak van het probleem?

Hij kan gewoon die ene assembly niet vinden, en dat is het probleem? toch?

Verwijderd

Topicstarter
Ik heb de dll in de bin map gezet en hij doet het eindelijk .. alleen snap ik nog niet wat je bedoeld met hacken en zoeken naar de oorzaak ..

Verwijderd

Het is uitermate vreemd dat je de .config aanpassingen die je genoemd hebt moet uitvoeren. Ik vermoedde daardoor al dat er iets niet klopt met de instellingen bij je provider (of dat je zelf iets niet goed doet, bijvoorbeeld aangeven dat je idd ASP.NET applicaties wilt gaan draaien).

Dat de Microsoft.VisualBasic assembly niet wordt gevonden is helemaal vreemd, omdat deze volgens mij toch echt gewoon default in de GAC (zie C:\Windows\Assembly) hoort te staan.

Het kan natuurlijk zo zijn dat je provider deze assembly uit de GAC gehaald heeft maar dat zou op zijn zachtst gezegd uitermate vreemd zijn. Niet dat ik zelf een fan van VB.NET ben of zo, maar ik kan geen reden bedenken waarom je deze assembly weg zou halen.

Kortom: tenzij je echt maar een beetje aan het hobbyen bent zou ik mijn provider bellen en eens vragen wat er precies aan de hand is....

Verwijderd

Topicstarter
heb ik dus gedaan, ze dachten dat het aan de versie lag van framework, want ze hebben framework v1.0.

Verder hebben ze me doorgestuurd naar msdn op pagina's te debuggen en naar google.

schiet niet echt op die hoster.

  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 01-04 20:36

Not Pingu

Dumbass ex machina

whoami schreef op 23 augustus 2004 @ 14:10:
Je moet die DLL waarin die database class zit, toevoegen aan de references van je project.
Huh :? Dat doe ik ook nooit en dat werkt altijd perfect. Mits je je applicatiemap juist als app hebt geconfigureerd in IIS.
edit:

hmm, mosterd na de maaltijd :P

[ Voor 8% gewijzigd door Not Pingu op 27-08-2004 15:27 ]

Certified smart block developer op de agile darkchain stack. PM voor info.


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Verwijderd schreef op 27 augustus 2004 @ 14:55:
heb ik dus gedaan, ze dachten dat het aan de versie lag van framework, want ze hebben framework v1.0.
Een hoster die 1.0 op zn public servers zet is niet echt slim bezig. Die kan om de dag zn servers rebooten door de memory leaks :D
schiet niet echt op die hoster.
Ik zou maar naar een echte .NET hoster gaan, bv www.is.nl.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com

Pagina: 1