Laden...

Forenbeiträge von Campy Ingesamt 439 Beiträge

10.11.2023 - 19:29 Uhr

Habs mir fast gedacht aber hätte ja sein können, dass ich was übersehen habe 😃 Trotzdem danke!

08.11.2023 - 10:34 Uhr

Hallo zusammen,

wir werfen gerade im Rahmes eines Projekts welches bei AWS gehosted wird, einen Blick auf Auth0.

(Normalerweise sind wir mehr in Azure unterwegs)

Gibt es für die Auth0 WPF Bibliothek soetwas wie den PublicClientBuilder für AzureB2C welcher sich um das Caching (memory + file) und um den Token refresh kümmert? Evtl. hat auch jemand schon eine zuverlässige Methode implementiert / gefunden?

Vielen Dank!

07.07.2023 - 11:54 Uhr

Ok super - vielen Dank! Dann hab ich mir darüber zu viele Gedanken gemacht 😃

07.07.2023 - 11:35 Uhr

Brauchst Du nur User-Rechte, dann kann der User das selbst akzeptieren. Eine App-Registration, die internen Tenant Zugriff ermöglicht, geht nur über den Admin.

Hallo Abt,

ich verstehe nur nicht wie ich den Link bekomme damit der Admin den Consent bestätigen kann und gleichzeitig bei mir im Service der "Eintrag" für den Kunden erstellt werden kann.

07.07.2023 - 10:35 Uhr

Hallo zusammen,

ich bräuchte bitte Hilfe zu folgendem Thema - evtl. hat jemand ein HowTo oder so etwas selbst schon gemacht.

Wir brauchen einen Service in der Azure Cloud der Zugriff auf verschiedene Azure Tenants unserer Kunden hat um dort Daten über die Graph Api (on behalf und auch nicht) abzurufen.

Unsere Cloud ist bereits mehrmandantenfähig und auch der Dienst wird es. Von anderen Anwendungen kenne ich es, dass man die Cloud Anwendung authorisieren muss (über einen Link und Anmeldung mit entsprechenden Rechten, ich möchte nicht jedem Kunden zumuten die Anwendungsregistrierung selbst durchzuführen). Beispiele sind CodeTwo oder Exclaimer.

Auf welches Azure Produkt (ich denke Azure App Service) setzt man am besten und wie ist dies umsetzbar? Den Dienst an sich bekomme ich hin und auch in Azure bei unserem Tenant kann ich ihn natürlich registrieren damit unsere anderen Anwendungen mit dem Dienst authentifiziert kommunizieren können.

Vielen Dank!!

21.03.2023 - 20:15 Uhr

Hallo zusammen,

wir haben unsere eigene IT-Infrastruktur (Services, AD, etc.) in Microsoft Azure gehostet.
Nun benötigen wir für verschiedene unserer Produkte jeweils eine produktiv- und Stagingumgebung.

Wie bildet ihr dies in Microsoft Azure ab?
Habt ihr einen Microsoft Azure Mandanten und legt verschiedene Ressourcen-Gruppen an
oder erstellt ihr pro Produkt einen Mandanten?

Kann man die einzelnen Ressourcen-Gruppen mit Berechtigungen trennen?

EDIT: Habs gefunden: Abonnements

Vielen Dank!

16.09.2022 - 21:58 Uhr

Hallo Abt,

vielen Dank für die super Ausführung mit Praxisbezug.
Dies hilft mir extrem weiter.

Oftmals ist ein Praxisbeispiel einfach viel besser als die Theorie in der Literatur / Dokumentation.
(Wobei mir natürlich klar ist, wie unabdingbar und essenziell dies ist)

16.09.2022 - 20:59 Uhr

Hallo Abt,

ich bin mir tatsächlich bei einer Sache nicht ganz sicher.
Bei allen Beispielen die ich zu on behalf of fand, geht es darum, Daten von einem 3rd Party Service abzuholen.

Ich habe zwei Services und für beide Services hat der Benutzer entsprechende Rechte.
Sprich der Benutzer meldet sich an und im Token stehen die Rechte für beide Services.

Somit könnte doch Service A einfach das Token für die Requests an Service B verwenden?

Entschuldige bitte, dass ich so genau nachfrage, aber es geht ja genau darum es richtig zu machen 😉

PS: Gerade für diese Fälle bau ich es ja in der Dev Umgebung und nicht produktiv 🙂

Viele Grüße

15.09.2022 - 22:20 Uhr

Hallo zusammen,

ich habe eine mit OAuth abgesicherte Api welche von einer App aufgerufen wird.
Der authentifizierte Benutzer hat aber auch noch Rollen für einen weiteren Microservice.

Nun soll bei einem Aufruf des Benutzers die Api die Authentifizierung an den Microservice (weitere Api) weiter geben.
Gibt es dazu einen speziellen Begriff oder hat jemand Beispielcode dafür?

Nicht gewollt ist, dass die Apis über ein client-Secret authentifiziert werden.
Es soll auch an der Api des Microservice der Benutzer der App authentifziert werden.

Ich hoffe man kann verstehen was ich beabsichtige.

Vielen Dank!
Matthias

13.06.2022 - 17:29 Uhr

Verwendetes Datenbanksystem: Postgres

Hallo zusammen,

wir verwenden in einer Anwendung einen Postgres DB Server mit Dapper als ORM.
Ich möchte nun in einer Query die Dauer in Tagen zwischen zwei DateTime Werten erfassen.

Folgend der Teil der Query auf die ich das Problem eingrenzen konnte - ich vermute Dapper kommt mit dem ::date Cast nicht klar:


st."End"::date - st."Start"::date

Die (nicht sehr aussagekräftige) Fehlermeldung:

Fehlermeldung:
System.NotSupportedException: 'The member Connection of type Npgsql.NpgsqlConnection cannot be used as a parameter value'

Ich hoffe jemand hat eine idee und kann mir weiterhelfen. Vielen Dank!

04.05.2022 - 20:16 Uhr

Naja ich kann den Emulator ja am MacBook bedienen - für ne Preview nicht weiter schlimm und bis zur finalen Version wird das bestimmt noch behoben 🙂
Ansonsten alles sehr flott und flüssig auch beim Debuggen.

02.05.2022 - 10:49 Uhr

Hallo,

das half leider auch nicht - einen Workaround gibt es mittlerweile hier:

https://developercommunity.visualstudio.com/t/Visual-Studio-2022-1711-iOS-simulator-/1695537

Auch hilft das Deaktivieren des remote Simulator, sodass der iOS Simulator am MacBook geöffnet wird.

30.04.2022 - 12:31 Uhr

Hallo zusammen,

ich habe auf meinem Windows-PC Visual Studio 2022 Preview (aktuelle Version) installiert.
Auf meinem aktuellem M1 Mac Book Pro ist die aktuelle Version von XCode 13 und Visual Studio for Mac installiert.

Laut den Anleitungen habe ich Remote-Login am Mac aktiviert.
Das Visual Studio 2022 habe ich erfolgreich mit dem Mac verbunden.

Möchte ich nun den iOS Simulatur starten bleibt er bei "Eine Verbindung mit dem Mac wird hergestellt ..." hängen.

In den Logfiles des Simulators habe ich nur folgenden Eintrag:

Using SSH private key
Warning: Error during connecting
Renci.SshNet.Common.SshPassPhraseNullOrEmptyException: Private key is encrypted but passphrase is empty.
bei Renci.SshNet.PrivateKeyFile.Open(Stream privateKey, String passPhrase)
bei Renci.SshNet.PrivateKeyFile..ctor(String fileName, String passPhrase)
bei Xamarin.Simulator.Core.Protocol.SshNetworkClientConnection.ConnectSsh(Target target)
bei Xamarin.Simulator.Core.Protocol.SshNetworkClientConnection.ConnectAsync(Target target, MessageTypes messageTypes)
bei Xamarin.Simulator.Core.Protocol.SimulatorClient.ConnectAsync()
bei Xamarin.Simulator.Windows.App.<ConnectAsync>d__16.MoveNext()

Ich habe dazu im Internet zur die Lösung gefunden, die "id_rsa" Dateien unter AppData\Local\Xamarin\MonoTouch zu löschen.
Leider brachte das keine Lösung für das Problem.

Hat jemand von euch noch eine Idee?

Vielen Dank!

24.04.2022 - 13:45 Uhr

Hallo,

ich habe die Lösung nun noch gefunden. Es lag an den Telerik Controls und der Custom non-client Area von Telerik RibbonWindow.

Weitere Informationen: Link

Hatte also tatsächlich nichts mit dem Speichern und Laden der Einstellungen zu tun.

Vielen Dank!

21.04.2022 - 20:41 Uhr

Dann liegt das Problem woanders - ich bekomm teilweise negative Werte oder Werte mit 254 etc.
Da der Code aber schon mal funktioniert hat, bin ich von einer Änderung ausgegangen.

Vielen Dank trotzdem!

21.04.2022 - 18:41 Uhr

@TH69
Ich weiß, der Thread ist ewig alt - aber heutzutage mit Skalierung etc. scheint das nicht mehr wirklich zu funktionieren.

Im Detail geht es mir darum, die Position und die Größe in der Datenbank speichern zu können.

Gibt es dazu neue Best Practices?

Viele Grüße
Campy

20.02.2022 - 22:16 Uhr

Hallo Abt,

vielen Dank für die Ausführung! Ich wollte sicher gehen, dass ich nichts übersehe.
Da das originale Repo keine Verweise zu Telerik enthält, belasse ich es bei meiner Kopie.

Grüße
Matthias

20.02.2022 - 20:21 Uhr

Hallo zusammen,

ich habe ein öffentliches Projekt auf GitHub geforked und darin Anpassungen vorgenommen.
Die Anpassungen beziehen sich auf Telerik Controls, welche ja nicht für jeden verfügbar sind da diese Geld kosten.

Somit ist es ja wenig sinnvoll, einen PR zu erstellen.

Wie geht ihr bei so etwas vor? Soll ich den Repo-Inhaber fragen ob er einen Branch startet oder es einfach bei mir public lassen?

Vielen Dank für euren Input.

Grüße
Matthias

18.11.2021 - 17:36 Uhr

Ja richtig 🙂
Hab jetzt per Zufall gefilterte Projektdateien gefunden

filtered solutions on docs.microsoft.com

Edit: ok das interessiert den restore auch nicht sorry

18.11.2021 - 13:54 Uhr

Hallo zusammen,

wir haben eine Solution mit ca. 20 Projekten.
Bei builds kann man ja spezifische Projekte mit Konfigurationen aus- oder einbeziehen.

Gibt es sowas auch für dotnet restore?

Vielen Dank im Voraus!

23.09.2021 - 08:57 Uhr

Hallo,

hast du es mal mit dem Sample von GitHub probiert?

GitHub - paypal/Checkout-NET-SDK: .NET SDK for Checkout RESTful APIs

Viele Grüße!

21.09.2021 - 10:28 Uhr

Hallo zusammen,

für ToolTips werden in einem unserer Projekte IValueConverter verwendet um die Daten abzurufen.
(Ich weiß jetzt nicht ob das best-practice ist aber Telerik hat das wohl so in deren Dokumentation aufgeführt)

Da ich keine async Implementation von IValueConverter gefunden habe, hat jemand von euch einen funktionierenden Ansatz wie ich
im normalen IValueConverter async Methoden aufrufe?

Über ein kurzes Beispiel würde ich mich freuen. Vielen Dank!

07.09.2021 - 13:20 Uhr

Hallo zusammen,

kennt jemand eine getestete und async Implementierung von ICommand?
Zusätzlich soll das canExecute observed sein da wir Bedingungen wie IList.Count() > 0 darin verwenden.

Mein Problem bei allen Implementierungen ist, dass canExecute nicht dauerhaft aufgerufen wird sondern nur einmalig während der Initialisierung.

Bei meiner vorhandenen Implementierung von ICommand (RelayCommand) funktioniert es problemlos.

Vielen Dank!

09.08.2021 - 17:19 Uhr

Mhh.. macht das sinn? Muss ich überlegen...

Wahrscheinlich nur in seltenen Fällen - ich hab hier mein Passwort gespeichert und weiß es gerade nicht.
Wollte es ändern und im PasswordManager eintragen und 2FA aktivieren.

Jetzt müsst ich mich ausloggen damit ich mein Kennwort ändern kann.

09.08.2021 - 16:53 Uhr

Wenn man auf folgender Seite auf "Passwort vergessen" klickt, landet man wieder im Kontrollzentrum.
Müsste mein Passwort aktualisieren

myCSharp.de - Login

Viele Grüße!
Matthias

04.08.2021 - 16:07 Uhr

Ok, dann glaube ich verstehe ich es richtig.

Ich kaufe Azure AD External Identities - 50000 MAU sind sogar umsonst und baue damit unser Authentifizierungssystem auf.
Hier kann ich dann auch externe Provider hinzufügen und das Branding anpassen.

Mit den .NET Klassen kann ich dann über OIDC die Anmeldung durchführen.
Anwendungsspezifische Daten und Rechte bleiben dann in unserer jeweilige Anwendung.

Vielen Dank Abt!

04.08.2021 - 15:39 Uhr

Hallo Abt,

das mit Azure und Auth0 war auch mein Eindruck nach 2 Tagen Research.
Darf ich noch kurz Fragen, welches Azure Produkt ich verwenden soll damit ich auch mal durch die Preisliste zum Vergleich mit Auth0 stöbern kann?

Vielen Dank im Voraus!

04.08.2021 - 14:28 Uhr

Hallo zusammen,

wir haben für eine Software von uns eine zentrale WebApi die aus einer WPF Anwendung, einem Outlook AddIn (Angular) und von MobileApps aus aufgerufen wird.
Wir wollen die Authentifizierung in Zukunft ohne dem Speichern von Kennwörtern in ConfigFiles schaffen, mit MFA / 2FA absichern und Integrationen für Teams / PowerBI etc. anbieten.

Der Standard dafür ist ja OAuth2 / OpenID Connect, korrigiert mich falls ich falsche liegen sollte.

Da wir noch mehrere Anwendungen haben, und auch Kunden mehrere der Anwendungen nutzen (und dafür verschiedene Accounts haben),
wollen wir dies vereinheitlichen und eine eigene Benutzer-Registry aufbauen (bin mir nicht sicher, ob Registry der richtige Ausdruck ist).

Bis jetzt habe ich viel über zwei Produkte gelesen:

Wobei ich nach Möglichkeit eher zu Azure tendiere als dies selber aufzusetzen.
Gibt es Erfahrungen von jemanden von Euch zu den oder zu einem Produkt?

Ich habe gelesen, dass das Forum auch Azure Identities verwendet, jedoch weiß ich nicht ob dies die Benutzerverwaltung beinhaltet.

Super wäre natürlich, wenn man den LoginDialog unserem CI anpassen könnte und auch externe Provider aktivieren kann (geht bei KeyCloak).

Vielen Dank im Voraus für die Mühe!

27.06.2021 - 14:12 Uhr

Das bei den Artikeln war eher auf Duplikate bezogen.
Wenn der selbe Artikel nur mit unterschiedlicher Schreibweise bzw. Abkürzungen angelegt wurde.
Duplikate können natürlich auch bei den anderen Stammdaten auftreten.

Das mit der Adressvalidierung der Deutschen Post schaue ich mir an - hört sich sehr interessant an!

26.06.2021 - 12:40 Uhr

Verwendetes Datenbanksystem: PostgreSQL

Hallo zusammen,

habt ihr Empfehlungen (kostenlos / kommerziell) für einen Data Quality Dienst?
Folgende Daten sollten geprüft / angereicht werden:

  • Adressen (Kunden, Lieferanten, Personen, etc.)
  • Artikel usw.

Super wäre es wenn die Integration über eine Web Api möglich ware.

Vielen Dank im Voraus!

21.04.2021 - 16:55 Uhr

Hallo,

schau dir doch mal AdvancedInstaller an.

24.03.2021 - 12:09 Uhr

Ich mache das auch immer so mit SignalR, entweder nur ID in und dann GET oder wie FZelle bereits gesagt hat einen Payload mitschicken.
Performancetechnisch funktioniert das bei uns auch mit 100en verbundenen Clients super - auch wenns da nicht 100e Einträge sind.

22.03.2021 - 19:52 Uhr

Danke Abt, ich konnte das Projekt auch erfolgreich und ohne Probleme unter WSL debuggen.
Da es auch dort ohne Probleme lief, haben wir uns weiter auf die Suche gemacht =>

Es lag wohl am Zusammenspiel von Docker Port-Mappings des Relay Containers und der OpnSense Firewall die eingesetzt wird.
Eigentlich befinden sich die SMTP-Container und der Relay Container im gleichen Netzwerk - durch das PortMapping hat das Docker anscheinend anders geroutet und so lag die OpnSense dazwischen. Komisch und fragwürdig bleibt nur, wieso dies erst beim überschreiten der MTU Size geblockt hat.

18.03.2021 - 12:37 Uhr

Campy, naja; die Fehlermeldung zeigt einen Socket-Fehler beim Ressounrcezugriff.
Wenn Du keine Attachments verlinkst, wird eben das Zeug auch nicht ausgeführt; ergo ist der Bug wohl egal, wenn Du keine Attachments hast.

Ja das stimmt, jedoch funktioniert ein Teil (alle sind PDFs die vom gleichen Generator generiert wurden).

Kannst Du mal bisschen mehr Infos geben wie zB: wo liegen die Ressourcen? Worin unterscheiden sich Ressourcen, die funktionieren und die nicht funktionieren?
Ansonsten einfach mal MailKit Source ziehen und selbst debuggen; das is ja das schöne an Open Source.

Die E-Mails liegen in einer Datenbank (postgresql) als bytea (byte[]) und werden per WebApi Dienst abgeholt


        private byte[] _Attachment1;
        public virtual byte[] Attachment1
        {
            get { return _Attachment1; }
            set { _Attachment1 = value; NotifyPropertyChanged("Attachment1"); }
        }

So wird es an Mailkit übergeben:


 var body = new TextPart("plain")
                {
                    Text = email.Body
                };

                var multipart = new Multipart("mixed");
                multipart.Add(body);
                
                if (email.Attachment1 != null)
                {
                    var attachment1 = new MimePart("application", "pdf")
                    {
                        Content = new MimeContent(new MemoryStream(email.Attachment1), ContentEncoding.Default),
                        ContentDisposition = new ContentDisposition(ContentDisposition.Attachment),
                        ContentTransferEncoding = ContentEncoding.Base64,
                        FileName = email.Attachment1Name
                    };
                    multipart.Add(attachment1);
                }

                // now set the multipart/mixed as the message body
                message.Body = multipart;

Hast du einen Tipp wie ich es am besten Debuggen könnte, da der Fehler nur im Docker Container besteht obwohl alle Rahmenparameter sonst die Gleichen sind.
Führe ich die Anwendung bei mir unter Windows aus funktioniert es sofort problemlos..

Danke im Voraus!

18.03.2021 - 11:53 Uhr

Der Autor der Library vermutet "probably a .NET Core runtime bug on Linux". Wenn das tatäschlich so ist, dann bringen dir leider auch andere Libraries nichts, sofern diese auf der gleichen Basis aufsetzen.

Was halt komisch ist und bleibt, das Problem besteht überhaupt nicht, wenn keine Anhänge angehängt wurden, und auch nur bei einem Teil von Anhängen..

18.03.2021 - 09:43 Uhr

Ja da hast du Recht - ich habs sogar schon mit System.Net.Mail probiert gehabt (einfach mal einen Schritt zurück) aber auch da kam der gleiche Fehler 😠

18.03.2021 - 09:13 Uhr

Habs nun mit einem aktuellen Ubuntu getestet - funktioniert ebenso nicht.

Fehlermeldung:
System.IO.IOException: Connection timed out
---> System.Net.Sockets.SocketException (110): Connection timed out
at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
at MailKit.Net.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 count)
--- End of inner exception stack trace ---
at MailKit.Net.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 count)
at MailKit.Net.Smtp.SmtpStream.ReadAheadAsync(Boolean doAsync, CancellationToken cancellationToken)
at MailKit.Net.Smtp.SmtpStream.ReadResponseAsync(Boolean doAsync, CancellationToken cancellationToken)
at MailKit.Net.Smtp.SmtpStream.ReadResponse(CancellationToken cancellationToken)
at MailKit.Net.Smtp.SmtpClient.DataAsync(FormatOptions options, MimeMessage message, Int64 size, Boolean doAsync, CancellationToken cancellationToken, ITransferProgress progress)
at MailKit.Net.Smtp.SmtpClient.SendAsync(FormatOptions options, MimeMessage message, MailboxAddress sender, IList`1 recipients, Boolean doAsync, CancellationToken cancellationToken, ITransferProgress progress)
at MailKit.Net.Smtp.SmtpClient.Send(FormatOptions options, MimeMessage message, CancellationToken cancellationToken, ITransferProgress progress)

Der Logoutput vom Postfix Relay sieht so aus:

Fehlermeldung:
Mar 18 08:21:00 postfix/smtpd[814]: connect from unknown[172.16.3.4]
Mar 18 08:21:00 postfix/smtpd[814]: B76D31A0A3F: client=unknown[172.16.3.4]
Mar 18 08:21:00 postfix/cleanup[815]: B76D31A0A3F: message-id=<ZH2CU9WQ8DU4.1MGZG2DZJZLO1@demodaten>
Mar 18 08:23:00 postfix/smtpd[630]: timeout after DATA (65713 bytes) from unknown[172.16.3.4]
Mar 18 08:23:00 postfix/smtpd[630]: disconnect from unknown[172.16.3.4] ehlo=1 mail=1 rcpt=1 data=0/1 commands=3/4

18.03.2021 - 07:41 Uhr

Hallo zusammen,

ich habe folgenden Code der in einem Docker Container (mcr.microsoft.com/dotnet/runtime:5.0-alpine3.12-amd64) zum Versenden von E-Mails ausgeführt wird:
(Ich weiß, der Code ist noch nicht optimal aber habe ihn in ein Testprojekt kopiert.


var message = new MimeMessage();
                message.From.Add(new MailboxAddress(email.SenderName.Length > 0 ? email.SenderName : Parameters["Sendername"],
                    email.SenderEmail.Length > 0 ? email.SenderEmail : Parameters["Sender"]));

                var recipients = new List<string>();
                var ccRecipients = new List<string>();
                var bccRecipients = new List<string>();

                if (!string.IsNullOrEmpty(email.Recipients))
                    recipients = new List<string>(email.Recipients.Split(";".ToCharArray()));

                if (!string.IsNullOrEmpty(email.RecipientsCC))
                    ccRecipients = new List<string>(email.RecipientsCC.Split(";".ToCharArray()));

                if (!string.IsNullOrEmpty(email.RecipientsBCC))
                    bccRecipients = new List<string>(email.RecipientsBCC.Split(";".ToCharArray()));

                if (bccRecipients != null)
                {
                    foreach (string bccRecipient in bccRecipients)
                        if (!string.IsNullOrEmpty(bccRecipient))
                            message.Bcc.Add(MailboxAddress.Parse(bccRecipient));
                }

                if (ccRecipients != null)
                {
                    foreach (string ccRecipient in ccRecipients)
                        if (!string.IsNullOrEmpty(ccRecipient))
                            message.Cc.Add(MailboxAddress.Parse(ccRecipient));
                }

                if (recipients != null)
                {
                    foreach (string Recipient in recipients)
                        if (!string.IsNullOrEmpty(Recipient))
                            message.Cc.Add(MailboxAddress.Parse(Recipient));
                }

                message.Subject = email.Subject;

                var body = new TextPart("plain")
                {
                    Text = email.Body
                };

                var multipart = new Multipart("mixed");
                multipart.Add(body);
                
                if (email.Attachment1 != null)
                {
                    var attachment1 = new MimePart("application", "pdf")
                    {
                        Content = new MimeContent(new MemoryStream(email.Attachment1), ContentEncoding.Default),
                        ContentDisposition = new ContentDisposition(ContentDisposition.Attachment),
                        ContentTransferEncoding = ContentEncoding.Base64,
                        FileName = email.Attachment1Name
                    };
                    multipart.Add(attachment1);
                }

                // now set the multipart/mixed as the message body
                message.Body = multipart;

                try
                {
                    using (var client = new SmtpClient())
                    {
                        client.Connect(server, 25, false);

                        // Note: only needed if the SMTP server requires authentication
                        if (!string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password))
                            client.Authenticate(username, password);

                        client.Send(message);
                        client.Disconnect(true);
                    }

                    _logger.LogDebug("Die E-Mail {mailid} wurde erfolgreich versendet", email.Id);
                    email.Success = true;
                }
                catch(Exception ex)
                {
                    _logger.LogError(ex, "Fehler beim Versenden der E-Mail {mailid}", email.Id);
                }
                finally
                {
                    email.RetryCount = email.RetryCount + 1;
                    _logger.LogDebug("Neuer RetryCount für E-Mail {maild} beträgt {retrycount}", email.Id, email.RetryCount);
                    email.LastTry = DateTime.Now;

                    if (emailProxy.Put(email))
                        _logger.LogDebug("Die E-Mail wurde erfolgreich aktualisiert");
                    else
                        _logger.LogError("Fehler beim Speichern der Änderungen der E-Mail");
                }

Das ganze funktioniert nun im Docker Container, solange Anhang1 nicht zwei Bilder enthält (Dateigröße gute 50kb)..
Starte ich die Anwendung unter Windows, gleicher SMTP Server und gleiche Datenbank, funktioniert es sofort.

Hat jemand eine Idee? Sollte ich mal ein Ubuntu Image probieren?

Vielen Dank!

11.02.2021 - 08:38 Uhr

Abt du hast natürlich Recht.
Es gibt noch die GitTools GitVersion mit GitTools.MSBuild Paket da funktioniert theoretisch die Versionierung auch lokal.

Wenn gewünscht kann ich davon meine Konfiguration mal posten?

Grüße
Matthias

10.02.2021 - 21:45 Uhr

Hallo zusammen,

bis jetzt haben wir GitVersionTask zur Versionierung unserer Anwendungen mit Git Tags verwendet.
Dieses ist jedoch nun deprecated.

Habt ihr andere Ansätze zur Versionierung der Anwendung und auch der Assembly-Versions mit Git Tags?

Vielen Dank im Voraus!

26.01.2021 - 15:25 Uhr

Hallo Abt,

auch bei uns ist das "gewachsen" - jetzt weiß ich ja, dass wir das besser machen können.
Kann man ein Environment File auch so anfügen ohne Docker?

25.01.2021 - 17:21 Uhr

Hallo Abt,

wenn man es liest klingts natürlich logisch, danke!

Ich weiß, jedoch sind für Container teilweise Passwörter für Umgebungsvariablen drin.
Macht natürlich keinen Sinn diese mit einzuchecken 😉 und bevor es jemand mal manuell vergisst ...

Grüße
Matthias

25.01.2021 - 16:14 Uhr

Hallo zusammen,

ich schaffe es nicht, in meiner Solution alle launchSettings.json dateien zu excluden.
Mit "**/launchSettings.json" hab ich es schon versucht - hat jemand eine Idee?

Vielen Dank!

23.10.2019 - 19:17 Uhr

Hallo zusammen,

ich habe eine gemischte Solution mit .net Standard shared libraries und einer .net Core Server-Anwendung + .net Framework WPF Client.

Beim build lokal in VS 2019 funktioniert alles problemlos - wenn das ganze auf dem Server kompiliert werden soll fehler immer Pakete etc..

Gibt es etwas spezielles für diesen Fall zu beachten? Muss ich nuget restore und dotnet restore ausführen?

Ich hoffe mir kann jemand weiter helfen. Vielen Dank!

18.03.2019 - 11:24 Uhr

So ich habe nun (so wie es auf den ersten Blick aussieht) mein Problem lösen können:

Meine Controlelr befinden sich zusammen mit der Startup.cs in einer anderen Assembly.
Unter Windows funktionierte folgender Code:


services.AddMvc();

unter Linux muss man den Code folgendermaßen erweitern damit die Controller der anderen Assembly aufgerufen werden:


services.AddMvc().AddApplicationPart(typeof(ClientsController).Assembly);

15.03.2019 - 11:21 Uhr

Hallo zusammen,

ich habe eine .net Core 2.2 Console Anwendung in einem Alpine Docker Container laufen.
Bei mir lokal funktioniert die Anwendung einwandfrei, wird diese allerdings im Container ausgeführt, so werden alle Requests mit Status 200 und content-lenght 0 beantwortet.
Die Requests stehen sogar in den Container Logs (Kestrel).

Hat jemand schon einmal dieses Problem gehabt oder eine Lösung dafür?

Vielen Dank im Voraus!

EDIT: Hab es entsprechend dem DockerFile auch mal auf einem Ubuntu mit installiertem .net Core compiliert - selbes Ergebnis. Habe ich einen Fehler im Build-Prozess?:

#FROM mcr.microsoft.com/dotnet/core/runtime:2.2-alpine as base
FROM mcr.microsoft.com/dotnet/core/sdk:2.2-alpine as base
WORKDIR /app
EXPOSE 11007

FROM mcr.microsoft.com/dotnet/core/sdk:2.2-alpine as builder

COPY . /app
WORKDIR /app/Common
RUN ["dotnet", "restore"]

WORKDIR /app/DataAccess
RUN ["dotnet", "restore"]

WORKDIR /app/ERPSystem
RUN ["dotnet", "restore"]

WORKDIR /app/GlobalLibrary
RUN ["dotnet", "restore"]

WORKDIR /app/Hoster
RUN ["dotnet", "restore"]

WORKDIR /app/Model
RUN ["dotnet", "restore"]

WORKDIR /app/Service
RUN ["dotnet", "restore"]

WORKDIR /app/Hoster
#RUN ["dotnet", "build"]
RUN dotnet build -c Debug -o /result

FROM builder AS publish
RUN dotnet publish -c Debug -o /result

FROM base AS final
COPY ["settings.json", "/usr/share"]
WORKDIR /app
COPY --from=publish /result .

ENTRYPOINT ["dotnet", "Hoster.dll"]

EDIT:

info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[0]


      User profile is available. Using '/root/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest.


info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[58]


      Creating key {58e5ff23-4d49-4a39-8e67-118d1bcdb07c} with creation date 2019-03-15 10:27:43Z, activation date 2019-03-15 10:27:43Z, and expiration date 2019-06-13 10:27:43Z.


warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[35]


      No XML encryptor configured. Key {58e5ff23-4d49-4a39-8e67-118d1bcdb07c} may be persisted to storage in unencrypted form.


info: Microsoft.AspNetCore.DataProtection.Repositories.FileSystemXmlRepository[39]


      Writing data to file '/root/.aspnet/DataProtection-Keys/key-58e5ff23-4d49-4a39-8e67-118d1bcdb07c.xml'.


warn: Microsoft.AspNetCore.Server.Kestrel[0]


      Overriding address(es) 'http://+:80'. Binding to endpoints defined in UseKestrel() instead.


Hosting environment: Production


Content root path: /app


Now listening on: http://0.0.0.0:11007


Application started. Press Ctrl+C to shut down.


info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]


      Request starting HTTP/1.0 GET http://sdk.service.consul:11007/api/clients  


info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]


      Request finished in 278.3978ms 200 


info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]


      Request starting HTTP/1.1 GET http://localhost:11007/api/clients  


info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]


      Request finished in 0.6902ms 200 


info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]


      Request starting HTTP/1.1 GET http://172.16.3.0:11007/api/clients  


info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]


      Request finished in 0.6707ms 200 


info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]


      Request starting HTTP/1.1 GET http://172.16.3.0:11007/favicon.ico  


info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]


      Request finished in 0.1266ms 200 


info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]


      Request starting HTTP/1.1 GET http://172.16.3.0:11007/api/clients  


info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]


      Request finished in 0.225ms 200 


info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]


      Request starting HTTP/1.1 GET http://172.16.3.0:11007/favicon.ico  


info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]


      Request finished in 0.3618ms 200 
17.12.2018 - 17:33 Uhr

Hallo zusammen,

kennt jemand von Euch etwas ähnliches wie adminlte nur eben für Angular mit den Kendo UI controls?

Das würde halt einiges an Aufwand sparen - darf auch etwas kosten.

Vielen Dank!

01.08.2018 - 16:22 Uhr

Hallo zusammen,

ich hatte das denke ich etwas unverständlich geschrieben - wir wollen selbstverständlich die vorhandene REST-API für den Sync verwenden.
Wie du sagtest wäre alles andere ein grober Fehler noch dazu mit der Datenbank.

Zum Zwischenspeichern der Daten dachten wir an WebStorage.

Alles klar - dachte schon, dass es da kein fertiges Konzept gibt dann werden wir das auch selbst implementieren.

Vielen Dank!

31.07.2018 - 23:12 Uhr

Ok Abt, darf ich fragen welche DBs / sync mechanisem du in Verwendung hattest oder empfehlen würdest?

Mir ist klar, dass das immer sehr stark von der Logik abhängig ist aber in der sync Schicht gibt es doch bestimmt fertige Frameworks?

31.07.2018 - 15:17 Uhr

Hallo zusammen,

wir haben vor Jahren eine Anwendung mit ASP.NET WebApi als Dienst und einer WPF Clientanwendung entwickelt.
Nun haben wir alle Abhängigkeiten und Technologien auf den aktuellen Stand gebracht.
Die weitere Planung sieht die Erstellung einer App auf Angular Basis mit Offline-Sync vor.

Nun zu meiner Frage:
Hat jemand von Euch schon eine größere Business-Anwendung Offline-fähig programmiert?
Gibt es bereits Technologien zum mergen auf unserer vorhandenen Basis?