Aspnetcore: Erwägen Sie, die URLs von .NET-Assemblys so zu ändern, dass sie nicht auf .dll enden

Erstellt am 27. Feb. 2018  ·  104Kommentare  ·  Quelle: dotnet/aspnetcore

Ich wollte die Demo unter https://blazor-demo.github.io/ sehen und meine Unternehmens-Firewall blockierte MicroApp.dll , während andere DLLs erfolgreich heruntergeladen wurden. Da eine Menge Software beim Herunterladen/Übertragen von Windows-Binärdateien paranoid ist, lohnt es sich vielleicht, sie ein wenig zu verschleiern? Oder zumindest umbenennen?

Components Big Rock area-blazor blazor-wasm enhancement

Hilfreichster Kommentar

Wie wäre es mit YourAssembly.blazor ? Es könnte eine gute Möglichkeit sein, das Projekt (sehr, sehr leicht) zu fördern, wenn irgendwelche Webentwickler in den Entwicklertools nachsehen, wie die Site erstellt wurde? Oder vielleicht bin es nur ich, der manchmal entdeckt, dass eine Seite mit Vue.js oder was auch immer erstellt wurde, und denkt "oh, schön" :)

Alle 104 Kommentare

Das ist interessant - danke für den Hinweis. Wir werden versuchen, die URLs in YourAssembly_dll oder ähnliches zu ändern, ob wir dies jedoch standardmäßig tun, hängt davon ab, ob wir mehr Berichte darüber erhalten und ob wir feststellen können, dass es am Namen oder tiefer liegt Inspektion des Inhalts der Nutzlast.

@SteveSandersonMS , nur um meine 2c hier fallen zu lassen. Nicht nur Unternehmens-Firewalls leiden unter dem .dll-fobia . Einige lokale Antivirenprogramme haben dasselbe Problem.

@galvesribeiro hat Recht, nicht zu erwähnen, dass ich raus wäre, wenn ich nicht mit den Vorgängen vertraut wäre und eine Website sehen würde, die versucht, eine DLL herunterzuladen! Berücksichtigen Sie die Wahrnehmung, wenn Sie dies ansprechen :)

@joeizy ja, ich stimme dir vollkommen zu, dass das Blockieren von DLLs in den meisten Fällen das Richtige ist. Deshalb sprechen wir darüber, es umzubenennen, da wir sicher sind, was wir tun ...

Wie wäre es mit YourAssembly.blazor ? Es könnte eine gute Möglichkeit sein, das Projekt (sehr, sehr leicht) zu fördern, wenn irgendwelche Webentwickler in den Entwicklertools nachsehen, wie die Site erstellt wurde? Oder vielleicht bin es nur ich, der manchmal entdeckt, dass eine Seite mit Vue.js oder was auch immer erstellt wurde, und denkt "oh, schön" :)

Wie wäre es einfach mit .bin?

Ich mag auch .bin oder .blazor.

+1 „.bin“

.lib oder .bin oder .ilasm ?

Damit wir eine fundierte Entscheidung darüber treffen können, wäre es wirklich hilfreich, wenn wir ungefähre Repro-Schritte hätten (oder zumindest einen Hinweis in diese Richtung). Wir müssen zum Beispiel konkret verstehen, ob es sich um ein Namensproblem oder um ein Inhaltsproblem handelt.

Welches spezifische Firewall-Produkt blockiert bekanntermaßen .dll , entweder standardmäßig oder in einer gemeinsamen Konfiguration? Können Sie mir etwas zeigen, das ich installieren und ausprobieren kann? Oder wenn nicht, haben Sie zumindest den Namen und vielleicht Links zu einem seiner Konfigurationsdokumente?

@SteveSandersonMS Ich denke, es ist kein bestimmtes Produkt. Mehrere Produkte, insbesondere diejenigen, die von Unternehmen stark genutzt werden, haben Tide-Konfigurationseinstellungen für Dateitypen, insbesondere die gängigen wie .exe, .dll, .so usw.

Der Name selbst ist der erste Blocker, aber eine Möglichkeit, dieses Problem zu _reduzieren_, ist die gleiche Art und Weise, wie wir seit .Net 2.0 mit ClickOnce umgehen. Versammlungen unterzeichnen.

Das Problem ist, dass (1) es nicht billig ist, (2) der Prozess, diese Zertifikate zu erwerben, selbst wenn Sie es sich leisten können, SEHR komplex ist und in einigen Ländern sogar nicht verfügbar ist, und selbst wenn Sie es bekommen, (3) das Zertifikat dafür Das Unternehmen/der Entwickler braucht normalerweise eine Weile, um von der Antivirensoftware-Datenbank _vertraut_ zu werden.

Für MSFT-freigegebene Assemblys ist dies keine große Neuigkeit, da wir wissen, dass jede versendete Assembly, auch OSSed, durch eine Corpnet-Richtlinie Code-signiert ist. Aber denken Sie an andere Entwickler, Startups und OSS-Projekte. Sie werden alle darunter leiden.

Ich erinnere mich, dass wir in der guten alten Zeit, als Silverlight noch eine Sache war, wenn wir Assemblys bei Bedarf herunterladen wollten, sie in eine xap-Datei (die in der Praxis eine Zip-Datei ist) gesteckt und dann extrahiert haben
https://msdn.microsoft.com/en-us/library/cc190632 (v=vs.95).aspx

Ich bin mir nicht sicher, ob es dafür einen Grund gab (außer dem Kombinieren mehrerer DLLs in einer einzigen Datei). Ich denke, das Silverlight-Team sollte mit den Firewall-Problemen vertraut sein, falls es welche gibt.

Das Problem beim Bündeln besteht darin, dass, wenn Sie eine dieser DLLs aktualisieren müssen, das gesamte Paket aktualisiert werden muss ... Das Silverlight-Modell ist nicht cache- oder bandbreitenfreundlich ...

Ich schlage nicht vor, die Bündelung für Blazor zu verwenden. Ich sage nur, dass das Silverlight-Team neben der Bündelungsfunktion vielleicht XAP-Dateien verwendet hat, um Firewall-Probleme zu vermeiden. Das ist natürlich nur eine Vermutung.

Behalten Sie ".net" als Erweiterung bei

Wir sind jetzt gut in den Bereichen Bikeshedding . Daher bitte ich ausdrücklich um konkrete Beispiele für tatsächliche Firewall-Produkte , die damit Probleme haben.

Ich denke, es ist kein bestimmtes Produkt

Nichtsdestotrotz würden Beispiele für bestimmte Produkte und unter welchen Konfigurationen dies geschieht, hilfreich sein.

@SteveSandersonMS Ich habe diesen Teil verstanden. Der Punkt ist, dass die Behebung des Problems für einen bestimmten Antivirus/eine bestimmte Firewall nicht alle anderen abdeckt, da wir alle wissen, dass jeder seine eigenen heuristischen Datenbankeinstellungen dafür hat. Der einzige Fall, der sowohl die Benennungs- als auch die Signaturregeln für alles abdecken könnte, ist:

  1. Unterzeichnen Sie die Versammlungen wie gewohnt und;
  2. Stellen Sie sicher, dass die Benennung nicht in der _default_ Blacklist ist

@SteveSandersonMS Ich habe ein paar Probleme bei der Verwendung von NOD32 von ESET gesehen und gesehen, dass der aktive Scannerblock einige Binärdateien stillschweigend herunterlädt, diese scheinen auf den ersten Blick Dynamic Link Libraries zu sein, die keine digitale Signatur haben.

Danke für die Info @grahamehorner. Weißt du ungefähr, was die Repro-Schritte wären? Wenn ich NOD32 gerade auf einem (Wegwerf-)Windows-Computer installiert habe, reicht das aus, damit es https://blazor-demo.github.io/? Oder ist eine zusätzliche Konfiguration erforderlich?

Von https://www.paloaltonetworks.com/documentation/80/pan-os/pan-os/threat-prevention/set-up-file-blocking :

Mit Dateiblockierungsprofilen können Sie bestimmte Dateitypen identifizieren, die Sie blockieren oder überwachen möchten. Für den meisten Datenverkehr (einschließlich Datenverkehr in Ihrem internen Netzwerk) sollten Sie Dateien blockieren, von denen bekannt ist, dass sie Bedrohungen enthalten oder die keinen wirklichen Anwendungsfall für das Hochladen/Herunterladen haben. Derzeit umfassen diese Batchdateien, DLLs, Java-Klassendateien, Hilfedateien, Windows-Verknüpfungen (.lnk) und BitTorrent-Dateien.

@SteveSandersonMS Ich warte auf ein Treffen mit unserem IT-Administrationsteam, das NOD32 und seine Konfiguration aus der Ferne verwaltet, um herauszufinden, was sie (wenn überhaupt) geändert/angepasst haben, da ich auch eine automatische E-Mail von unserem NOD32-System erhalten habe, die besagt, dass ich möglicherweise gegen die Sicherheitsrichtlinie des Unternehmens verstoßen haben, indem sie nicht vertrauenswürdige Software heruntergeladen/installiert haben. Ich werde zurück posten, wenn ich es herausfinde oder zusätzliche Informationen habe.

Ich frage mich, ob die DLLs blockiert werden könnten/würden, wenn sie in eine .nupkg-Datei verpackt und nach dem Download von Blazor entpackt/geladen würden.

Derzeit umfassen diese Batchdateien, DLLs, Java-Klassendateien, Hilfedateien, Windows-Verknüpfungen (.lnk) und BitTorrent-Dateien.

Das ist, was ich sage ... Unabhängig vom Produkt ist dies die _Standard_-Liste von Dateitypen, die von jedem IT-Administrator in einem normalen (normalerweise nicht IT-basierten) Unternehmen blockiert würden ...

Übrigens, wenn es jemanden aus dem WPF-Team gibt, der mit .xap gearbeitet hat, kann er jedem klar sagen, womit er konfrontiert war, als er damals „WPF in einem Browser“ veröffentlichte und _genau_ dasselbe Problem hatte.

Es hat eine Weile gedauert, bis _alle_ Antivirenprogramme dieser Erweiterung _vertrauen_.

Ich hatte das gleiche Problem. Getestet wurde das Beispiel in einem Unternehmensnetzwerk. Eine DLL-Datei wurde als blockiert gemeldet. Dies macht es im Grunde unmöglich, dies einem Kollegen vorzuführen. Das Entsperren von DLL-Dateien ist wahrscheinlich ein Nichtstarter.

Ein Blick auf die offizielle Convention-Seite...
http://webassembly.github.io/spec/core/binary/conventions.html

Die empfohlene Erweiterung für Dateien, die WebAssembly-Module im Binärformat enthalten, ist „.wasm“, und der empfohlene Medientyp ist „application/wasm“.

Es scheint also, dass das erste, was zu tun ist, die Dateien in .wasm umzubenennen, und wenn sie immer noch blockiert sind, muss die Firewall entblockt werden.

Ich denke nicht, dass das Umbenennen der Dateien in .wasm eine gute Idee ist. Die DLLs sind keine Wasm-Module, sondern .NET-Assemblies, die (derzeit) von der Mono- Wasm -Laufzeit interpretiert werden (weiterlesen). Nur die Mono-Laufzeitumgebung ist ein Wasm-Modul. Ich stimme jedoch auch dafür, die DLLs aufgrund von Firewalls, insbesondere in Unternehmensszenarien, in etwas anderes umzubenennen.

Antivirus AVG Version 18.1.3044 blockierte auch die DLL-Dateien, als ich versuchte, https://blazor-realworld.azurewebsites.net/ zu besuchen.

Ich denke nicht, dass das Umbenennen der Dateien in .wasm eine gute Idee ist. Die DLLs sind keine Wasm-Module, sondern .NET-Assemblies, die (derzeit) von der Mono-Wasm-Laufzeit interpretiert werden (weiterlesen). Nur die Mono-Laufzeitumgebung ist ein Wasm-Modul.

Das Problem ist, was diese „etwas andere“ Erweiterung wäre, da keine der vorhandenen Erweiterungen zutrifft (.NET MSIL-Payloads, die direkt in der Browser-Sandbox interpretiert werden, sind ein brandneues Sicherheitskonzept), während wasm bereits von der Unternehmensfirewall zugelassen wird.

Die Handhabung von .xap ist unter Sicherheitsgesichtspunkten möglicherweise keine gute Referenz, da sie im Gegensatz zu wasm die Sicherheits-Sandbox des Browsers umgeht.

Ja, die DLL-Dateien enthalten MSIL, also ist es technisch gesehen wahr, sie sind nicht streng binäre Wasm. Aber sie werden DLL genannt, weil sie nach nativen Win32-DLLs benannt sind, obwohl sie nur ein Fragment des PE-Formats teilen und sich intern sowieso meistens unterscheiden. In ähnlicher Weise ist wasm das "native" Bibliotheksformat für Webassembly, und aus dem gleichen Grund, aus dem es sinnvoll war, verwaltete Bibliotheken DLL:s zu nennen (obwohl sie intern nichts mit nativen DLL:s zu tun haben), kann es sinnvoll sein um sie wasm zu nennen. Aus Sicherheitssicht impliziert DLL "lokale Ausführung", während wasm "Browserausführung" impliziert. Um dem Wasm-Format zu entsprechen, könnte die .NET-Assembly möglicherweise als Daten eingebettet werden, um sie zu einem gültigen Wasm mit der magischen Anfangszeichenfolge und allem zu machen.

Die Idee dabei ist, dass es ein Analogon gibt: Wasm ist für MSIL, was PE für MSIL ist: ein Wrapper-Container-Format. Präzedenzfall:

https://docs.microsoft.com/en-us/dotnet/standard/assembly-format

Das .NET-Binärformat basiert auf dem Windows PE-Dateiformat. Tatsächlich sind .NET-Klassenbibliotheken konforme Windows PEs und scheinen auf den ersten Blick Windows Dynamic Link Libraries (DLLs) oder Application Executables (EXEs) zu sein. Dies ist eine sehr nützliche Eigenschaft unter Windows, wo sie sich als native ausführbare Binärdateien tarnen können und teilweise die gleiche Behandlung erhalten (z. B. Laden des Betriebssystems, PE-Tools).

Wenn das Blazor-Modell nicht 100 % gut mit bestehenden Firewalls zusammenspielt, ist es fast ein Show-Stopper. Es sollte wie Javascript mühelos durch alle Firewalls fließen. Wenn ich ein Firewall-Administrator wäre, bin ich mir nicht sicher, ob ich für jede neue Sprache, die ein eigenes IL-Format hat, einen neuen Whitelist-Eintrag hinzufügen möchte.

Wenn das Blazor-Modell nicht 100 % gut mit bestehenden Firewalls zusammenspielt, ist es fast ein Show-Stopper.

@SteveSandersonMS Entschuldigung, wenn Sie dies schon einmal beantwortet haben, aber stellen Sie sich vor, dass dies lösbar ist?

Natürlich! Wir ändern entweder die URLs oder das Inhaltsformat nach Bedarf.

Es wäre großartig, wenn dies für den nächsten Meilenstein priorisiert werden könnte. Würde die Befürchtungen der Leute wirklich zerstreuen, dass es aufgrund potenzieller Unternehmenssicherheitsblockaden ein Show-Stopper ist

@JonnyGibson Wie Steve bereits erwähnt hat, planen wir, dies anzugehen, aber da Blazor ein experimentelles Projekt ist, priorisieren wir derzeit Arbeiten, die weniger gut verstanden werden. Wir sind uns ziemlich sicher, dass wir wissen, wie wir damit umgehen.

Hier ist ein weiteres Beispiel:
blazor antivirus

Vielleicht wäre eine Lösung, den Entwickler die Erweiterung für eine App definieren zu lassen, bis Firewalls und AV Unterstützung in der Whitelist für die Erweiterung hinzufügen, für die entschieden wird.

In Bezug auf meinen vorherigen Kommentar, den Entwickler die Erweiterung definieren zu lassen, würde dies Entwicklern auch erlauben, Apps mit verschiedenen Erweiterungen zu erstellen, um das Firewall- und Antivirus-Verhalten zu testen.

@jonparker @torhovland Ich habe das Gefühl, dass wir im Gegensatz zur Definition von Erweiterungen, die möglicherweise blockiert werden oder nicht, einen Weg finden müssen, der sicherstellt, dass sie niemals blockiert werden. Niemand wird ein Framework verwenden, das dazu führt, dass eine Website unter einigen (ziemlich wahrscheinlichen) Szenarien blockiert wird.

Die Idee, die Erweiterung zu entfernen, erscheint vernünftig und sollte so schnell wie möglich versucht werden. Ich habe keine anderen angesprochenen Probleme gesehen, die so nahe an einem Showstopper liegen.

Die Idee, die Erweiterung zu entfernen, erscheint vernünftig und sollte so schnell wie möglich versucht werden.

Damit wir eine Fehlerbehebung testen können, müssen wir in der Lage sein, so viele problematische Umgebungen wie möglich zu reproduzieren oder zumindest zu untersuchen. Um uns dabei zu helfen, geben Sie bitte weiterhin Details zu Ihren Umgebungen an, in denen Sie auf Probleme mit der Blockierung von Blazor-Apps stoßen. Vielen Dank an alle, die sich bereits darüber gemeldet haben!

Ich habe keine anderen angesprochenen Probleme gesehen, die so nahe an einem Showstopper liegen.

Auf lange Sicht machen wir uns über dieses Thema keine allzu großen Sorgen. Wir sind ziemlich zuversichtlich, dass wir dieses Problem mit einer Form von App-Packaging oder App-Transformation lösen können. Aber wir warten mit dem Entwerfen einer Lösung, bis wir mehr Daten darüber haben, was die spezifischen Probleme sind.

WebSense ist das Tool, das mein Unternehmensnetzwerk verwendet, um den Webzugriff zu steuern. Ich bin mir ziemlich sicher, dass das Problem, das Blazor blockiert, nur das explizite Blockieren des Downloads ausführbarer Dateien ist.
https://www.websense.com/content/support/library/web/hosted/admin_guide/exten_block.aspx

Sieht so aus, als würde AVG mein Blazor-Projekt blockieren. https://files.gitter.im/aspnet/Blazor/Oc8w/image.png
blazor antivirus

Ich kann bestätigen, dass ich auch Erfahrungen damit gemacht habe, dass AVG meine Website blockiert. Mein Freund konnte nicht auf die Website zugreifen, ohne AVG zu deaktivieren. Soweit ich weiß, hat er die Standard-Antivirus-Einstellungen verwendet.

DLL-Erweiterung ist kein Problem ... Da die AOT-Kompilierung in Arbeit ist, werden DLLs nicht verteilt, da ich verstehe, dass DLLs für eine schnellere Entwicklungsschleife verwendet werden. Verbringen Sie keine Zeit damit, bringen Sie AOT zum Laufen, das ist das Ziel.

A well... #897 war ein Duplikat.

Das war mein Fehler
image

Vielleicht können wir die Erweiterung als Parameter in UpdateIndex setzen, wo wir sie von der Befehlszeile erhalten würden (Standard „dll“): https://github.com/aspnet/Blazor/blob/dev/src/Microsoft.AspNetCore.Blazor .Build/Core/IndexHtmlWriter.cs

Wenn ich eine PR dazu schicke, würde das berücksichtigt werden?

Bitte beheben Sie dieses Problem, es ist das einzige Element, das mich daran hindert, dies im Unternehmen zu testen.

Quick-Fix-Vorschlag, wenn Sie IIS mit dem Rewrite-URL-Modul verwenden:

  • Sie können in der Ausgabe alle ".*.dll-Dateien durch .wasmnet oder irgendetwas ändern. Dadurch wird der Inhalt des Skript-Tags bearbeitet (https://docs.microsoft.com/en-us/iis/extensions/url-rewrite -Modul/Erstellen-ausgehender-Regeln-für-URL-Umschreiben-Modul)
  • Schreiben Sie diese Erweiterung in dll um, damit die guten Dateien an den Browser gesendet werden (oder benennen Sie die DLL-Dateien nach der Bereitstellung um).

Sie können dies möglicherweise mit .net Core https://docs.microsoft.com/fr-fr/aspnet/core/fundamentals/url-rewriting?view=aspnetcore-2.1&tabs=aspnetcore2x tun

Nur eine andere Idee: Ich stelle fest, dass die meisten dieser Firewall- und Sicherheitsprodukte .zip-Dateien nicht blockieren. Tatsächlich stelle ich beim Versuch, eine .dll-Datei herunterzuladen, in der ich in einem Unternehmensnetzwerk blockiert bin, oft fest, dass eine .zip-Version derselben Datei die Blockierung fast immer passieren wird.

Wir könnten MyLib.dll also einfach als MyLib.zip verpacken (mit einer einzelnen MyLib.dll-Datei in der ZIP-Datei). Das Problem ist, dass der Browser den Dateiinhalt nativ schneller dekomprimiert, als wenn es WASM/MONO wäre, das eine .NET-Assembly verwendet, um den Inhalt des komprimierten Archivs zu entpacken. Es würde mindestens eine 2x-3x Verlangsamung für das Entpacken geben.

Aber es gibt eine Lösung: Wir könnten die MyLib.dll-Datei als MyLib.zip mit NULL-Komprimierung packen und es dann dem Webserver überlassen, die Datei zu komprimieren (unter Verwendung aller Komprimierungsformate, die der Client-Browser beim Anfordern der Datei unterstützt). Wenn der Browser diese Datei herunterlädt, dekomprimiert er den empfangenen Inhalt nativ, bevor er auf Mono/WebAssembly trifft. Die Mono-Laufzeitumgebung müsste dann also nur die .zip-Datei entpacken (die zu diesem Zeitpunkt das ursprüngliche unkomprimierte Zip-Archiv ist).

Ich hoffe, niemand ist durch das oben Gesagte verwirrt. Ich schlage nur vor, dass wir .zip als unkomprimiertes Containerformat verwenden; Lassen Sie dann den Webbrowser und den Webserver die Komprimierung und Dekomprimierung so handhaben, wie sie es normalerweise für jede angeforderte Datei tun. Um ein konkretes Beispiel zu nennen:

  1. 2 MB mscorlib.dll wird in 2 MB mscorlib.zip gezippt (beachten Sie, dass wir die Komprimierung auf NONE gesetzt haben).
  2. Webbrowser fordert mscorlib.zip an (sendet übliche Accept-Encoding-Header mit unterstützten Komprimierungsmethoden).
  3. Der Webserver komprimiert den Inhalt von mscorlib.zip auf 700 MB und sendet ihn an den Server, sodass die Paketgröße dieselbe wäre wie heute)
  4. Der Webbrowser (Chrome oder Edge usw.) dekomprimiert Inhalte nativ, und die Mono-Laufzeitumgebung erhält die ursprüngliche 2-MB-mscorlib.zip-Datei, die WASM Mono sehr schnell in die ursprüngliche .dll entpacken kann, da keine interne Komprimierung verwendet wird das ursprüngliche Zip-Archiv.

Das ist also nur ein weiterer Vorschlag, der in den Eimer aufgenommen werden sollte. Meine Gedanken zu anderen Ideen schlugen vor:

  • Ich würde hoffen, dass es ausreichen würde, nur die Erweiterung zu entfernen, da in MyLib.dll MyLib oder der frühere MyLib_dll-Vorschlag wird.
  • Ich stimme auch zu, dass es möglich sein sollte, die Assembly als Daten in einer .wasm-Datei (aber immer noch intern im IL-Format) zu "verpacken", genauso wie .NET-Assemblys das PE-Format verwenden und .dll als Erweiterung erhalten haben. Wir könnten also eine MyLib.wasm haben, die die IL intern als Daten speichert. Der einzige Nachteil, den ich hier sehe, ist, dass es bei einer echten AOT-Kompilierung schwierig sein kann, visuell zu erkennen, ob eine .wasm-Datei IL- oder nativ (WASM) kompilierten Code enthält.

.dll wäre die richtige Erweiterung und sollte als Standard beibehalten werden. Das Verbergen der Absicht der Datei durch Ändern der Erweiterung in .zip ist keine optimale Lösung, da dies Verwirrung stiftet. Es wäre wahrscheinlich besser, überhaupt keine Erweiterung zu verwenden und die Datei wie somedllname_v1_0_0_4321_ab5e8d5b97d141aca3c54776e82d2355 zu benennen
(d. h. Projektname, Dateiversion und ein SHA-256-Hash)

Ein größeres Problem ist, dass aktuelle AV-Scanner (heuristisch) Routinen erkennen, die zusätzlichen Code abrufen. Es gibt keine wirkliche Lösung für dieses Problem, bis AV-Anbieter Anpassungen vornehmen, um .wasm zu unterstützen. Wenden Sie sich also besser an die AV-Anbieter und melden Sie einen Fehler, damit sie ihn beheben können.

Ich stimme @MovGP0 zu 100% zu. AV-Anbieter müssen ihre Software aktualisieren. Sie verwenden verschiedene Algorithmen, um bösartigen Code zu erkennen, und diese Algorithmen müssen intelligent genug sein, um Viren zu blockieren und legitime Software zuzulassen. Ich glaube, dass jeder moderne AV-Scanner den Inhalt jedes Archivs, Zip, 7z, Rar usw. überprüft. Das Ändern der Dateinamenerweiterung oder das Pseudo-Packen ist keine langfristige Lösung.

Es scheint nur albern, dass dies ein Problem ist, weil die Sperrung auf Legacy-Gründen zurückzuführen ist. Es gibt zwei Szenarien mit Blazor für DLLs:

  1. IL-Code, der in einem Browser interpretiert ausgeführt wird: In diesem Fall ist der IL-Code in der DLL nur rohe DATEN und nicht mehr Bedrohung als eine JPG- oder XML-Datei, die der Browser verarbeitet. Dies liegt daran, dass die heruntergeladene IL vollständig interpretiert wird. Das Sicherheitsprodukt hat damit genauso wenig zu tun wie mit der GIF-, XML- oder TXT-Datei, die eine Website verarbeitet.

oder (in Zukunft)

  1. IL-Code kompiliert AOT zu .wasm. In diesem Fall würde der IL-Code .WASM generieren, und das einzige Problem sollte sein, wie diese Sicherheitsprodukte mit .wasm-Dateien umgehen.

Ein weiterer Punkt zum „Packen“ ist, dass viele Javascript-Frameworks genau dies bereits tun, um Anforderungen an den Server zu reduzieren: Lassen Sie ein serverseitiges Skript mehrere separate Skripts dynamisch kombinieren, die in einer einzigen Datei abgelegt sind. Ich persönlich würde gerne einen intelligenten serverseitigen Handler sehen, der 20 kleine (5k) DLLs dynamisch kombinieren könnte, um anfängliche Serveranforderungen zu reduzieren, und mir als Entwickler optional eine gewisse Kontrolle darüber während des Ladens der Seite geben könnte.

Aber ich denke, das Blazor-Team hat jetzt unser Feedback und wird alles tun, was sinnvoll ist, und/oder Optionen anbieten.

Ich möchte darauf hinweisen, dass die Ansicht, dass wir warten müssen, bis jeder seine Sicherheitsprodukte aktualisiert, nicht funktioniert, da es nicht nur Produkte sind, sondern bestehende große Unternehmen, die realistischerweise keine Konfigurationsänderungen an ihrer Netzwerkinfrastruktur vornehmen werden. Dies wird der Verwendung von Blazor wirklich schaden, da es nicht nur um AV-Scanner geht, sondern darum, zu versuchen, Mitarbeiter in einer IT-Abteilung eines großen Unternehmens wie News Corporation oder Bhp Billiton anzuweisen, Änderungen an der Netzwerkkonfiguration vorzunehmen. Die Kultur ändert sich, aber es gibt immer noch viele Mitarbeiter in diesen Abteilungen, die sich einfach nicht darum kümmern (oder aktiv lächeln würden), wenn dies Blazor-Probleme verursachen würde ☹.

  • Ich glaube, dass jeder moderne AV-Scanner den Inhalt jedes Archivs, Zip, 7z, Rar usw. überprüft.
    Meine persönliche Erfahrung in den letzten zehn Jahren ist, dass in der ZIP-Datei normalerweise alles in Ordnung ist. Dinge werden normalerweise blockiert, wenn die Dateien .exe oder .dll sind. Innerhalb eines Zip-Archivs würden die meisten Produkte die Zip-Datei nur blockieren, wenn sie eine tatsächlich bekannte Malware-Signatur innerhalb des Zip-Archivs erkennen (nicht nur, weil sich darin eine .dll befindet). Aber ich erkenne an, dass jedes Produkt anders ist, daher gibt es hier keine Garantien.
    Von: Andrzej-W [email protected]
    Gesendet: Mittwoch, 6. Juni 2018 5:38 Uhr
    An: aspnet/Blazor [email protected]
    Cc: jiggyswift [email protected] ; Kommentieren Sie [email protected]
    Betreff: Re: [aspnet/Blazor] Erwägen Sie, die URLs von .NET-Assemblys so zu ändern, dass sie nicht mit .dll enden (#172)

Ich stimme @MovGP0 https://github.com/MovGP0 zu 100 % zu. AV-Anbieter müssen ihre Software aktualisieren. Sie verwenden verschiedene Algorithmen, um bösartigen Code zu erkennen, und diese Algorithmen müssen intelligent genug sein, um Viren zu blockieren und legitime Software zuzulassen. Ich glaube, dass jeder moderne AV-Scanner den Inhalt jedes Archivs, Zip, 7z, Rar usw. überprüft. Das Ändern der Dateinamenerweiterung oder das Pseudo-Packen ist keine langfristige Lösung.


Sie erhalten dies, weil Sie kommentiert haben.
Antworten Sie direkt auf diese E-Mail, sehen Sie sie auf GitHub https://github.com/aspnet/Blazor/issues/172#issuecomment-394834055 an oder schalten Sie den Thread stumm https://github.com/notifications/unsubscribe-auth/AmF6aIkiXWAVe282A0YSh_a7bgmGPGN7ks5t5t4OgaJpZM4SUpej .

Ich hatte zwei Leute vom Corporate Security Team an meinen Schreibtisch kommen lassen, nachdem ich die Mono-Wasm-Beispielseite durchsucht hatte, die ein hello.exe herunterlädt. Ich denke, es wurde von "Symantec Endpoint Protection" aufgegriffen.

Danke Harry. Haben sie dir Zeit gegeben, alles in eine Kiste zu packen, bevor sie dich zur Tür hinausgebracht haben? Beste Geschichte bisher.

Von: Harry McIntyre [email protected]
Gesendet: Donnerstag, 7. Juni 2018 20:36 Uhr
An: aspnet/Blazor [email protected]
Cc: jiggyswift [email protected] ; Kommentieren Sie [email protected]
Betreff: Re: [aspnet/Blazor] Erwägen Sie, die URLs von .NET-Assemblys so zu ändern, dass sie nicht mit .dll enden (#172)

Zwei Leute vom Corporate Security Team kamen an meinen Schreibtisch, nachdem ich die Mono-Wasm-Beispielseite https://nam01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.hipbyte.com durchsucht hatte


Sie erhalten dies, weil Sie kommentiert haben.
Antworten Sie direkt auf diese E-Mail, zeigen Sie sie auf GitHub https://nam01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Faspnet%2FBlazor%2Fissues%2F172%23issuecomment-395374377&data=02 an https://nam01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub. com% 2Fnotifications% 2Funsubscribe-auth% 2FAmF6aG9lvmy2g93BQQmI-5mbrGICanCxks5t6QIPgaJpZM4SUpej & data = 02% 7C01% 7C% 7Cf21af207f881447e8d5d08d5cc627621% 7C84df9e7fe9f640afb435aaaaaaaaaaaa% 7C1% 7C0% 7C636639645609018105 & sdata = yZhLQXXqqp0hLEtD3mTowdoI4EpBu5qNNR0UI4tZDm8% 3D & reserviert = 0 .

Könnte nützlich sein:

Von https://www.cisco.com/c/en/us/td/docs/security/firepower/623/configuration/guide/fpmc-config-guide-v623/file_policies_and_advanced_malware_protection.html

Das System kann bis zu drei Ebenen verschachtelter Dateien unter der äußersten Archivdatei (Ebene 0) untersuchen, wenn es sich bei der Datei um ein Archiv handelt (z. B. .zip- oder .rar-Archivdateien). Sie können Archivdateien untersuchen, die so groß sind wie die Einstellung Maximale Dateigröße zum Speichern der erweiterten Zugriffssteuerung.
Wenn eine einzelne Datei einer Dateiregel mit Sperraktion entspricht, sperrt das System das gesamte Archiv, nicht nur die einzelne Datei. Das System kann auch Archive blockieren, die eine bestimmte Verschachtelungsebene überschreiten oder deren Inhalt verschlüsselt ist oder anderweitig nicht überprüft werden kann.

Ein weiterer Link (scrollen Sie zu "Dateitypen-Funktion"):
https://supportcenter.checkpoint.com/supportcenter/portal?eventSubmit_doGoviewsolutiondetails=&solutionid=sk105318&js_peid=P-14d3e69bf07-10000

Ich habe eine hier beschriebene Problemumgehung gefunden: https://remibou.github.io/Change-Blazor-DLL-extension-with-ASPNET-Core/. Es hilft vielleicht nicht für jeden Fall und AV, aber es ist ein Ausgangspunkt.

@RemiBou Mann ... das ist großartig :) Guter Fang bei der Verwendung von URLRewrite dafür! 👍

Zum Thema DLL-Erweiterungsersatz möchte ich auf die wasm-Erweiterung drängen (auch wenn technisch nicht korrekt), da Github-Seiten, Cloudflare und wahrscheinlich die meisten CDNs bereits die Komprimierung für "application/wasm" handhaben, aber nicht für "application/ octet-stream", sodass eine Standard-Blazor-App etwa 3,2 MB wiegt und nur mono.wasm mit Brotli komprimiert hat. Am Ende werden Blazor-Bibliotheken sowieso schon wasm sein, wenn die AOT-Kompilierung vorhanden sein wird, oder?

Ich habe gerade den @RemiBou- Trick mit der Wasm-Erweiterung getestet und die DLLs umbenannt, bevor ich sie auf gh-Seiten verschoben habe, und jetzt beträgt eine kalte Aktualisierung 1,9 MB, wie es sein sollte: großartig! Danke @RemiBou!!

Aber mein Avast-Antivirus spielte anfangs verrückt, weil all diese gefälschten Wasm-Dateien mit DRep infiziert waren und ich das gleiche Warnfenster wie @jorisvergeer bekam. Nach einer kurzen Suche denke ich, dass das Problem gelöst werden könnte, wenn die gefälschten Wasm-Bibliotheken von einer Seite mit einem besseren Ruf als meiner kürzlich erstellten Subdomain heruntergeladen werden, aber ich vermute jetzt nur.

Ein Beispiel dafür, wie eine clientseitige Blazor-App innerhalb eines Unternehmens fehlschlägt, finden Sie in der angehängten PDF-Datei. Dies ist aus der Sicht eines Entwicklers ein frustrierendes Problem, da wir etwas ausgeliefert sind, das außerhalb unserer Kontrolle liegt.

Es wäre großartig, wenn wir versuchen könnten, die DLLs vorab in WASM-Dateien zu kompilieren und sie dann stattdessen herunterzuladen. (hoffentlich klappt das)

403verboten.pdf

Die verbotene 403-Nachricht im vorherigen Beitrag wurde von unserer zscaler-Firewall generiert.

Was ist der beste Weg, um diesem Problem Sichtbarkeit und Priorität zu verleihen, damit es in einem zukünftigen Sprint berücksichtigt wird?

@rynowak @SteveSandersonMS @mkArtakMSFT Wir müssen sicherstellen, dass wir dafür eine Lösung haben, also bewegen wir uns in den Blazor-Wasm-Meilenstein.

Ich habe ein Dokument erstellt, das die Lösung beschreibt, die ich derzeit verwende, um die von zScaler blockierten DLLs zu umgehen.

https://github.com/jucchytil/CSBNotes/blob/master/Notes.md

Ich vermute, dass wir eine ähnliche Lösung für WASM-Dateien in Betracht ziehen müssen, da die Möglichkeit besteht, dass Firewall-Hersteller eine Weile brauchen, um WASM-Dateien in den nächsten Jahren als sicher zu akzeptieren.

Ich freue mich sehr auf PublishSingleFile/PublishTrimmed/TargetFramework=wasm, sodass wir nur eine einzige relativ kleine Datei im Service Worker verwalten müssen.

Ihre Gedanken?

Danke Dan!
Ich bin dankbar, dass dies Aufmerksamkeit erregt.
Ich habe meine vorläufige Lösung auf https://github.com/aspnet/AspNetCore/issues/5477 gepostet
Hoffentlich kann es irgendwie helfen.
Jo

Von: Daniel Roth [email protected]
Gesendet: Freitag, 11. Oktober 2019, 10:33 Uhr
An: aspnet/AspNetCore [email protected]
Cc: jucchytil [email protected] ; Kommentieren Sie [email protected]
Betreff: Betreff: Re: [aspnet/AspNetCore] Erwägen Sie, die URLs von .NET-Assemblys so zu ändern, dass sie nicht mit .dll enden (#5477)

@rynowak https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Frynowak&data=02%7C01%7C%7Cecf83fca357f4abe690d08d74e604c75%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637064047810603291&sdata=N5o8HJ7%2FM1UInuoFp1HXbY9AqDhM8BCm % 2F0IGZujyqqI% 3D & reserviert = 0 @SteveSandersonMS https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FSteveSandersonMS&data=02%7C01%7C%7Cecf83fca357f4abe690d08d74e604c75%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0 7C637064047810613296% & sdata = vDuSWWEJ0CGf7ex7TStTMrHH1E27V5eza% 2FMJKIkr% 2BeY% 3D & reserviert = 0 @mkArtakMSFT https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FmkArtakMSFT&data=02%7C01%7C%7Cecf83fca357f4abe690d08d74e604c75 %7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637064047810623307&sdata=ltzBUDC4c8o9kPvFmBlIOHN1B%2BUI2Fj%2FspG4WCIo%2BD8%3D&reserved=0 Wir müssen sicherstellen, dass wir eine Lösung dafür haben, also bewegen wir uns in den Meilenstein.


Sie erhalten dies, weil Sie kommentiert haben.
Antworten Sie direkt auf diese E-Mail, zeigen Sie sie auf GitHub https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Faspnet%2FAspNetCore%2Fissues%2F5477%3Femail_source%3Dnotifications%26email_token an https://eur01.safelinks.protection.outlook.com/?url= https% 3A% 2F% 2Fgithub.com% 2Fnotifications% 2Funsubscribe-auth% 2FAEBYRE2MQUF65CHXQD54OWDQOCMCVANCNFSM4GK4V5LQ & data = 02% 7C01% 7C% 7Cecf83fca357f4abe690d08d74e604c75% 7C84df9e7fe9f640afb435aaaaaaaaaaaa% 7C1 7C0%% 7C637064047810643323 & SDATA = yx154tNWkGvXlXbVJNjvswed9hG0zr91HFqIhMVLCfo% 3D & reserviert = 0 .

Ich folge nur einer Anfrage von Daniel Roth in seinem Blog, der mich gebeten hat, den Namen meines Webhosting-Anbieters hier zu posten, damit Sie dieses Problem testen können. Der Blog-Kommentar ist hier zu finden : https://devblogs.microsoft.com/aspnet/asp-net-core-and-blazor-updates-in-net-core-3-0/#comment -955

Der betreffende Hosting-Anbieter ist infinityfree.net. Sie sind kostenlos, also wird es einfach sein, sie auszuprobieren!

Grundsätzlich löscht ihr Server beim Hochladen der Site etwa die Hälfte der DLLs aus dem Ordner _framework\bin\. Ich dachte ursprünglich, dass etwas schief gelaufen sei und versuchte wiederholt, die fehlenden Dateien hochzuladen. Schließlich schienen sie zu „kleben“, als ob ihr Server die Virenprüfung der neuen Dateien aufgegeben hätte und einen Tag später immer noch da sind (obwohl sie vielleicht irgendwann weggefegt werden).

Wie auch immer, stimmen Sie bitte für eine geeignete Lösung wie das Umbenennen der DLLs ab.

@andyste1 Danke für die Info. Haben Sie überprüft und bestätigt, dass die umbenannten Dateien nicht gelöscht werden? Wenn das Hosting-Unternehmen dies auf der Grundlage des Inhalts und nicht des Namens tut, wäre eine Umbenennung nicht unbedingt eine Lösung.

Das Umbenennen hilft möglicherweise nicht viel - es gibt bereits eine Problemumgehung, um dies zu erreichen.
Für mich ist das Problem das PE-Format der Datei - das Antivirenprogramm Sophos blockiert die Dateien jedes Mal, wenn ich sie umbenenne, da es auch den Inhalt der Datei scannt. Glücklicherweise erlaubt Sophos das Herunterladen von DLL-Dateien (PE-Format) über HTTPS (nicht HTTP).

@lertoo Wir diskutieren über das mögliche Entfernen der PE-Metadaten aus den Assemblys, um die Größe zu reduzieren, aber es kann auch bei diesem Problem hilfreich sein.

Norton Antivirus-Version dieses Problems: https://forums.asp.net/t/2161027.aspx

Es ist sehr wahrscheinlich, dass nicht nur die Dateierweiterung, sondern auch der Dateiheader ein Problem mit paranoischer Software verursacht. Verschleierung hilft nicht, wenn das Problem mit dem Header zusammenhängt, außer dass das JS, das die Blazor-VM startet, sie nicht irgendwie manuell im Speicher ersetzt, aber es ist ein langer Weg.

Meine aktuelle Problemumgehung besteht darin, eine Base64-codierte Version jeder DLL in meiner CI/CD-Pipeline bereitzustellen, einen Dienstmitarbeiter zu verwenden, um den 403 von der Firewall für die DLL zu erkennen, die Base64-Version der DLL-Textdatei herunterzuladen und Base64 zurück zu konvertieren DLL im Service Worker, bevor Sie sie im Browser zwischenspeichern.

Es wäre interessant zu sehen, ob das Problem verschwindet, wenn wir die DLLs einfach in WASM-Dateien konvertieren könnten, da die WASM-Datei für mich anscheinend gut durchkommt, aber es trifft möglicherweise nicht auf alle Firewalls zu.

Ein weiteres falsch positives Blazor WebAssembly:

image

Ich warte seit Anfang 2018 darauf, dass dieses Problem gelöst wird :) Ich liebe/liebte Blazor, aber dieser schien ein potenzieller Showstopper zu sein, wenn die DLLs nicht geändert werden könnten

@JonnyGibson Danke für deine Geduld! Wir arbeiten an einer Lösung für dieses Problem für die kommende Veröffentlichung im Mai dieses Jahres.

Das ist ein ziemlich langes Thema, also habe ich versucht, das alles hier zusammenzufassen:

Virenschutz

  • NOD32 (ESET)
  • Durchschnitt v. 18.1.3044 (+3)
  • Scannen des Webverkehrs
  • Avast (+3)
  • Symantec Endpoint Protection
  • zScaler

Vorschläge umbenennen

  • .Blazer (+35)
  • .bin (+3)
  • .lib
  • .ilasmus (+6)
  • .net (+14)
  • .wasm (-8)
  • [benutzerdefiniert] (+1)
  • [Keiner]

Problemumgehung, die von Menschen verwendet wird

  • Erweiterung umbenennen
  • BASE64-Codierungs-DLLs

Allgemeine Hinweise

  • .DLLs und .EXEs sind Erweiterungen, die viele Unternehmen auf Firewall-Ebene als Richtlinie blockieren.
  • Es gab Berichte über umbenannte Erweiterungen, die auch von Antivirensoftware gemeldet wurden

@mkArtak
Vielleicht möchten Sie auch zScaler irgendwo in Ihre Zusammenfassung aufnehmen, da dies meine Downloads blockiert hat.

Ein Ansatz zum Testen besteht darin, alle ausführbaren Dateien in WASM-Dateien zu konvertieren, da ich mich nicht erinnere, dass zScaler Probleme damit hatte.

Ich bin vorübergehend zu Angular gewechselt, bis der clientseitige Blazor diese Probleme behebt und bessere anfängliche Downloadzeiten hat.

Ich habe viel Zeit darauf verwendet, den Client-Blazor zum Laufen zu bringen, und mich entschieden, zu warten, bis die Plattform weiter ausgereift ist.
https://github.com/jucchytil/CSBNotes/blob/master/Notes.md

@javiercn Lassen Sie uns die Umbenennungsarbeit der Dateierweiterung hier nachverfolgen, und ich werde ein separates Problem einreichen, um dies bei den Antivirenanbietern nachzuverfolgen.

AKTION ERFORDERLICH

🎫
Ich habe gerade ein neues Problem erstellt, in dem wir versuchen werden, alle spezifische Software zu sammeln, die Blazor WASM-Anwendungen blockiert. Bitte geben Sie spezifische Informationen für Ihren Fall an, wie hier beschrieben: https://github.com/dotnet/aspnetcore/issues/19552

Nebenbei bemerkt, CDNs wie Github-Seiten und Cloudflare komprimieren die Assets mit einer WASM-Erweiterung, während sie eine unkomprimierte Version für die DLL-Dateien bereitstellen. Wenn ich mich richtig erinnere, sollte sich Azure CDN genauso verhalten.

Das haben wir heute erlebt. Die Aufhebung der Beschränkung des DLL-Downloads wird keine Option sein. Nicht nur für uns, sondern auch für unsere Kunden ist es sehr unwahrscheinlich, dass sie diese Einschränkung aufheben - also brauchen wir wirklich eine Lösung dafür, sonst ist unser Blazor-Projekt tot im Wasser (der Arbeitgeber ist nicht bereit, serverseitig zu verwenden).

Ich glaube, unsere Firewall ist ein Palo Alto.

@mrpmorris können Sie die Details in https://github.com/dotnet/aspnetcore/issues/19552 einfügen, da wir sie hier sammeln, damit wir Anbieter einbeziehen können.

@mrpmorris hat das Ändern der Erweiterung das Problem in Ihrem Szenario gelöst?

Hallo @javiercn

Ich habe das Problem gerade aktualisiert. Es scheint, dass die Umstellung auf https für uns funktioniert hat, was Sinn macht. Wir können jedoch nicht sicher sein, dass unsere Kunden bereit sind, die gleiche Ausnahme zu machen.

Ich werde gerne die Umbenennungsoption prüfen. Haben Sie einen Link zu Anweisungen, wie Sie Blazor dazu bringen, mit .wasm-Erweiterungen oder etwas anderem zu arbeiten? Im Moment klicke ich einfach mit der rechten Maustaste auf mein Webserver-Projekt und wähle Publish direkt zu einer Azure-Web-App.

@mrpmorris Sie können die Anweisungen hier überprüfen
https://github.com/dotnet/aspnetcore/pull/19558#issuecomment -594461263

@mrpmorris Bitte beachten Sie, dass diese Anweisungen nur für unsere neuesten 3.2.0-preview2-Builds gelten und ein Upgrade von 3.2.0-preview1 mit Schritten, die wir noch nicht veröffentlicht haben, ein wenig Arbeit erfordert. Vielleicht möchten Sie warten, bis wir später in diesem Monat veröffentlichen.

@danroth27 Ich glaube nicht, dass du preview2 noch veröffentlicht hast... :)

Sie können dies mit den nächtlichen Builds versuchen, indem Sie den Anweisungen hier folgen, wenn Sie dies wünschen.

Ich würde empfehlen, dass Sie Ihre Nuget-Paket-Caches vorher und nachher löschen, wenn Sie sich dafür entscheiden. Berücksichtigen Sie, dass sich das Löschen der Caches auf den gesamten Computer auswirkt (alle Apps auf diesem Computer).

Ich werde warten, bis der p2-Build veröffentlicht wird, und es dann ausprobieren. Danke!

@mrpmorris 3.2 Vorschau 2 ist jetzt verfügbar! Funktionieren die in https://github.com/dotnet/aspnetcore/pull/19558#issuecomment -594461263 vorgeschlagenen Schritte zum Umbenennen der Dateien für Sie?

Hallo Leute!

In der aktuellen Version Blazor WebAssembly 3.2 Preview 2 haben wir einige Änderungen vorgenommen, um das Umbenennen der DLL-Dateien in Ihrer App zu vereinfachen, um Proxys/Firewalls/Antivirensoftware zu beheben, die Blazor WebAssembly-Apps stören. Wir möchten, dass Personen, die auf dieses Problem stoßen, die folgenden Schritte in der veröffentlichten Ausgabe Ihrer Blazor WebAssembly-Apps (eigenständig oder von ASP.NET Core gehostet) ausprobieren und sehen, ob es hilft:

Fenster

  • Öffnen Sie eine PowerShell-Eingabeaufforderung im Verzeichnis wwwroot Ihrer veröffentlichten Ausgabe (z. B. in yourapp\bin\Release\netstandard2.1\publish\wwwroot
  • Führen Sie die folgenden zwei Zeilen aus:
dir .\_framework\_bin | rename-item -NewName { $_.name -replace ".dll\b",".bin" }
((Get-Content .\_framework\blazor.boot.json -Raw) -replace '.dll"','.bin"') | Set-Content .\_framework\blazor.boot.json

Linux/macOS

  • Öffnen Sie ein Terminal im Verzeichnis wwwroot Ihrer veröffentlichten Ausgabe (z. B. in yourapp/bin/Release/netstandard2.1/publish/wwwroot
  • Führen Sie die folgenden zwei Zeilen aus:
for f in _framework/_bin/*; do mv "$f" "`echo $f | sed -e 's/\.dll\b/.bin/g'`"; done
sed -i 's/\.dll"/.bin"/g' _framework/blazor.boot.json

Bitte probieren Sie diese Schritte aus und lassen Sie uns wissen, wie es gelaufen ist. Wenn Sie immer noch auf Probleme stoßen, teilen Sie uns dies bitte mit! Wir haben einige andere Ideen für Dinge, die wir bei Bedarf ausprobieren können.

Danke!

Das hat bei mir funktioniert. Allerdings musste ich meinen Veröffentlichungsschritt auf Azure DevOps anpassen und deaktivieren, dass es am Ende ein Zip generiert.

In meinem Fall:

- task: DotNetCoreCLI<strong i="7">@2</strong>
  displayName: 'dotnet publish'
  inputs:
    command: 'publish'
    publishWebProjects: false
    zipAfterPublish: false
    projects: |
      **/ApplySupportTool.Server.csproj
    arguments: '--configuration $(buildconfiguration)  --output $(Build.ArtifactStagingDirectory)'

- task: PowerShell<strong i="8">@2</strong>
  displayName: Change Outputname
  inputs:
    targetType: 'inline'
    workingDirectory: $(Build.ArtifactStagingDirectory)\ApplySupportTool.Server\wwwroot
    script: |
         dir .\_framework\_bin | rename-item -NewName { $_.name -replace ".dll\b",".bin" }
         ((Get-Content .\_framework\blazor.boot.json -Raw) -replace '.dll"','.bin"') | Set-Content .\_framework\blazor.boot.json

@NPadrutt In welchem ​​Sinne hat es funktioniert? In dem Sinne, dass Sie schlüssig festgestellt haben, dass Ihre Website zuvor nicht funktioniert hat (aufgrund einer Art Antivirus oder Firewall) und die Änderung der URLs dies behoben hat? Wenn dies der Fall ist, können Sie bitte unter https://github.com/dotnet/aspnetcore/issues/19552 Einzelheiten darüber posten, welche Antivirenprogramme/Firewalls/etc bei Ihnen zuvor Probleme verursacht haben? Danke!

@SteveSandersonMS Nun , ich hatte vorher die Arbeit über den Rewriter an Ort und Stelle. Nach dem Upgrade auf die 3.2 Preview 2 funktionierte diese nicht mehr und die Anwendung wurde wieder gesperrt. Mit dem obigen funktioniert es wieder.

Leider kann ich dir nicht sagen, welche Firewall wir in unserem Netzwerk haben und ich denke nicht, dass der AntiVirus (McAffee) hier einen Einfluss hat, da das Arbeiten lokal ohne Probleme funktioniert hat.

Jemand in meinem Büro wurde positiv auf COVID-19 getestet, also sieht es so aus, als ob mein Büro für ein paar Wochen geschlossen sein wird – was bedeutet, dass ich nicht über ihre Firewall auf Dateien zugreifen werde. Es tut uns leid.

@mrpmorris Kein Problem. Pass auf dich auf!

Hallo Leute!

In der aktuellen Version Blazor WebAssembly 3.2 Preview 2 haben wir einige Änderungen vorgenommen, um das Umbenennen der DLL-Dateien in Ihrer App zu vereinfachen, um Proxys/Firewalls/Antivirensoftware zu beheben, die Blazor WebAssembly-Apps stören. Wir möchten, dass Leute, die auf dieses Problem stoßen, die folgenden Schritte in der _veröffentlichten Ausgabe_ Ihrer Blazor WebAssembly-Apps (eigenständig oder von ASP.NET Core gehostet) ausprobieren und sehen, ob es hilft:

@danroth27

Ich habe das Skript ausgeführt (ich entwickle unter Windows, aber ich stelle es von einer Linux-Umgebung in eine andere Linux-Umgebung bereit, also habe ich das bereitgestellte Linux-Skript verwendet) und es mit den neuen Namen bereitgestellt, und beim Laden der Seite scheint es die Dateien zu laden mit den neuen Erweiterungen gut, und die App funktioniert. In unserem Fall markiert Avast die App nicht mehr und blockiert keine Downloads mehr.

Aufgrund der Pandemie-Situation wird es noch etwas dauern, bis wir die Firewall-Situation des Unternehmens überprüfen.

Dies ist ein ausreichend einfacher Schritt zum Hinzufügen zum Build und scheint keine Nachteile zu haben, also werden wir damit beginnen, ihn zu verwenden.

Danke!

@danroth27 wird dies irgendwann die Standardeinstellung sein, sodass wir diesen Schritt nicht ausführen müssen? Gibt es wirklich einen Grund, nicht einfach zu .bin oder keinem Dateityp als Standard zu wechseln, anstatt dies von allen zu verlangen, wenn es ein allgemeines Problem mit dem .dll-Dateityp gibt?

Besteht die Möglichkeit, dass ein Virenprüfprogramm die Datei überprüft, auch wenn es sich nicht um eine ".dll"-Datei handelt, um festzustellen, ob es sich um eine DLL-Datei handelt?

@danroth27 @SteveSandersonMS
Ich habe viele Fehler in der Browserkonsole im Zusammenhang mit Integritätsfehlern oder Dateien, die nicht gefunden wurden:

_framework/_bin/Blazored.LocalStorage.dll:1 Failed to load resource: the server responded with a status of 404 ()
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/BlazorStrap.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.AspNetCore.Blazor.HttpClient.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.AspNetCore.Components.dll:1 Failed to load resource: the server responded with a status of 404 ()
_framework/_bin/Microsoft.AspNetCore.Components.Authorization.dll:1 Failed to load resource: the server responded with a status of 404 ()
_framework/_bin/Microsoft.AspNetCore.Components.WebAssembly.Authentication.dll:1 Failed to load resource: the server responded with a status of 404 ()
_framework/_bin/Microsoft.AspNetCore.Authorization.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.AspNetCore.Components.Web.dll:1 Failed to load resource: the server responded with a status of 404 ()
_framework/_bin/Microsoft.AspNetCore.Components.Forms.dll:1 Failed to load resource: the server responded with a status of 404 ()
_framework/_bin/Microsoft.AspNetCore.Components.WebAssembly.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
admin:1 Unknown error occurred while trying to verify integrity.
admin:1 Unknown error occurred while trying to verify integrity.
admin:1 Unknown error occurred while trying to verify integrity.
admin:1 Unknown error occurred while trying to verify integrity.
admin:1 Unknown error occurred while trying to verify integrity.
A cookie associated with a cross-site resource at <URL> was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at <URL> and <URL>.
A cookie associated with a cross-site resource at <URL> was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at <URL> and <URL>.
A cookie associated with a cross-site resource at <URL> was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at <URL> and <URL>.
A cookie associated with a cross-site resource at <URL> was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at <URL> and <URL>.
A cookie associated with a cross-site resource at <URL> was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at <URL> and <URL>.
A cookie associated with a cross-site resource at <URL> was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at <URL> and <URL>.
blazor.webassembly.js:1 Error: Failed to start platform. Reason: TypeError: Failed to fetch
    at blazor.webassembly.js:1
    at blazor.webassembly.js:1
    at Object.throw (blazor.webassembly.js:1)
    at u (blazor.webassembly.js:1)
d.printErr @ blazor.webassembly.js:1
_framework/_bin/Microsoft.AspNetCore.Metadata.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.Bcl.HashCode.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.CSharp.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.EntityFrameworkCore.Abstractions.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.Extensions.Caching.Abstractions.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.EntityFrameworkCore.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.EntityFrameworkCore.Relational.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.Extensions.Caching.Memory.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.Extensions.Configuration.Abstractions.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.Extensions.Configuration.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.Extensions.Configuration.Json.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.Extensions.DependencyInjection.Abstractions.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.Extensions.DependencyInjection.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.Extensions.Identity.Core.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.Extensions.Identity.Stores.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.Extensions.Logging.Abstractions.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.Extensions.Logging.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.Extensions.Options.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.Extensions.Primitives.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.JSInterop.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Mono.Security.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/MovingPicturesEvents.Core.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/MovingPicturesEvents.Services.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/mscorlib.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/MovingPicturesEvents.Web.Client.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/netstandard.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Radzen.Blazor.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.Collections.Immutable.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.ComponentModel.DataAnnotations.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.Core.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.Data.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.Diagnostics.DiagnosticSource.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.Linq.Dynamic.Core.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.Net.Http.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.Net.Http.Json.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.Numerics.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.Runtime.CompilerServices.Unsafe.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.Text.Encodings.Web.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.Text.Json.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.Transactions.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.Xml.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.Xml.Linq.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/WebAssembly.Bindings.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/WebAssembly.Net.Http.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.

Ich habe die genannten Schritte @danroth27 sowohl unter Windows als auch in einem Linux-Docker-Container mit den gleichen Ergebnissen ausprobiert.

Verwenden von 3.2 Vorschau 4.

@radderz Dieses Problem scheint nicht alle Umgebungen zu betreffen - es ist spezifisch für bestimmte Umgebungen und basiert häufig auf Richtlinien. Wenn wir zu einer anderen Dateierweiterung wechseln, gibt es keine Garantie dafür, dass dies für alle funktioniert. Anstatt also die Standardeinstellung für alle zu ändern, setzen wir den Plan fort, bei dem Kunden, die auf dieses Problem stoßen, die Dateierweiterungen mithilfe der oben bereitgestellten Technik selbst steuern können.

Es ist durchaus möglich, dass Antivirus-Software/Proxies/Firewalls die Dateien tiefer inspizieren, als sich nur die Dateierweiterung anzusehen. Bisher haben wir noch von niemandem gehört, der dadurch blockiert wurde. Wenn dies zu einem Problem wird, werden wir andere Abhilfemaßnahmen ergreifen.

@mihaimyh Sieht so aus, als hätten Sie eine falsch konfigurierte Inhaltssicherheitsrichtlinie?

@mihaimyh Sieht so aus, als hätten Sie eine falsch konfigurierte Inhaltssicherheitsrichtlinie?

@danroth27 Kannst du bitte deutlicher werden? Von welcher Sicherheitsrichtlinie sprechen Sie? Ich habe diese Fehler sogar in der Entwicklungsumgebung erhalten, in der meiner Meinung nach keine Sicherheitsrichtlinie implementiert ist.

@mihaimyh Entschuldigung, ich glaube, ich habe die Sicherheitsrichtlinie für Inhalte mit der Integrität von Unterressourcen verwechselt . Es sieht so aus, als ob der Browser versucht zu erzwingen, dass die Hashes der heruntergeladenen Assets mit den Hashes übereinstimmen, die im Markup über das integrity -Attribut angegeben sind, aber das integrity -Attribut fehlt. Dies könnte auch damit zusammenhängen, wie Blazor die App-Ressourcen herunterlädt und zwischenspeichert, das eine ähnliche Hash-basierte Strategie verwendet, um zu überprüfen, ob sich Dateien geändert haben.

@mihaimyh Entschuldigung, ich glaube, ich habe die Sicherheitsrichtlinie für Inhalte mit der Integrität von Unterressourcen verwechselt . Es sieht so aus, als ob der Browser versucht zu erzwingen, dass die Hashes der heruntergeladenen Assets mit den Hashes übereinstimmen, die im Markup über das integrity -Attribut angegeben sind, aber das integrity -Attribut fehlt. Dies könnte auch damit zusammenhängen, wie Blazor die App-Ressourcen herunterlädt und zwischenspeichert, das eine ähnliche Hash-basierte Strategie verwendet, um zu überprüfen, ob sich Dateien geändert haben.

@ danroth27 Ok, und ich glaube, ich kann die Integritätsprüfung umgehen, indem ich hinzufüge

<BlazorCacheBootResources>false</BlazorCacheBootResources>

zu meinen .csproj-Dateien, aber ich habe immer noch ein 404-Ereignis mit deaktivierter Integritätsprüfung.

@mihaimyh Wenn Sie dies zuverlässig reproduzieren können, würde ich vorschlagen, ein neues Problem für dieses Problem zu eröffnen, da es anscheinend nicht mit dem Problem mit den Dateierweiterungen zusammenhängt. Das wird es einfacher machen, die richtigen Leute zu engagieren.

Stellen Sie sicher, dass Sie so etwas in Ihrem Skript "dll rename" hinzufügen

# Remove compressed versions of blazor.boot.json because it still looks for .dll files
Remove-Item ".\_framework\blazor.boot.json.gz"
Remove-Item ".\_framework\blazor.boot.json.br"

Meistens wird die vorkomprimierte blazor.boot.json anstelle der „korrigierten“ blazor.boot.json heruntergeladen , die Anfragen an die „.dll“ -Dateien statt an die „.bin“ -Dateien sendet, die das Integritätsproblem verursachen.

Sie müssen also entweder die komprimierten JSON-Dateien entfernen oder die Datei blazor.boot.json neu komprimieren, aber ich denke nicht, dass es sich lohnt, diesen Aufwand zu betreiben.

Hoffentlich könnte dies eines Tages vom Framework mit einem Flag im csproj behandelt werden, z

<BlazorBinariesExtension>.bin</BlazorBinariesExtension>

Hallo Leute. An dieser Stelle haben wir die Strategie dokumentiert , die wir zum Ändern der Dateierweiterung für die veröffentlichten .NET-Assemblys mithilfe von Skripts empfehlen. Ich denke, der Vorschlag von @stavroskasidis ist immer noch gut, um eine einfache integrierte Möglichkeit dafür bereitzustellen, also habe ich https://github.com/dotnet/aspnetcore/issues/21489 geöffnet, um den Vorschlag zu verfolgen. An diesem Punkt denke ich, dass wir bereit sind, dieses Thema zu schließen. Danke an alle für das ausführliche Feedback!

Soweit ich sehen kann, muss die Umbenennung von .dll in .bin auch in wwwroot/service-worker-assets.js erfolgen und wwwroot/service-worker-assets.js.br und wwwroot/service-worker-assets.js.gz entfernen oder neu komprimieren, da sonst Integritätsprobleme auftreten Browser-Konsole.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen