Apache und ASP.NET / VB.NET

boesemar

Well-Known Member
Tach,
wir hosten ein paar webseiten fuer kunden auf einer FreeBSD 5.5 box und jetzt kommt einer mit ner in ASP.NET und VisualBasic entwickelten webseite... ;'(

Also habe ich mono und mod_mono fuer apache installiert, funktioniert auch, leider aber nicht fuer dem seine webseite. Ich vermute es liegt an visual basic, habe aber ehrlichgesagt fast keine ahnung von M$ und .NET.

Laut doku (http://www.mono-project.com/Language_Basic) sollte es jedoch einen 'vbnc' compiler geben in mono 1.2.3, kann ich aber nirgendwo finden (auch nicht im tarball). Der angeblich alte 'mbas' sucht vergeblich nach einer mbas.exe datei die ich auch nirgendwo finden kann.

Also, hat irgendwer hier sowas schonmal zum laufen bekommen?!

Die webseite hat xzy.aspx und xyz.aspx.vb dateien.

Die fehlermeldung beim .aspx aufmachen ist in etwa diese (von daher bin ich mir gar nicht so sicher ob es nur wegen VB probleme macht):

Parser Error
Description: Error parsing a resource required to service this request. Review your source file and modify it to fix this error.
Error message:
Cannot find type visao
File name: /home/vernon/html/visao.aspx Line: 1
Source Error:
<%@ Page Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" CodeFile="visao.aspx.vb" Inherits="visao" title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="Content1" Runat="Server">
<div style="width:782px;height:600px" class="conteudo">
<asp:Image ID="imageTopo" width="782" height="148" runat="server" />


Dankbar fuer jeden tipp..

bones
 
Moin,

also ich hab zwar nicht viel Ahnung von ASP.NET und schon garnicht unter Apache. Jedoch muss ich mich beruflich mit VB.NET herumquälen.

Cannot find type visao
Bedeutet für mich relativ eindeutig das diese Klasse "visao" nicht gefunden werden kann.

<%@ Page Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" CodeFile="visao.aspx.vb" Inherits="visao" title="Untitled Page" %>
Und hier wird wohl diese Klasse verwendet. Ich vermute dass diese Klasse in der visao.aspx.vb definiert wird. Leider ist es in VB.NET der Fall dass die Dateinamen nicht zwingend identisch mit den Klassennamen sein müssen. Daher wäre vielleicht der Inhalt dieser visao.aspx.vb hilfreich wenn es sich überhaupt um einen Fehler innerhalb der Programmierung handelt. Es könnte aber auch gut sein dass mangels Kompiler die Datei nicht übersetzt worden ist und somit auch die Klasse nicht zur Verfügung steht.

Wie gesagt, reine Vermutung meinerseits da ich nicht wirklich ein ASP.NET Experte bin und ich das Projekt des Kunden auch nicht kenne. Aber zum Glück bist du ja dankbar für jeden Tipp. ;)

Viele Grüße
 
(...)
Und hier wird wohl diese Klasse verwendet. Ich vermute dass diese Klasse in der visao.aspx.vb definiert wird. Leider ist es in VB.NET der Fall dass die Dateinamen nicht zwingend identisch mit den Klassennamen sein müssen. Daher wäre vielleicht der Inhalt dieser visao.aspx.vb hilfreich wenn es sich überhaupt um einen Fehler innerhalb der Programmierung handelt. Es könnte aber auch gut sein dass mangels Kompiler die Datei nicht übersetzt worden ist und somit auch die Klasse nicht zur Verfügung steht. (...)

Recht hast du, die visao.asp.vb faengt so an:

Code:
Partial Class visao
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Session("lng") Is Nothing Then
            Response.Redirect("Default.aspx")

...

Die seite hat noch eine paar andere aspx / aspx.vp paerchen, die alle den selben fehler ausspucken. Der webdesigner hat mir auch gesagt die seite sei "fertig" und dass er sie unter windows und .NET 2.0 gebaut hat..
 
Recht hast du, die visao.asp.vb faengt so an ...
Ist das ein Tippfehler oder heisst die Datei wirklich "visao.asp.vb", also ohne x?

Die seite hat noch eine paar andere aspx / aspx.vp paerchen, die alle den selben fehler ausspucken. Der webdesigner hat mir auch gesagt die seite sei "fertig" und dass er sie unter windows und .NET 2.0 gebaut hat..

Okay, wenn der gleiche Fehler überall auftritt ist wohl ein Fehler im Code vermutlich ausgeschlossen. Also liegts wohl am Kompiler. Soweit ich weis wird .NET 2.0 noch nicht vollständig von Mono unterstützt. Die Mono-Version spielt natürlich auch eine Rolle. Aber ich denke dennoch dass der Fehler anders aussehen würde falls es sich um .NET 2.0 Code handeln würde welcher nicht übersetzt werden kann, oder gibt es noch ein separates Errorlog in dem diese Fehlermeldungen zu finden sind?

Unter Windows wird doch das Ganze in DLLs verpackt, läuft das unter Mono eigentlich anders?

Viele Grüße

[EDIT]
Google sagt das du mit deinem Problem nicht allein bist, vielleicht hilft hiervon etwas weiter:
- "codebehind" anstatt "codefile"
- Namespace angeben?
- Codebehind-Kochrezept
[/EDIT]
 
Zuletzt bearbeitet:
Ist das ein Tippfehler oder heisst die Datei wirklich "visao.asp.vb", also ohne x?

Tippfehler.

Mittlerweile hab ich den visual basic compiler gefunden. Der ist im mono-basic packet und dafuer gibts kein port. Leider compiliert der nicht und da selbst in VB geschrieben hab ich auch aufgegeben den fehler zu suchen.
Ich lass es erstmal sein und guck in ein paar wochen/monaten ob es was neues gibt in sachen mono fuer BSD... Oder wenn jemand mithelfen will:

Code:
svn co svn://anonsvn.mono-project.com/source/trunk/mono-basic
cd mono-basic
./configure --prefix=/usr/local
gmake


-------------------------------------------------------------------------------------------------------------------------
Unhandled exception(vbnc.InternalException): There has been an internal error in the compiler:
  at vbnc.Helper.Stop (System.String Message) [0x00000]
  at vbnc.Helper.Assert (Boolean Condition) [0x00000]
  at vbnc.Helper.EmitLoadArrayElement (vbnc.EmitInfo Info, vbnc.Expression ArrayVariable, vbnc.ArgumentList Arguments) [0x00000]
  at vbnc.VariableToValueExpression.GenerateCodeInternal (vbnc.EmitInfo Info) [0x00000]
  at vbnc.Expression.GenerateCode (vbnc.EmitInfo Info) [0x00000]
  at vbnc.ReturnStatement.GenerateCode (vbnc.EmitInfo Info) [0x00000]
  at vbnc.CodeBlock.GenerateCode (vbnc.EmitInfo Info) [0x00000]
  at vbnc.CodeBlock.GenerateCode (IMethod Method) [0x00000]
  at vbnc.MethodBaseDeclaration.GenerateCode (vbnc.EmitInfo Info) [0x00000]
  at vbnc.MethodDeclaration.GenerateCode (vbnc.EmitInfo Info) [0x00000]
  at vbnc.SubDeclaration.GenerateCode (vbnc.EmitInfo Info) [0x00000]
  at vbnc.Helper.GenerateCodeCollection (IEnumerable Collection, vbnc.EmitInfo Info) [0x00000]
  at vbnc.BaseObjects`1[vbnc.IMember].GenerateCode (vbnc.EmitInfo ) [0x00000]
  at vbnc.AssemblyDeclaration.Emit (vbnc.TypeDeclaration Type) [0x00000]
  at vbnc.AssemblyDeclaration.Emit () [0x00000]
  at vbnc.Compiler.Compile () [0x00000]
InnerException: (Nothing)
Data.Count: 0
c.Helper.Stop (System.String Message) [0x00000] ): There has been an internal error in the compiler:
c.Helper.Assert (Boolean Condition) [0x00000] ): There has been an internal error in the compiler:
c.Helper.EmitLoadArrayElement (vbnc.EmitInfo Info, vbnc.Expression ArrayVariable, vbnc.ArgumentList Arguments) [0x00000] ): There has been an internal error in the compiler:
c.VariableToValueExpression.GenerateCodeInternal (vbnc.EmitInfo Info) [0x00000] ): There has been an internal error in the compiler:
c.Expression.GenerateCode (vbnc.EmitInfo Info) [0x00000] ): There has been an internal error in the compiler:
c.ReturnStatement.GenerateCode (vbnc.EmitInfo Info) [0x00000] ): There has been an internal error in the compiler:
c.CodeBlock.GenerateCode (vbnc.EmitInfo Info) [0x00000] ): There has been an internal error in the compiler:
c.CodeBlock.GenerateCode (IMethod Method) [0x00000] ): There has been an internal error in the compiler:
c.MethodBaseDeclaration.GenerateCode (vbnc.EmitInfo Info) [0x00000] ): There has been an internal error in the compiler:
c.MethodDeclaration.GenerateCode (vbnc.EmitInfo Info) [0x00000] ): There has been an internal error in the compiler:
c.SubDeclaration.GenerateCode (vbnc.EmitInfo Info) [0x00000] ): There has been an internal error in the compiler:
c.Helper.GenerateCodeCollection (IEnumerable Collection, vbnc.EmitInfo Info) [0x00000] ): There has been an internal error in the compiler:
c.BaseObjects`1[vbnc.IMember].GenerateCode (vbnc.EmitInfo ) [0x00000] ): There has been an internal error in the compiler:
c.AssemblyDeclaration.Emit (vbnc.TypeDeclaration Type) [0x00000] ): There has been an internal error in the compiler:
c.AssemblyDeclaration.Emit () [0x00000] ): There has been an internal error in the compiler:
c.Compiler.Compile () [0x00000] ): There has been an internal error in the compiler:
Commandline arguments:
@vbruntime.rsp
-debug
/noconfig
-target:library
-out:../../class/lib/vbnc/Microsoft.VisualBasic.dll
@Microsoft.VisualBasic.dll.sources
/debug:full
/noconfig
/r:System.dll
/r:mscorlib.dll
/r:System.dll,System.Windows.Forms.dll,System.Data.dll,System.Drawing.dll,System.Web.dll,System.Xml.dll
/novbruntimeref
/define:_MYTYPE=\Empty\,NET_2_0=True,NET_VER=2.0
/errorreport:prompt
/t:library
/errorreport:prompt
/optionstrict+
/imports:System,System.Collections,System.Data,System.Diagnostics
/out:Microsoft.VisualBasic.dll
/res:strings.resources
/keyfile:msfinal.pub
-codepage:65001
There has been an internal error in the compiler:
Compilation took 00:00:10.7718370
gmake[3]: *** [../../class/lib/vbnc/Microsoft.VisualBasic.dll] Error 255
gmake[3]: Leaving directory `/root/mono/mono-basic/vbruntime/Microsoft.VisualBasic'
gmake[2]: *** [do-all] Error 2
gmake[2]: Leaving directory `/root/mono/mono-basic/vbruntime/Microsoft.VisualBasic'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/root/mono/mono-basic/vbruntime'
gmake: *** [all-recursive] Error 1

Unter Windows wird doch das Ganze in DLLs verpackt, läuft das unter Mono eigentlich anders?

Scheint to, habe /usr/local/lib/mono voll mit dll's, wie System.ServiceProcess.dll Microsoft.Build.Engine.dll etc...


gruesse.
 
Hallo boesemar,

also so wie das aussieht werde ich wohl doch noch nicht so schnell in die Falle kommen!
So dann werde ich mich mal opfern und versuchen Dir zu helfen...

Wollte eigentlich nie etwas mit diesem M$ Framework Gedöns am Hut haben wollen und eigentlich wollte ich dieses Wochenende meine kompletten Windows Clients plattmachen..

Nun gut behalt ich sie noch ein Weilchen, weil ich da den ganzen DOTNET Kram draufhabe...

Zuerst einmal sehe ich da einen Ausnahmefehler also irgendeine Komponente fehlt Dir, soweit ich informiert bin, brauchst Du auch unter Mono das M$ Framework in diesem Fall in der Version 2.0 mittlerweile ist da schon 3 draussen..

Schick mir ne PM, dann werde ich mal dem Problem zu Leibe rücken...

So jetzt aber husch husch ins Körbchen

LG rudy
 
Zuletzt bearbeitet:
bsd-sharp kennst du? Die bieten dort ein port-"overlay" an, in dem aktuellere und mehr Mono-Ports als im offiziellen Tree sind, aber ich weiß nicht obs speziell beim vb-compiler hilft, da ich den bis jetzt noch nicht verwendet habe..
 
Ich wollte eigentlich keine Leichen wiederbeleben, allerdings hätte ich eine Frage bezüglich mono die mir _hier_ eventuell beantwortet werden könnte.

Ich habe mono auf FreeBSD 6.2 STABLE kompiliert, installaliert und getestet. Alles erfolgreich.

Jedoch benötige ich Mono in einem Jail für ASP.net Dienste, allerdings hängt sich Mono trotz procfs und devfs auf und konsumiert fröhlich den ersten CPU-Kern :(


Ich befrage schon eine geschlagene Woche das Google-Orakel welches mir informationsarme Antworten gibt und habe alles nach bestem Wissen und Gewissen versucht.

Es wäre äußert hilfreich wenn mir jemand einen Wink in die richtige Richtung weisen könnte :)


Vielen Dank und Gruß,
token
 
Hast du dasselbe mal ausserhalb der Jail getestet, also kannst du es eingrenzen obs ein jail-spezifisches oder generelles mono-bsd Problem ist?
Hast du mono selbst gebaut, oder aus den Ports, bzw. dem Port-"Overlay" von bsd-sharp? Ich meine mich zu erinnern, dass die Jungs von bsd-sharp je nach Version mehr oder weniger patchen mussten, damit es auch unter BSD ordentlich läuft, wenn ich mich recht entsinne, musste z.B. march und mtune aus den cflags entfernt werden, das könnte (sofern du "manuell" kompiliert hast) direkt mit deinem Problem zusammenhängen. Momentan hab ich aber leider keinen Zugriff auf eine FreeBSD-Maschine mit mono, daher kann ich nur aus Erinnerungen schreiben..

HTH Maurice
 
Ich habe mono aus dem offiziellen Portstree mittels portinstall -rRp gebaut, im Hostsystem installiert und mittels pkg_add -v im Jail installiert. Außerdem habe ich im Makefile in /usr/ports/lang/mono die Zeile

ONLY_FOR_ARCHS= i386 #amd64

gemäß meiner ARCH (einem amd64 Dual Core) angepasst. Dieses ist jedoch nicht von belang, da bei Tests auf einer i386-CPU im heimischen Jail mono sich exakt so verhält wie auf dem amd64.

Außerhalb des Jails (also im Hostsystem) funktionieren sowohl die runtime (mono) als auch die Compiler (mcs/gmcs) und die anderen Tools (bis auf ein wenig gemecker wegen Threading. Ich denke dies ist durch das SMP-System bedingt, weniger durch die ARCH)

Sobald man jedoch die Runtime innerhalb eines Jail anschmeißt, wird ein CPU-Kern regelrecht konsumiert.


Wie gesagt, ich habe Google gefoltert und bin nicht wirklich schlauer.
 
Anscheinend ist dieses Problem gänzlich unbekannt bzw. von sehr geringer Priorität.

O-Ton: Die Entwickler werden von SuSE bzw. Novell bezahlt und FreeBSD hat schon seit Jahren "sub-par threading". Dementsprechend sieht man atm keinen Handlungsbedarf.

Schade eigentlich, mal wieder eine Alternative welche nicht nutzbar ist weil open Source eben doch keine Garantie ist für "cross-platform compatibility" ist.
 
O-Ton: Die Entwickler werden von SuSE bzw. Novell bezahlt und FreeBSD hat schon seit Jahren "sub-par threading". Dementsprechend sieht man atm keinen Handlungsbedarf.

Das ist der O-Ton von wem?

Vielleicht ist das Problem auch auf beiden Seiten zu suchen, Mono stösst im Allgemeinen auf große Ablehnung, weil die Designer der Sprache/Framework von Microsoft bezahlt wurden, weil Mono von Novell entwickelt wurde und Novell böse ist, und andere sehr objektive Urteile.
Die Ablehnung im Linux-Umfeld ist schon recht gross, im *BSD-Bereich würd ich sie sogar noch grösser einschätzen. Und wo wenig Input von der Community kommt, kanns auch nur wenig Output der Entwickler geben, bzw. gibts relativ wenig Leute die Code fixen, aktuell sind im bsd-sharp Team ganze 2 Leute aktiv.

Es ist wirklich schade, dass dadurch diese Alternative weniger nutzbar ist (gar nicht nutzbar ist ein bisschen übertrieben), aber das Problem ist imho nicht auf der Entwicklerseite zu suchen, zumindestens nicht ausschliesslich..
 
Das ist der O-Ton von wem?

Vielleicht ist das Problem auch auf beiden Seiten zu suchen, Mono stösst im Allgemeinen auf große Ablehnung, weil die Designer der Sprache/Framework von Microsoft bezahlt wurden, weil Mono von Novell entwickelt wurde und Novell böse ist, und andere sehr objektive Urteile.
Die Ablehnung im Linux-Umfeld ist schon recht gross, im *BSD-Bereich würd ich sie sogar noch grösser einschätzen. Und wo wenig Input von der Community kommt, kanns auch nur wenig Output der Entwickler geben, bzw. gibts relativ wenig Leute die Code fixen, aktuell sind im bsd-sharp Team ganze 2 Leute aktiv.

Es ist wirklich schade, dass dadurch diese Alternative weniger nutzbar ist (gar nicht nutzbar ist ein bisschen übertrieben), aber das Problem ist imho nicht auf der Entwicklerseite zu suchen, zumindestens nicht ausschliesslich..

Hallo moe,

das hat auch gut nachvollziehbare Gründe warum diese Ablehnung existiert....
Im Gegensatz zu Java bei der diese auch zumindest am Anfang bestand, ehe dann der grosse Hype kam, sind sie bei Mono anders gelagert...

Das ist sehr vielschichtig....

So da gibt es die einen die einen zu grossen Einfluss und der ist auch nicht von der Hand zuweisen von Microsoft sehen, dabei geht es aber weniger um Bezahlung von Entwicklern Nein es geht primär um die sogenannten Webservices und die "Marktpolitik" die dahinter steht Sun contra Microsoft...
So dann gibt es wieder welche ( zu denen gehöre ich aber nicht ! ) die das aus ideologischen Gründen ablehnen...
So dann gibt es wiederum andere die es aus Gründen der plattformunabhängigkeit ablehnen und da liegt der Hase im Pfeffer...
Auch gibt es eine immer grössere Zahl die es aus Sicherheitsbedenken ablehnen da ist Java eindeutig überlegen...
So weitere argumentieren das Microsoft Durch seine "DOTNET" Strategie kleinere Firmen erpressbar macht auch da ist was dran...
Viele Entwickler argumentieren auch das dadurch Code verfälscht wird "Stichwort Managed Code" sehe ich ähnlich !

Es ist ja auch möglich Code zu mischen ob das als positiv zu werten ist, glaube eher nein..

Dann die Ablehnung zu Novell hat gut nachvollziehbare Gründe viele Anhänger des OpenSource Gedankens stört zum einen der bekannte Deal extrem und das zurecht...
Dann ist es auch so das Novell nur nimmt aber fast nichts zurück gibt....

Denke daraus hat Sun gelernt und geht hier zumindest am Anfang war das so vorsichtig den OpenSource Weg der aber so langsam an Fahrt gewinnt..

Das sieht man auch an den Gewinnzahlen dieses Unternehmens...

gruss rudy
 
Auch wenn es jetzt schon extrem Off-Topic geworden ist: Vergesst bitte nicht dass Sun und Apple höchstwahrscheinlich schon längst Pleite wären wenn Microsoft denen nicht unter die Arme gegriffen hätte. Und ohne Sun und Apple wäre es wahrscheinlich endlich gelungen den Microsoft Konzern zu zerschlagen...aber so hat Microsoft eben auch seine Finger in Sun und Apple drin...
Aber besser: back to Topic!

Viele Grüße
 
Zurück
Oben