C# Code ein mal am Tag aus führen über CFA

Liam

Silver Partner
Advanced Certified
Mitglied seit
6. Dezember 2022
Beiträge
172
Hallo zusammen,

ich bin dabei eine CFA zu schreiben, die und einen nächtlichen Dienstwechsel ermöglicht basierend auf den hinterlegten Supportern und unseren Service Portal.

Dafür muss ich eine Datei von einem FTP Server lokal auf die 3CX ziehen.

Den passen C# code habe ich bereits dafür und er funktioniert auch lokal auf meinem Rechner.

Allerdings, wenn ich diesen in einer CFA einbinden möchte, bekomme ich immer folgenden Fehler.

Da ich noch nicht so erfahren bin, mit C# wollte ich hier einmal nach Hilfe fragen.

Hat da eventuell jemand eine Idee, wie Mann das lösen kann? Vor allem, da der Code nur 1 Mal am Tag aufgerufen werden soll.

MFG

Fehlercode:

:[22932..22936)E: (484,27)-(484,31): Error CS0161: "Main.ExecuteCSharpCode11081501832ECCComponent.test()": Nicht alle Codepfade geben einen Wert zurück.
private object test()
^^^^
:[22985..22991)E: (486,26)-(486,32): Error CS0118: "System" ist "Namespace", wird aber wie "Typ" verwendet.
using System;
^^^^^^
:[22991..22992)E: (486,32)-(486,33): Error CS1001: Bezeichner erwartet.
using System;
^
:[22991..22991)E: (486,32)-(486,32): Error CS0210: Sie müssen in einer fixed- oder using-Anweisungsdeklaration einen Initialisierer bereitstellen.
using System;

:[23020..23029)E: (487,26)-(487,35): Error CS0118: "System.IO" ist "Namespace", wird aber wie "Typ" verwendet.
using System.IO;
^^^^^^^^^
:[23029..23030)E: (487,35)-(487,36): Error CS1001: Bezeichner erwartet.
using System.IO;
^
:[23029..23029)E: (487,35)-(487,35): Error CS0210: Sie müssen in einer fixed- oder using-Anweisungsdeklaration einen Initialisierer bereitstellen.
using System.IO;

:[23058..23068)E: (488,26)-(488,36): Error CS0118: "System.Net" ist "Namespace", wird aber wie "Typ" verwendet.
using System.Net;
^^^^^^^^^^
:[23068..23069)E: (488,36)-(488,37): Error CS1001: Bezeichner erwartet.
using System.Net;
^
:[23068..23068)E: (488,36)-(488,36): Error CS0210: Sie müssen in einer fixed- oder using-Anweisungsdeklaration einen Initialisierer bereitstellen.
using System.Net;

:[23069..23069)E: (488,37)-(488,37): Error CS1513: } erwartet.
using System.Net;

:[23789..23798)E: (500,35)-(500,44): Error CS0246: Der Typ- oder Namespacename "WebClient" wurde nicht gefunden (möglicherweise fehlt eine using-Direktive oder ein Assemblyverweis).
using (WebClient client = new WebClient())
^^^^^^^^^
:[23812..23821)E: (500,58)-(500,67): Error CS0246: Der Typ- oder Namespacename "WebClient" wurde nicht gefunden (möglicherweise fehlt eine using-Direktive oder ein Assemblyverweis).
using (WebClient client = new WebClient())
^^^^^^^^^
:[24000..24017)E: (503,57)-(503,74): Error CS0246: Der Typ- oder Namespacename "NetworkCredential" wurde nicht gefunden (möglicherweise fehlt eine using-Direktive oder ein Assemblyverweis).
client.Credentials = new NetworkCredential(ftpUsername, ftpPassword);
^^^^^^^^^^^^^^^^^
:[24291..24291)E: (508,107)-(508,107): Error CS1002: ; erwartet.
client.DownloadFile(new Uri(ftpServer + remoteFilePath), localFilePath)

:[24367..24379)E: (510,39)-(510,51): Error CS0246: Der Typ- oder Namespacename "WebException" wurde nicht gefunden (möglicherweise fehlt eine using-Direktive oder ein Assemblyverweis).
catch (WebException ex)
^^^^^^^^^^^^
:[24380..24382)W: (510,52)-(510,54): Warning CS0168: Die Variable "ex" ist deklariert, wird aber nie verwendet.
catch (WebException ex)
^^
:[24641..24642)E: (522,0)-(522,1): Error CS1022: Typ- oder Namespacedefinition oder Dateiende erwartet.
}
^
 
Den passen C# code habe ich bereits dafür und er funktioniert auch lokal auf meinem Rechner.

Allerdings, wenn ich diesen in einer CFA einbinden möchte, bekomme ich immer folgenden Fehler.

Dies

The C# file containing the code to execute. Please note that you must use .NET Core 2.1 code. Also, it is important that your C# script doesn’t include any namespace declaration. You just need to provide the class to be included in the app namespace.
ClassName: The class name of the object to create, not including any namespace.


ist erfüllt?
 
Hat da eventuell jemand eine Idee, wie Mann das lösen kann? Vor allem, da der Code nur 1 Mal am Tag aufgerufen werden soll.
Wenn Zeitsteuerung, dann z.B. auch gern per Powershell Skript (was die 3CX in Teilen steuern kann). Das Skript wird über den Taskplaner des System angesteuert. Dann erfolgt der Download z.B. per cURL. Sofern keine 3CX Steuerung nötig ist, würde ich auf Linux Systemen gar ein Perl Skript bevorzugen.

Generell läuft eine CFA nur per Anruf an und hört damit auf (Ausnahme Powerdialer o.ä.). Die nutzbaren C# Systemaufrufe sind zudem begrenzt, nicht alles ist möglich. Die 3CX nutzt glaub aktuell .Net 5 (oder doch .Net 6?) bzw. eben .Net Core ab 2.x. FTP ist glaub ich so gar nicht möglich (Beispiel FluentFTP Einbindung). Die empfohlene Methode - egal ob CFD Standardbausteine oder C# Code - ist ein Abruf per HTTPS.

Ein using im Code geht so gar nicht.
 
Zuletzt bearbeitet:
Wenn Zeitsteuerung, dann z.B. auch gern per Powershell Skript (was die 3CX in Teilen steuern kann). Das Skript wird über den Taskplaner des System angesteuert. Dann erfolgt der Download z.B. per cURL. Sofern keine 3CX Steuerung nötig ist, würde ich auf Linux Systemen gar ein Perl Skript bevorzugen.

Generell läuft eine CFA nur per Anruf an und hört damit auf (Ausnahme Powerdialer o.ä.). Die nutzbaren C# Systemaufrufe sind zudem begrenzt, nicht alles ist möglich. Die 3CX nutzt glaub aktuell .Net 5 (oder doch .Net 6?) bzw. eben .Net Core ab 2.x. FTP ist glaub ich so gar nicht möglich (Beispiel FluentFTP Einbindung). Die empfohlene Methode - egal ob CFD Standardbausteine oder C# Code - ist ein Abruf per HTTPS.

Ein using im Code geht so gar nicht.
Vielen Dank für deine Antwort, ich werde mir das bei Gelegenheit mal anschauen
 

Statistik des Forums

Themen
44.414
Beiträge
232.716
Mitglieder
78.330
Neuestes Mitglied
uvitas