Hi, I can't start WebServer.exe. It looks for dlls of xsharp version 2.1.0 which I no longer have.
If you put the code online, everyone can recompile it with the version of xsharp in use.
Danilo
WebServer mit Login und Artikelverwaltung
Moderator: wriedmann
- softdevo@tiscali.it
- Posts: 191
- Joined: Wed Sep 30, 2015 1:30 pm
WebServer mit Login und Artikelverwaltung
Hallo Horst,
Dick
Wir verwenden einen Windows-Server von unserem Webhoster (wo wir EXE-Rechte erhalten haben). Ja, das ist aus ihrer Sicht IIS. Es ist eine X # .exe und 1 DLL und abgesehen von den üblichen Aktionen, eine DLL einzuschließen, haben wir nichts Besonderes getan, um die DLL zum Laufen zu bringen.Horst wrote: Zuerst wollte ich meine CGI's unter IIS in X# konvertieren, leider ging das nicht, sobald eine extere Dll (z.B. VORDDClasses.dll) aufgerufen wurde fand IIS die dll's nicht.
Dann wollte ich eine ISAPI Extension für IIS machen, leider geht das auch nicht mit .NET es müsste C++ oder so sein.
Wie hast du das mit den CGI gelöst ? Benutzt du IIS ?
Dick
WebServer mit Login und Artikelverwaltung
Hallo Dick
-> und abgesehen von den üblichen Aktionen, eine DLL einzuschließen
Kannst du mir das erklären ?
Gruss Horst
-> und abgesehen von den üblichen Aktionen, eine DLL einzuschließen
Kannst du mir das erklären ?
Gruss Horst
WebServer mit Login und Artikelverwaltung
Hallo Danilo
Ohh my fault, i am goinig old, i thought i put the source also into the zip.
I hope now its usable.
Horst
Ohh my fault, i am goinig old, i thought i put the source also into the zip.
I hope now its usable.
Horst
- Attachments
-
- Web_Server.zip
- (192.18 KiB) Downloaded 66 times
-
- Applications.zip
- (162.69 KiB) Downloaded 66 times
WebServer mit Login und Artikelverwaltung
Hallo Horst,
in der Kürze liegt die Würze.
Hier nur ganz kurz was mir auf die Schnelle aufgefallen ist:
1. Der Processor Thread schmiert ab, wenn was schief geht. Irgendwann sind alle Processor Threads beendet
Abhilfe: TRY CATCH innerhalb der Reponse Methode um diverse Aufrufe und der Einfachheit halber um den ganzen Inhalt.
2. in der Response Method gibt es mehrere Probleme (siehe MSDN):
- System.Io.Path.GetTempFileName kann schief gehen (Temp-Datei kann nicht erstellt werden) -> TRY CATCH
- die Temp-Dateien sollten hinterher wieder gelöscht werden
- File.Create erstellt die Datei nochmal, obwohl sie mit GetTempFileName schon erstellt wurde
3. WriteLog ist nicht ThreadSafe (wenn zwei Threads gleichzeitig die Datei öffnen wollen, kommt eine Exception), es kommt nicht zum Absturz, schreibt aber im Fehlerfall nichts ins Log
Ganz allgemein:
Wäre so eine Neuprogrammierung nicht eine gute Gelegenheit das WebInterface zu modernisieren, z.B. mit Angular, React oder vue?
Stefan
in der Kürze liegt die Würze.
Hier nur ganz kurz was mir auf die Schnelle aufgefallen ist:
1. Der Processor Thread schmiert ab, wenn was schief geht. Irgendwann sind alle Processor Threads beendet
Abhilfe: TRY CATCH innerhalb der Reponse Methode um diverse Aufrufe und der Einfachheit halber um den ganzen Inhalt.
2. in der Response Method gibt es mehrere Probleme (siehe MSDN):
- System.Io.Path.GetTempFileName kann schief gehen (Temp-Datei kann nicht erstellt werden) -> TRY CATCH
- die Temp-Dateien sollten hinterher wieder gelöscht werden
- File.Create erstellt die Datei nochmal, obwohl sie mit GetTempFileName schon erstellt wurde
3. WriteLog ist nicht ThreadSafe (wenn zwei Threads gleichzeitig die Datei öffnen wollen, kommt eine Exception), es kommt nicht zum Absturz, schreibt aber im Fehlerfall nichts ins Log
Ganz allgemein:
Wäre so eine Neuprogrammierung nicht eine gute Gelegenheit das WebInterface zu modernisieren, z.B. mit Angular, React oder vue?
Stefan
WebServer mit Login und Artikelverwaltung
Hallo Horst,
Wenn wir das Projekt generieren erhalten wir eine X # .exe und eine C # .DLL. Zusammen mit den EXE-Rechten im IIS-Verzeichnis abgelegt, hat es funktioniert.
Ich denke, das ist alles, was wir dort gemacht haben.
Dick
==========================
We have a Visual Studio Solution for the CGI project consisting of 1 X# project and 1 C# project which is (in properties) a Class Library. Then, in References of the X# project, we point to the C# project.
When we generate the project we get a X# .exe and a C# .DLL. Placed together in the IIS directory with .exe rights it worked.
I think that is all we did there.
Wir haben eine Visual Studio Solution für das CGI-Projekt, : 1 X # -Projekt und 1 C # -Projekt, das (in Properties) ein Class Libraryist. Dann verweisen wir in References des X # -Projekts auf das C # -Projekt.Horst wrote:Hallo Dick
-> und abgesehen von den üblichen Aktionen, eine DLL einzuschließen
Kannst du mir das erklären ?
Wenn wir das Projekt generieren erhalten wir eine X # .exe und eine C # .DLL. Zusammen mit den EXE-Rechten im IIS-Verzeichnis abgelegt, hat es funktioniert.
Ich denke, das ist alles, was wir dort gemacht haben.
Dick
==========================
We have a Visual Studio Solution for the CGI project consisting of 1 X# project and 1 C# project which is (in properties) a Class Library. Then, in References of the X# project, we point to the C# project.
When we generate the project we get a X# .exe and a C# .DLL. Placed together in the IIS directory with .exe rights it worked.
I think that is all we did there.
WebServer mit Login und Artikelverwaltung
Hallo Stefan
Fange von hinten an
3. Habe ich auch gemerkt als ich das Speicherverhalten getestet habe (mit 8 Browsern und einer WebSeite die sich alle paar Sekunden refresht) Sie schrieben zum Teil überlappend ins Logfile. Da ich die aber zu 99% nur zum debbugen brauche lies ich sein.
2 und 1 Das File.Create habe ich aus einem C# Muster , habe mich auch gewundert warum, aber war zu faul zum weiterdenken. Das werde ich sicher sofort ändern und noch ein parr Try/Catch einbauen.
Was meinst du mit siehe MSDN ?.
Angular, React oder vue musste ich googlen. Ich möchte einen ganz simplen Aufbau haben, wen immer möglich ohne irgendwelche Zusatzbibliotheken. Mit X# ,HTML,CSS und JS habe ich eine App die sauschnell und problemlos läuft. Als VO Cgi schon seit gut 10 Jahren.
Das aussterben von VO und die vielen Zusatzmöglichkeiten von .Net (einfach einzubinden) treibt mich zu X#.
Danke für dein Feedback.
Gruss
Horst
Fange von hinten an
3. Habe ich auch gemerkt als ich das Speicherverhalten getestet habe (mit 8 Browsern und einer WebSeite die sich alle paar Sekunden refresht) Sie schrieben zum Teil überlappend ins Logfile. Da ich die aber zu 99% nur zum debbugen brauche lies ich sein.
2 und 1 Das File.Create habe ich aus einem C# Muster , habe mich auch gewundert warum, aber war zu faul zum weiterdenken. Das werde ich sicher sofort ändern und noch ein parr Try/Catch einbauen.
Was meinst du mit siehe MSDN ?.
Angular, React oder vue musste ich googlen. Ich möchte einen ganz simplen Aufbau haben, wen immer möglich ohne irgendwelche Zusatzbibliotheken. Mit X# ,HTML,CSS und JS habe ich eine App die sauschnell und problemlos läuft. Als VO Cgi schon seit gut 10 Jahren.
Das aussterben von VO und die vielen Zusatzmöglichkeiten von .Net (einfach einzubinden) treibt mich zu X#.
Danke für dein Feedback.
Gruss
Horst
- softdevo@tiscali.it
- Posts: 191
- Joined: Wed Sep 30, 2015 1:30 pm
WebServer mit Login und Artikelverwaltung
Ok, now I can compile your application, but I don't understand how it works. How can I tell to start my own web application?
I guess I should be able to say to start an application located in the "x" folder, the start page is called "y". Am I wrong?
Thanks
Danilo
I guess I should be able to say to start an application located in the "x" folder, the start page is called "y". Am I wrong?
Thanks
Danilo
WebServer mit Login und Artikelverwaltung
Hallo Danilo
I think your expecting to much from my little 'Server' . the Server is build on the httplistener example from Wolfgang.
In the html code is 'action="forzaItalia"'
in the method response() is a switch with
CASE "forzaitalia" ; cString := StartDanilo (oRequest, cInputString) (StartDanilo is in a Dll)
cString contains the answer for the browser
i hope that helps
Horst
I think your expecting to much from my little 'Server' . the Server is build on the httplistener example from Wolfgang.
In the html code is 'action="forzaItalia"'
in the method response() is a switch with
CASE "forzaitalia" ; cString := StartDanilo (oRequest, cInputString) (StartDanilo is in a Dll)
cString contains the answer for the browser
i hope that helps
Horst