Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von schuppsl
Thema: [gelöst] Csc Fehler nach Nuget Updates
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Zitat von Abt
... dass es nie eine gute Idee ist blind NuGet Updates durchzuführen ;-)

Das auch :)

Und das hier war bei mir die Lösung:
Visual Studio 2015 Build errors - The “Csc” task could not be initialized with its input parameters

Thema: [gelöst] Csc Fehler nach Nuget Updates
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hellöle zusammen.

In einem .NET 4.8 Asp.Net Projekt habe ich per Nuget Paket Manager sämtliche Updates gemacht.
Scheint alles geklappt zu haben...oder doch nicht?

Seit dem kommen jedenfalls beim Neu erstellen folgende Fehler:

Fehler

Fehler Die "Csc"-Aufgabe konnte nicht mit ihren Eingabeparametern initialisiert werden. KnollSvr C:\PFAD\...\packages\Microsoft.Net.Compilers.3.4.0\tools\Microsoft.CSharp.Core.targets 59

und
Fehler

Fehler Der "AnalyzerConfigFiles"-Parameter wird von der "Csc"-Aufgabe nicht unterstützt. Vergewissern Sie sich, dass der Parameter in der Aufgabe vorhanden ist und es sich um eine festlegbare öffentliche Instanzeigenschaft handelt. C:\...gleicherPfad\\Microsoft.CSharp.Core.targets 64

Was kann das bedeuten?

Thema: [gelöst] VS2019: Symbole werden nicht geladen
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Es war die Option "Nur eigener Code aktivieren" aktiviert.

MS: nur eigenen Code aktivieren

Thema: [gelöst] VS2019: Symbole werden nicht geladen
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo zusammen,

ich habe Projekt A, welches eine DLL bereitstellt und Projekt B, welches eine .NET Windows Anwendung ist.
Projekt B verweist auf A.dll und implementiert Funktionen von A.

Diese konnte ich bisher immer prima debuggen.
D.h. mit F11 springe ich in die A.Funktion() und schaue mal so was da so abgeht.

Seit kurzem geht das nicht mehr, da offensichtlich die Symbole für A.pdb nicht geladen wurden.
Schaue ich während dem Debuggen in das Module Fenster, sehe ich, dass das Laden der Symbole übersprungen wurde.

Unter Erweiterungen-...-Debuggen habe ich den Pfad für Projekt A angegeben.
Lade ich sie manuell, dann werden sie geladen, kann aber trotzdem nicht in die Funktionen springen.

Was mache ich hier denn falsch?

vielen Dank

Thema: Druckertreiber & Anzahl der verbleibenden Blätter auslesen mit .NET Core 3.0
Am im Forum: Rund um die Programmierung

Hallo liebe Community,

von Druckertreibern habe ich bisher keine Ahnung.

Trotzdem möchte ich vom Thermodrucker DNP DS620 einige Daten auslesen.
Das ist ein Thermosublimationsdrucker bei dem im Druckertreiber genau angezeigt wird, wieviele restliche Ausdrucke noch vorhanden sind.
Diese Info möchte ich mit einem Progrämmchen auslesen.

Bestenfalls geht das mit .NET Core 3.0, damit das zumindest auch auf OSX läuft.

Da ich, wie gesagt, keine Ahnung habe, wollte ich im Voraus die Profis an der Stelle fragen:

Ist das generell möglich?
Muss man dafür nach einem speziellen SDK für den Drucker schauen?
Gibt es spezielle Klassen in Core 3.0 dafür?



Vielen Dank im Voraus.

Thema: ASP.NET Core 3.0 WebApi -funktioniert im Postman aber jQuery bringt CORS Fehler
Am im Forum: Web-Technologien

Wie immer sehr fundierte und aufschlußreiche Antwort vom Abt.
Herzlichen Dank!

Thema: ASP.NET Core 3.0 WebApi -funktioniert im Postman aber jQuery bringt CORS Fehler
Am im Forum: Web-Technologien

Ja, das was noch vor der Umstellung. Inzwischen ist das Projekt auf https, auch die ajax Aufrufe.
@Abt:
Das mit den DLL's habe ich nun im Griff (anderen Post), aber das CORS ein reines Browserthema ist, wusste ich tatsächlich nicht.
Trotzdem kann ich auf dem Server CORS aktivieren, was dann Einfluss hat...muss mich doch mal noch genauer belesen...

Zitat aus dem Wikipedia Artikel:

Zitat
Ein Beispiel: Eine HTML-Seite wird von einem Server über die Domain http://www.domain-a.de bereitgestellt. Die Seite enthält ein Script, welches eine Ressource (zum Beispiel ein Bild) nachlädt, dessen URL auf einen anderen Server verweist, bspw. http://www.domain-b.de/image1.jpg. Somit handelt es sich um einen Cross-Origin-Request.[2]

Wenn der Webserver hinter der zweiten Domain kein CORS unterstützt, dann verbietet er den Zugriff auf die Ressource und der Client kann darauf nicht zugreifen.

Vielen herzlichen Dank an alle.

Thema: ASP.NET Core 3.0 WebApi -funktioniert im Postman aber jQuery bringt CORS Fehler
Am im Forum: Web-Technologien

Hi,
die Doku hatte ich schon fast komplett gelesen.
Hatte vorher aber nichts genützt.

Auf https ist bereits umgestellt!


Vielen Dank.

Thema: ASP.NET Core 3.0 WebApi -funktioniert im Postman aber jQuery bringt CORS Fehler
Am im Forum: Web-Technologien

Es geht nun, ich schreibe später die Lösung hier rein.


Also eigentlich habe ich keine Ahnung, was das Problem war.
Ich vermute aber, dass es irgendwas mit https zu tun hatte, denn oben sieht man, dass immer auf https:// zugegriffen werden will.

Zitat
...from origin 'https://localhost:44315' ...

Ich habe dann den WebService komplett neu erstellt, bewusst ohne https-Unterstützung.

Beim lokalen Test bin ich nach dem hier vorgegangen:
Enable Cors in ASP.NET

Ohne diese Einstellungen geht es mit dem lokalen Test (IIS Express) nicht.
Auf dem Produktiv Server (IIS) interessiert es gar nicht...

Falls es interessiert, mein Test-Javascript sieht nun so aus:
 var data =
            '{ "Modul"	: "Modulname", "PersNr":"123456789","AbschlussDatum":"2014-01-01T23:28:56Z","Bemerkung":"Testeintrag"}';
                var request =
                {
                headers: { 
                'Accept': 'application/json',
                'Content-Type': 'application/json' 
                },
            "async": true,
            "type" :"POST", 
            "url":"http://meinserver:8089/api/ELearnings",    
            "data" :data
            }
         $.ajax(request)
             .done(function (ergebnis) {
                 console.log(ergebnis);
         })
             .fail(function (errMsg) {
                 console.error(errMsg); 
         })

Vielen Dank für die Hilfe.

Thema: ASP.NET Core 3.0 WebApi -funktioniert im Postman aber jQuery bringt CORS Fehler
Am im Forum: Web-Technologien

Habe mal einen anderen Aufruf versucht, mit GET:


const uri = 'http://localhost:52373/api/SetELearnings/6';

                        fetch(uri, { mode: 'cors' })
            .then(response => response.json())
  .then(data =>console.log(data))
            .catch(error => console.error('Unable to get items.', error));

Der Response Header sieht so aus
Zitat
General:
Request URL: http://localhost:52373/api/SetELearnings/6
Request Method: GET
Status Code: 200 OK
Remote Address: [::1]:52373
Referrer Policy: no-referrer-when-downgrade

Request Headers:
Provisional headers are shown
Origin: null
User-Agent: *** User Agent

Der Aufruf vom Postman:


var data = null;

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === 4) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "http://localhost:52373/api/SetELearnings/6");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("User-Agent", "PostmanRuntime/7.18.0");
xhr.setRequestHeader("Accept", "*/*");
xhr.setRequestHeader("Cache-Control", "no-cache");
xhr.setRequestHeader("Postman-Token", "b9c8ef27-12a0-443f-9b5c-5156cd563972,039c90a0-05a9-41ea-9a23-c9f72b430835");
xhr.setRequestHeader("Host", "localhost:52373");
xhr.setRequestHeader("Accept-Encoding", "gzip, deflate");
xhr.setRequestHeader("Connection", "keep-alive");
xhr.setRequestHeader("cache-control", "no-cache");

xhr.send(data);





Der Response Header vom Postman:

Zitat
Transfer-Encoding: chunked
Content-Type: application/json: charset=utf8
Server: Microsoft-IIS/10.0
x-Powered-By: ASP.NET
Date: das aktuelle Datum

Thema: ASP.NET Core 3.0 WebApi -funktioniert im Postman aber jQuery bringt CORS Fehler
Am im Forum: Web-Technologien

Also in der Startup.cs:


 services.AddCors(options =>
            {
                options.AddPolicy("AllowAllHeaders",
                      builder =>
                      {
                          builder.AllowAnyOrigin()
                                 .AllowAnyHeader()
                                 .AllowAnyMethod();
                      });
            });
 

und

app.UseCors("AllowAllHeaders");

Das wäre dann das nächste Problem, was zu lösen wäre.
Bei der GET Anfrage kommt kein 405, aber auch die CORS Meldung.

Also erst einmal die 405er, für die ich immer noch keine Lösung gefunden habe.

Thema: ASP.NET Core 3.0 WebApi -funktioniert im Postman aber jQuery bringt CORS Fehler
Am im Forum: Web-Technologien

Hallo zusammen.

Ich habe einen einfachen Core3.0 WebService erstellt, der einen POST entgegennimmt und ein paar Daten in eine Datenbank schreibt.

Mit Postman getestet, funktioniert es prima.
Soweit schon mal gut.

Aber das Ganze soll dann in einer Stinknormalen Webanwendung (Html+JQuery) ablaufen.
Also eine einfache HTML Webseite erstellt und das bischen JavaScript Code eingebaut, anlehnend an bereits vorhandene Projektchen.

Es kommen folgende Fehlermeldungen auf der Entwicklerkonsole im Webbrowser:

Fehler
Failed to load resource: the server responded with a status of 405 (Method Not Allowed)
Login?ReturnUrl=%2F:1 Access to XMLHttpRequest at 'http://localhost:52373/api/SetELearnings' from origin 'https://localhost:44315' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Der JavaScript Code sieht so aus:

 <script>
     var request =
            {
         "method": "POST",
         "async": true,
         "crossDomain": true,
        "processData": false,
                "headers": {
                    "Content-Type": "application/json", 
                },
                "url":"http://localhost:52373/api/SetELearnings",
                "data": { "Modul"	: "Modulname","PersNr":"1234567","AbschlussDatum":"2014-01-01T23:28:56Z","Bemerkung":"Testeintrag" }
            }

$.ajax(request).done(function (response) {
  console.log(response);
});

    </script>


Der Controller des Webservice so:


 [Route("api/[controller]")]
    [ApiController]
    public class SetELearningsController : ControllerBase
    {
        private readonly CaptivateContext _context;

        public SetELearningsController(CaptivateContext context)
        {
            _context = context;
        }

........

 [HttpPost]
        public async Task<ActionResult<ELearning>> PostELearning(ELearning eLearning)
        {
            _context.ELearning.Add(eLearning);
            await _context.SaveChangesAsync();

            return CreatedAtAction("GetELearning", new { id = eLearning.Id }, eLearning);
        }

Ich habe schon mehrere Webservices im Einsatz, aber keiner mit Core3.0.
Also nehme ich an, dass es irgendwie daran liegen muss?

Dasselbe übrigens, wenn ich das auf dem Server im IIS veröffentliche, daher der Test erst einmal lokal.
Mit Postman geht es einwandfrei, also nehme ich an, dass es grundsätzlich funktioniert.
Selbst den Javascript Code vom Postman habe ich schon kopiert und versucht: dasselbe.

Was mache ich hier falsch?

Thema: WindowsForms Programm sucht nach System.Interactive.Async4.0.0.0 statt 3.2.0.0
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hello,

mal wieder ein DLL Problem - das möchte ich jetzt endgültig mal checken und in den Griff bekommen.

Also ich habe eine Windows Forms (.net 472) Anwendung, welche Funktionen von externen DLLs aufruft.
Extern bedeutet in diesem Falle, selbst programmiert.

Die externe DLL implementiert weitere, eigene DLL's. (Models etc)
Aus der externen DLL habe ich nun ein nuget Paket gemacht, welches dann in die Windows Anwendung von der lokalen nuget Source installiert wird.

Aktuell geht es um System.Interactive.Async

Diese ist abhängig vom EntityframeworkCore 2.2.4 und wird in der externen DLL mit diesem installiert.

Also externe DLL:
EntityFrameWorkCore2.2.4
System.Interactive.Async3.2.0

Wenn ich die externe DLL in meine Windows Forms Anwendung installiere, muss ich ja die beiden DLLs ebenfalls mit derselben Versionsnummer installieren.
Gesagt, getan.

Also externe DLL:
EntityFrameWorkCore2.2.4
System.Interactive.Async3.2.0

Forms Anwendung:
EntityFrameWorkCore2.2.4
System.Interactive.Async3.2.0

Auch in allen andere abhängigen DLLs:

EntityFrameWorkCore2.2.4
System.Interactive.Async3.2.0


Starte ich nun die Forms Anwendung und rufe die externe Funktion auf, dann:

Fehler
{"Die Datei oder Assembly \"System.Interactive.Async, Version=4.0.0.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263\" oder eine Abhängigkeit davon wurde nicht gefunden. Die gefundene Manifestdefinition der Assembly stimmt nicht mit dem Assemblyverweis überein. (Ausnahme von HRESULT: 0x80131040)":"System.Interactive.Async, Version=4.0.0.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263"}

Ein Klassiker!

Also irgendwo wird nach der Version 4.0.0.0 gesucht und nicht gefunden.

Ich möchte die Ursache herausfinden.

Die steht in der InnerException:
Fehler
=== Zustandsinformationen vor Bindung ===
LOG: DisplayName = System.Interactive.Async, Version=3.2.0.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263
(Fully-specified)
LOG: Appbase = file:///C:/Users/[user]/Documents/[Pfad]/Aufgabe1/bin/Debug/
LOG: Ursprünglicher PrivatePath = NULL
Aufruf von Assembly : Microsoft.EntityFrameworkCore, Version=2.2.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60.
===
LOG: Diese Bindung startet im default-Load-Kontext.
LOG: Die Anwendungskonfigurationsdatei wird verwendet: C:\Users\[user]\D[Pfad\]Aufgabe1\bin\Debug\Nasslack_Neu_Aufgabe_1.exe.Config
LOG: Die Hostkonfigurationsdatei wird verwendet:
LOG: Die Computerkonfigurationsdatei von C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config wird verwendet.
LOG: In der Anwendungskonfigurationsdatei wurde eine Umleitung gefunden. 3.2.0.0 wird nach 4.0.0.0 umgeleitet.
LOG: Verweis nach der Richtlinie: System.Interactive.Async, Version=4.0.0.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263
LOG: Die gleiche Bindung ist bereits aufgetreten und hat den Fehler hr = 0x80131040 verursacht.

Also, das ist doch die Lösung!
Prima.

Schaue ich in die App.config rein, dann steht da folgendes:
Zitat
<dependentAssembly>
<assemblyIdentity name="System.Interactive.Async" publicKeyToken="94bc3704cddfc263" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>

Autsch.


Wahrscheinlich wurde diese Version irgendwann mal zum Projekt hinzugefügt.
Ich war ja der Meinung, dass in der Anwendungskonfigurationsdatei die Version angepasst wird, wenn ich eine niedrige Version installiere (die alte vorher deinstalliere) -vor allem wenn ich die als Abhängigkeit in einem eigenen (oder fremden) nuget Paket angebe - und zwar ganz genau in der Version 3.2.0.0 und nicht ≥ 3.2.0.0.

Aber jetzt kommt meine Frage:
Warum ist das nicht der Fall?
Ist die App.config rein mein Metier?
Ich habe das so mit Sicherheit nicht dort eingetragen....

Bitte nicht hauen.Vielen Dank.

Thema: VS2019 kopiert nicht benötigte DLL ins Ausgabeverzeichnis
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Ok also ich habe nun zumindest mal für die beiden (SAP-) DLL's ein Nuget Package gemacht und installiere diese nun in Zukunft von einer lokalen nuget source.
Funktioniert prima, danke @T-Virus für den Hinweis.

Nach und nach werde ich dann die anderen, eigenen DLL's, teilweise mit Abhängigkeiten packen.
Somit sollte es DLL-Hell nicht mehr geben.

Mal wieder herzlichen Dank an die Profis hier!

Thema: VS2019 kopiert nicht benötigte DLL ins Ausgabeverzeichnis
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Das ist wohl des Pudels Kern.
Und das ist wohl ein Grundsätzliches Problem, zumindest bei mir.

Ich habe mehrere selbst erstellte DLL#s mit Funktionen, die ich immer wieder benötige.
Hier verweise ich in den Projekten, direkt auf das Ausgabeverzeichnis der DLL-Projekte.
So muss ich bei Updates nicht immer die neu erstellten DLL's ins Projektverzeichnis kopieren.
Aber das ist wohl genauso "Banane?"
Was wäre hier die passende Vorgehensweise? (Ein Grundkurs im Programmieren ? )

Thema: VS2019 kopiert nicht benötigte DLL ins Ausgabeverzeichnis
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

@Abt:

Im Prinzip sieht es genau so aus, nur ist das Lib Verzeichnis außerhalb dieser Ordnerstruktur, da verschiedene Projekte auf dieses zugreifen.
Im Prinzip so:

Entwicklung\Lib\Sap\x32\*.dll
Entwicklung\Lib\Sap\x64\*.dll
Entwicklung\ProjektX
Entwicklung\ProjektX

So gibt es eine Stelle für die DLL's und jedes Projekt greift darauf zu.

Aber wie gesagt, ich binde weitere DLL's in die Webanwendung ein, welche diese DLL's benötigen. Deshalb werden diese auch mit eingebunden(oder?)

Thema: VS2019 kopiert nicht benötigte DLL ins Ausgabeverzeichnis
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Vielen Dank.

Ok also ich habe mit der detaillierten Ausgabe den Fehler glaub schon gefunden.
Ich importiere einige andere DLL's die ich selbst erstellt habe ins Projekt.
In diesen werden die SAP-DLL's benötigt.

Thema: VS2019 kopiert nicht benötigte DLL ins Ausgabeverzeichnis
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hey,
vielen Dank.

Es handelt sich um DLL's von SAP, die die Konnektivität zu SAP bereitstellen.
Diese liegen einfach in einem von mit erstellten Verzeichnis und werden bei Bedarf in Projekte eingebunden.
Diese hatte ich im Projekt mal involviert, aber aus den Verweisen gelöscht, da ich das in diesem Projekt nicht mehr brauche.
Weder in irgendeiner .csproj, .comfig noch sonstwo ist noch ein Verweis auf diese DLLs vorhanden.
Trotzdem muss es ja irgendwo stehen, dass VS sagt "binde diese DLL's mit ein"...

Thema: VS2019 kopiert nicht benötigte DLL ins Ausgabeverzeichnis
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallöle,

also ich zweifle ja mal wieder.
Ich habe ein ASP.NET MVC (.NET 4.7.2)Projekt in VS2019.

Mein Problem ist, dass ins Ausgabeverzeichnis lokal Debug/Release und beim Veröffentlichen zwei DLL's mitkopiert werden, die ich vor langer Zeit aus dem Verweis gelöscht habe.
Diese brauche ich nicht.

Ich habe schon alle möglichen Dateien im Projektverzeichnis durchsucht und im Gesamten Ordner in allen Dateien gesucht:
Es gibt genau Null Verweise auf diese beiden DLL's.
Im GAC sind sie auch nicht mehr (wurden gelöscht).

Trotzdem sind sie immer da.
Gibt es eine protokollierte Ausgabe des Kompliervorganges, damit ich sehen kann, woher die ungewünschten DLL's kommen?

Vielen Dank.

Thema: SignalR Server: Zugriff mit Javascript Client nur vom Entwicklungsrechner aus
Am im Forum: Web-Technologien

Nachtrag:

Die SignalR Funktionen müssen aus dem jquery.Ready() Block raus:

 $(function () {...});
Also außerhalb diesem sein.
Dann kann man auch meine o.G. Lösung weglassen.

Vor lauter Bäumen den Wald nicht gesehen.
Vielleicht hilft es ja irgendwann mal jemand.

Thema: SignalR Server: Zugriff mit Javascript Client nur vom Entwicklungsrechner aus
Am im Forum: Web-Technologien

Also ich habe mal das Clientseitige debugging eingeschalten:


  $.connection.hub.logging = true;

Darauf sehe ich im Browser den Fehler:
Fehler
SignalR: No hubs have been subscribed to. The client will not receive data from hubs. To fix, declare at least one client side function prior to connection start for each hub you wish to subscribe to.

Nach diesem Fehler kann man schon mal besser googeln und ich bin dann auf diese Lösung gestoßen:
https://stackoverflow.com/questions/16248091/fail-to-initiate-connection-in-signal-r-in-asp-net

Sprich, irgendeine Funktion vor $.connection.hub.start().done bereitstellen, dann funzt das:

stocks.client.irgendwas = function() {};

Warum weiß ich nicht, aber so geht es.

Thema: SignalR Server: Zugriff mit Javascript Client nur vom Entwicklungsrechner aus
Am im Forum: Web-Technologien

Hallo zusammen,

wieder einmal stoße ich an die Grenzen von...keine Ahnung...mir selbst wahrscheinlich.
Auf einem Windows Server 2012 läuft per Windows Dienst ein SignalR Server.

Alles soweit wunderbar.

Auf der Clientseite habe ich einen Javascript Client der gleich nach dem Verbinden eine kurze "Hello from ...Client" Nachricht schickt.
Dies ist dann in der Entwicklerkonsole im Browser sichtbar.

Aber dies nur auf meinem Entwicklungsrechner.
Von jedem anderen Rechner aus geht es nicht.

Den aktuellen Dienst habe ich einem vorhandenen Dienst nachgebaut, der seit Jahren stabil läuft.

Der Dienst soll später Daten aus einer Datenbank zum Webbrowser schicken.

Ich kann weder auf der Server- noch auf der Clientseite einen Fehler entdecken.
Aber vielleicht stimmt ja mein Javascript Client nicht?
Es handelt sich um einen SignalR Server auf .Net 4.7.

Hier der Javascript Client:


 <script src="Scripts/jquery-3.4.1.js"></script>
    <script src="lib/signalr.js/jquery.signalR-2.4.1.js"></script>


    <script type="text/javascript" src="http://custom01.mein-server.de:8084/signalr/hubs"></script>

    <script type="text/javascript">
        $(function () {

             $.connection.hub.url = 'http://custom01.mein-server.de:8084/signalr';
           

            var stocks = $.connection.myHub;

            $.connection.hub.start().done(function () {


                stocks.server.sendTestMessage("Connected - Client Front");

                 $("#status").addClass("bg-success");

            }).fail(
  function(err) {
        console.error(err.toString());
        $("#status").addClass("bg-danger");
    }
);

            stocks.client.sendMessage = function (data) {
                console.log("data: " + data);
            };

Debugge ich im Browser das Script, kann ich erkennen, dass alle Scripte gefunden werden und der Hub auch erstellt wird.
Er springt also in den .done Bereich, ohne wirklich eine Verbindung zum SignalR Server herzustellen!
Das sehe ich im Debugger auf Server Seite

Das funktioniert nicht einmal direkt auf dem Server auf dem der SignalR Server läuft, sondern ausschließlich nur auf meinem Entwicklungsrechner.
Es ist auf dem SignalR Server keine Einschränkung oder ähnliches speziell auf meinen Rechner eingestellt!

Es kommen im Browser auch keinerlei Fehler (CORS o.ä.).

Die Webseite, die aufgerufen wird und den Javascript Client erstellt, liegt auf demselben Server wie der SignalR Server:
http://custom01.mein-server.de/view/front.html

Kann hier jemand einen Fehler entdecken?
Vielen herzlichen Dank im Voraus.

Thema: SignalR Core funktioniert nicht auf Server - Lokal schon
Am im Forum: Web-Technologien

Zitat von pinki
Musst du CORS noch für den Server anders konfigurieren?

Daran habe ich auch schon gedacht, aber das ist berücksichtigt.
Das Problem ist ja, dass erst gar keine Verbindung aufgebaut wird - bei CORS ist die Meldung in der Console des Browsers eine andere - im Moment kommt HTTP400.

Eigentlich kann es nur an irgendwelche Berechtigungen liegen...

Aber dann muss ich es halt doch wieder mit OWIN machen - da laufen bereits Dienste.

Thema: SignalR Core funktioniert nicht auf Server - Lokal schon
Am im Forum: Web-Technologien

Zitat von Abt
Und Du hast auf dem WebServer auch für den IIS das WebSocket Protokoll installiert (via Add Roles and Features).
Würde jetzt fast wetten, dass nicht ;)

Doch - extra nochmals nachgesehen.

Im Windows- oder ähnlichem Log ist nichts eingetragen.
Es handelt sich um eine Konsolen App und nicht eine klassische ASP.NET Anwendung...

Thema: SignalR Core funktioniert nicht auf Server - Lokal schon
Am im Forum: Web-Technologien

Hallo zusammen.
Ich habe mal wieder was seltsames.

Ich habe eine .NET Core 2.2 Konsolenanwendung.

Diese implementiert einen Signalr Hub.

Dieser sieht so aus:


using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.IO;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.SignalR;
using System.Threading.Tasks;
using System.Collections.Generic;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http.Features;
using PulverService.Models;
using PulverService;

namespace SignalR_Server
{
   

    class SignalR
    {       

        public static void StartSignalR()
        {
            string signalRHost = "http://*:2222";
            var ConsOut = Console.Out;
            Console.SetOut(new StreamWriter(Stream.Null));
            Console.SetOut(ConsOut);

            var host = new WebHostBuilder()
                .UseKestrel()
                .UseStartup<Startup>()
                .UseUrls(signalRHost)
                .Build();


            try
            {
                host.Start();
             

            }
            catch(Exception ex)
            {
                string err = ex.Message;
                ConsoleLogger.PrintToConsole("SignalR Fehler: " + ex.Message, ConsoleColor.Red);
            }

            
            ConsoleLogger.PrintToConsole("SignalR Service erstellt auf Host: "+ signalRHost, ConsoleColor.Green);
        }
    }

    public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddCors(options => options.AddPolicy("CorsPolicy", builder =>
            {
                builder
                    .AllowAnyMethod()
                    .AllowAnyHeader().AllowCredentials().AllowAnyHeader().WithOrigins("https://localhost:44304").WithOrigins("http://localhost:18577");

            }));

            services.AddSignalR();
        }

        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
            app.UseCors("CorsPolicy");
            app.UseSignalR(route =>
            {
                route.MapHub<MyHub>("/stream");
            });

            ConsoleLogger.PrintToConsole("SignalR Hub erstellt auf Hub: stream", ConsoleColor.Green);
           

        }
    }

    public static class UserHandler
    {
        public static HashSet<string> ConnectedIds = new HashSet<string>();
    }

    public class MyHub : Hub
    {

        /// <summary>
        /// Hier werden die Auftragsdaten von der manuellen Aufgabe empfangen
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public async Task SendAuftragsData( string[] data )
        {
            //Daten in SPS schreiben
             Program.sendAuftragsData(data);

        }

        public async Task SendViewDataManFront(SignalRViewDataManList dataMan)
        {
            await Clients.All.SendAsync("ReceiveViewDataFront", dataMan.ViewList);

        }

        public async Task SendViewDataManBack(SignalRViewDataManList dataMan)
        {
            await Clients.All.SendAsync("ReceiveViewDataBack", dataMan.ViewList);

        }

        public async Task SendMessage(string user, string message)
        {

            await Clients.All.SendAsync("ReceiveMessage", user, message);
            Console.WriteLine($"User: {user} says {message}");
        }

        public Task SendMessageToCaller(string message)
        {
            return Clients.Caller.SendAsync("ReceiveMessage", message);
        }

        public Task SendMessageToGroups(string message)
        {
            List<string> groups = new List<string>() { "SignalR Users" };
            return Clients.Groups(groups).SendAsync("ReceiveMessage", message);
        }

        public override async Task OnConnectedAsync()
        {
            await Groups.AddToGroupAsync(Context.ConnectionId, "SignalR Users");
            UserHandler.ConnectedIds.Add(Context.ConnectionId);
            Console.WriteLine($"Connected user: {Context.ConnectionId}");
            await base.OnConnectedAsync();
        }

        public override async Task OnDisconnectedAsync(Exception exception)
        {
            await Groups.RemoveFromGroupAsync(Context.ConnectionId, "SignalR Users");
            UserHandler.ConnectedIds.Remove(Context.ConnectionId);
            Console.WriteLine($"Disconnected user: {Context.ConnectionId}");
            await base.OnDisconnectedAsync(exception);
        }
    }
}


Starte ich die Anwendung auf meinem Entwicklungsrechner (Windows 10), dann sieht alles super aus.
Ich kann mich mit einem JavaScript Client auf den hub verbinden.

Zum Test, ob das generell funktioniert, kann ich im Webbrowser http://localhost:2222/stream angeben.
Hier kommt dann z.B. die Meldung "Connection ID required".


Exportiere ich das Projekt lokal auf meinem Rechner, starte die Konsolenanwendung funktioniert ebenfalls alles prima.

Exportiere ich das ganze auf den Server, wo es nachher laufen soll, geht es nicht.

Die Konsonenanwendung startet, der SignalR Hub wird initialisiert und alles sieht gut aus.
Mit TCPView (Sysinternals) sehe ich, dass die Anwendung auf den Port 2222 hört.

Nur kann ich mich weder lokal noch Remote mit dem Hub verbinden.
Im Webbrowser kommt immer Fehler 400 - Bad Request.

Ich habe schon verschiedene Server, Ports und Webbrowser ausprobiert. So war ein Windows Server 2012 und ein Windows Server 2016 (Datasenter) dabei
Es scheint nur auf meinem Entwicklungsrechner zu gehen.

Auf dem 2012er laufen viele Anwendungen, unter anderem ein Dienst, der SignalR Hubs und Clients bereitstellt. Allerdings mit .NET 4.7 und eine Asp.Net Core Webanwendung.


Hat jemand eine Idee, warum das auf dem Zielrechner nicht funktionieren könnte?
Vielen Dank im Voraus!

Thema: FileNotFoundException: Microsoft.Extensions.Configuration.Abstractions, Version=2.2.0.0
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo zusammen,

mal wieder habe ich ein Problem, was mich schon Stunden gekostet hat:
Ich habe ein ASP.NET MVC/ .NET 4.7.2 Projekt.
In dieses installiere ich EntityFrameWorkCore (2.2.4)

Bisher hat das einwandfrei funktioniert, auch mit Migrations usw.
Alles kein Problem.
Doch seit gestern ist es doch ein Problem.

Ich möchte eine neue Migration anlegen in der Konsole, da ich am Datenmodell was geändert habe. Dies soll nun in die DB übertragen werden.
Diesen Vorhang habe ich schon hunderte Male gemacht, kein Problem bisher:z.B.


add-migration AddSwitch


Dann kommt der Fehler in der Manager-Konsole:
Fehler
System.IO.FileNotFoundException: Die Datei oder Assembly "Microsoft.Extensions.Configuration.Abstractions, Version=2.2.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.

Eigentlich eindeutig.

Schaue ich mal in die web.config:


 <dependentAssembly>
        <assemblyIdentity name="Microsoft.Extensions.Configuration.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.2.0.0" newVersion="2.2.0.0" />
      </dependentAssembly>


Also kein Problem.

Schaue ich in die packages.config:


<package id="Microsoft.Extensions.Configuration.Abstractions" version="2.2.0" targetFramework="net472" />

Also auch kein Problem.

Schaue ich in die Projekt.config:


<Reference Include="Microsoft.Extensions.Configuration, Version=2.2.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
      <HintPath>..\packages\Microsoft.Extensions.Configuration.2.2.0\lib\netstandard2.0\Microsoft.Extensions.Configuration.dll</HintPath>
    </Reference>

Auch soweit gut, dann schaue ich mal in den \packages Ordner:
Der Ordner
Microsoft.Extensions.Configuration.2.2.0\lib\netstandard2.0\
existiert.
Darin befindet sich die DLL mit der korrekten Versionsnummer 2.2.0.

Schaue ich ins VisualStudio 2019 Ultimate:
In den Verweisen ist bei dieser DLL ein Ausrufezeichen.
Im \bin Verzeichnis ist diese DLL auch nicht vorhanden.

D..h. es gibt irgendwo eine Einstellung, die verhindert, dass verlinkte DLLs in den \bin Order kopiert werden.
Mache ich das manuell, funktioniert es (natürlich)
Lokale Kopie ist auf true.

Woran könnte dies noch liegen?

Vielen Dank im Voraus!

Thema: SignalR Selfhosted Call geht nicht durch wegen CORS policy
Am im Forum: Web-Technologien

Alles klar, vielen Dank Euch allen!

Thema: SignalR Selfhosted Call geht nicht durch wegen CORS policy
Am im Forum: Web-Technologien

Also wenn ich es so mache, geht es:


builder
                    .AllowAnyMethod()
                    .AllowAnyHeader().AllowCredentials().WithOrigins("https://localhost:44304");

Allerdings muss ich den Port explizit mit angeben bei WithOrigins().


WithOrigins("https://localhost")
Funktioniert nicht, dann kommt die Fehlermeldung:

Fehler
Access to XMLHttpRequest at 'http://localhost:5050/stream/negotiate' from origin 'https://localhost:44304' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Thema: SignalR Selfhosted Call geht nicht durch wegen CORS policy
Am im Forum: Web-Technologien

Hallo zusammen,

mal wieder wende ich mich in letzter Verzweiflung an Euch.
Ich habe einen selfhosted signalR Server (.Net CORE 2.2, Konsole App) aufgesetzt:


using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.IO;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.SignalR;
using System.Threading.Tasks;
using System.Collections.Generic;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http.Features;

namespace SignalR_Server
{
    class SignalR
    {
        public static void StartSignalR()
        {
            var ConsOut = Console.Out;
            Console.SetOut(new StreamWriter(Stream.Null));

            var host = new WebHostBuilder()
                .UseKestrel()
                .UseStartup<Startup>()
                .UseUrls("http://localhost:5050")
                .Build();

            try
            {
                host.Start();
               

            }catch(Exception ex)
            {
                string err = ex.Message;
            }

            Console.SetOut(ConsOut);
        }
    }

    public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddCors(options => options.AddPolicy("CorsPolicy", builder =>
            {
                builder
                    .AllowAnyMethod()
                    .AllowAnyHeader().AllowAnyOrigin();
                    
            }));

            services.AddSignalR();
        }

        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
            app.UseCors("CorsPolicy");
            app.UseSignalR(route =>
            {
                route.MapHub<MyHub>("/stream");
            });

            
            
        }
    }

    public static class UserHandler
    {
        public static HashSet<string> ConnectedIds = new HashSet<string>();
    }

    public class MyHub : Hub
    {
        public async Task SendMessage(string user, string message)
        {
            await Clients.All.SendAsync("ReceiveMessage", user, message);
            Console.WriteLine($"User: {user} says {message}");
        }

        public Task SendMessageToCaller(string message)
        {
            return Clients.Caller.SendAsync("ReceiveMessage", message);
        }

        public Task SendMessageToGroups(string message)
        {
            List<string> groups = new List<string>() { "SignalR Users" };
            return Clients.Groups(groups).SendAsync("ReceiveMessage", message);
        }

        public override async Task OnConnectedAsync()
        {
            await Groups.AddToGroupAsync(Context.ConnectionId, "SignalR Users");
            UserHandler.ConnectedIds.Add(Context.ConnectionId);
            Console.WriteLine($"Connected user: {Context.ConnectionId}");
            await base.OnConnectedAsync();
        }

        public override async Task OnDisconnectedAsync(Exception exception)
        {
            await Groups.RemoveFromGroupAsync(Context.ConnectionId, "SignalR Users");
            UserHandler.ConnectedIds.Remove(Context.ConnectionId);
            Console.WriteLine($"Disconnected user: {Context.ConnectionId}");
            await base.OnDisconnectedAsync(exception);
        }
    }
}



Der Client ist ein reiner JavaScript Client:

...
  <script src="/lib/signalr/dist/browser/signalr.js"></script>
...
const connection = new signalR.HubConnectionBuilder()
    .withUrl("http://localhost:5050/stream")
    .configureLogging(signalR.LogLevel.Information)
    .build();

connection.start().catch(err => console.error(err.toString()));

Rufe ich die HTML Seite mit dem JavaScript auf, meckert der Chrome:
Fehler
Access to XMLHttpRequest at 'http://localhost:5050/stream/negotiate' from origin 'https://localhost:44304' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute.

signalr.js:2430 Error: Failed to complete negotiation with the server: Error
ConsoleLogger.log @ signalr.js:2430
(anonymous) @ signalr.js:2802
step @ signalr.js:2605
(anonymous) @ signalr.js:2586
rejected @ signalr.js:2578
Promise.then (async)
step @ signalr.js:2579
fulfilled @ signalr.js:2577
Promise.then (async)
step @ signalr.js:2579
(anonymous) @ signalr.js:2580
__awaiter @ signalr.js:2576
HttpConnection.getNegotiationResponse @ signalr.js:2773
(anonymous) @ signalr.js:2713
step @ signalr.js:2605
(anonymous) @ signalr.js:2586
step @ signalr.js:2590
(anonymous) @ signalr.js:2586
(anonymous) @ signalr.js:2580
__awaiter @ signalr.js:2576
HttpConnection.startInternal @ signalr.js:2681
HttpConnection.start @ signalr.js:2641
(anonymous) @ signalr.js:1761
step @ signalr.js:1708
(anonymous) @ signalr.js:1689
(anonymous) @ signalr.js:1683
__awaiter @ signalr.js:1679
HubConnection.start @ signalr.js:1750
(anonymous) @ site.js?v=bbSp_ES0ncqX_XK1MVLsTiU7kxXBi9bxmYSw_Kpyug8:11
signalr.js:2430 Error: Failed to start the connection: Error
ConsoleLogger.log @ signalr.js:2430
(anonymous) @ signalr.js:2763
step @ signalr.js:2605
(anonymous) @ signalr.js:2586
rejected @ signalr.js:2578
Promise.then (async)
step @ signalr.js:2579
(anonymous) @ signalr.js:2580
__awaiter @ signalr.js:2576
HttpConnection.startInternal @ signalr.js:2681
HttpConnection.start @ signalr.js:2641
(anonymous) @ signalr.js:1761
step @ signalr.js:1708
(anonymous) @ signalr.js:1689
(anonymous) @ signalr.js:1683
__awaiter @ signalr.js:1679
HubConnection.start @ signalr.js:1750
(anonymous) @ site.js?v=bbSp_ES0ncqX_XK1MVLsTiU7kxXBi9bxmYSw_Kpyug8:11
site.js?v=bbSp_ES0ncqX_XK1MVLsTiU7kxXBi9bxmYSw_Kpyug8:11 Error
(anonymous) @ site.js?v=bbSp_ES0ncqX_XK1MVLsTiU7kxXBi9bxmYSw_Kpyug8:11
Promise.catch (async)
(anonymous) @ site.js?v=bbSp_ES0ncqX_XK1MVLsTiU7kxXBi9bxmYSw_Kpyug8:11

Wie kann ich denn das lösen?

Thema: Neuinstallation: .NET Framework als Zielframework nicht auswählbar, obwohl installiert
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Au man 8o
Manchmal bin ich doch nicht zurechnungsfähig. Die letzte Installation ist wohl schon ne Weile her.
vielen Dank!