Aspnetcore: Рассмотрите возможность изменения URL-адресов сборок .NET, чтобы они не заканчивались на .dll.

Созданный на 27 февр. 2018  ·  104Комментарии  ·  Источник: dotnet/aspnetcore

Я хотел посмотреть демо на https://blazor-demo.github.io/ , и мой корпоративный брандмауэр заблокировал MicroApp.dll , в то время как другие DLL успешно скачались. Поскольку многие программы параноидально относятся к загрузке / передаче двоичных файлов Windows, может быть, стоит немного их запутать? Или хотя бы переименовать?

Components Big Rock area-blazor blazor-wasm enhancement

Самый полезный комментарий

Как насчет YourAssembly.blazor ? Это может быть хорошим способом продвижения проекта (очень-очень слабо), если кто-нибудь из веб-разработчиков заглянет в инструменты разработчика, чтобы увидеть, как был создан сайт? Или, может быть, только я иногда замечаю, что сайт был создан с помощью Vue.js или чего-то еще, и думаю: «О, здорово» :)

Все 104 Комментарий

Это интересно - спасибо, что сообщили нам. Мы рассмотрим изменение URL-адресов на YourAssembly_dll или что-то в этом роде, хотя то, делаем ли мы это по умолчанию, может зависеть от того, получим ли мы больше отчетов об этом, и сможем ли мы установить, что это связано с именем или глубже. проверка содержимого полезной нагрузки.

@SteveSandersonMS просто чтобы бросить сюда мой 2c. От .dll-fobia страдают не только корпоративные брандмауэры. У некоторых местных антивирусов такая же проблема.

@galvesribeiro прав, не говоря уже о том, что если бы я не был знаком с тем, что происходит, и увидел веб-сайт, пытающийся загрузить DLL, меня бы там не было! Учитывайте восприятие при решении этого вопроса :)

@joeizy да, я полностью согласен с вами, что в большинстве случаев блочные dll - это правильно. Вот почему мы говорим о переименовании, поскольку уверены в том, что делаем...

Как насчет YourAssembly.blazor ? Это может быть хорошим способом продвижения проекта (очень-очень слабо), если кто-нибудь из веб-разработчиков заглянет в инструменты разработчика, чтобы увидеть, как был создан сайт? Или, может быть, только я иногда замечаю, что сайт был создан с помощью Vue.js или чего-то еще, и думаю: «О, здорово» :)

Как насчет просто .bin?

Мне также нравятся .bin или .blazor.

+1 «.bin»

.lib или .bin или .ilasm?

Таким образом, мы можем принять взвешенное решение по этому поводу, было бы очень полезно, если бы у нас были приблизительные шаги воспроизведения (или хотя бы какой-то намек в этом направлении). Нам нужно конкретно понять, является ли это проблемой именования или проблемой контента, например.

Какой конкретный брандмауэр, как известно, блокирует .dll либо по умолчанию, либо в обычной конфигурации? Можете ли вы указать мне что-нибудь, что я могу установить и попробовать? Или, если нет, у вас есть хотя бы его название и, возможно, ссылки на какие-либо документы по его конфигурации?

@SteveSandersonMS Я думаю, что это не какой-то конкретный продукт. Несколько продуктов, особенно те, которые активно используются предприятиями, имеют параметры конфигурации прилива для типов файлов, особенно для распространенных, таких как .exe, .dll, .so и т. д.

Само имя является первым блокировщиком, но один из способов _уменьшить_ эту проблему — это тот же способ, которым мы имеем дело с ClickOnce, начиная с .Net 2.0. Подписание сборок.

Проблема в том, что (1) это недешево, (2) процесс получения этих сертификатов, даже если вы можете себе это позволить, ОЧЕНЬ сложен и даже недоступен в некоторых странах, и даже если вы его получите, (3) сертификат для компании/разработчику обычно требуется некоторое время, чтобы стать _доверенным_ базой данных антивирусного программного обеспечения.

Для сборок, выпущенных MSFT, это не является большой новостью, поскольку мы знаем, что каждая поставляемая сборка, даже OSSed, является кодом, подписанным политикой корпоративной сети. Но подумайте о других разработчиках, стартапах и проектах OSS. Они все будут страдать от этого.

Я помню, что в старые добрые времена, когда существовал Silverlight, если мы хотели загружать сборки по запросу, мы помещали их в xap-файл (который на практике представляет собой zip-файл), а затем извлекали их с помощью
https://msdn.microsoft.com/en-us/library/cc190632 (v=vs.95).aspx

Не уверен, что для этого была причина (кроме объединения нескольких dll в одном файле). Я полагаю, что команда Silverlight должна быть знакома с проблемами брандмауэра, если таковые имеются.

Проблема с объединением заключается в том, что если вам нужно обновить 1 из этих dll, весь пакет должен быть обновлен... Модель Silverlight не поддерживает кеширование или пропускную способность...

Я не предлагаю использовать комплектацию для Blazor. Я просто говорю, что помимо функции связывания, возможно, команда Silverlight использовала файлы xap, чтобы избежать проблем с брандмауэром. Это только предположение, конечно.

Оставьте «.net» в качестве расширения

Сейчас мы хорошо разбираемся в этом. Поэтому я специально прошу привести конкретные примеры реальных брандмауэров , у которых есть проблемы с этим.

Я думаю, что это не конкретный продукт

Тем не менее, примеры конкретных продуктов и конфигурации, в которых это происходит, не помешали бы.

@SteveSandersonMS Я понял эту часть. Дело в том, что исправление проблемы для одного конкретного антивируса/брандмауэра не будет охватывать все остальные, поскольку мы все знаем, что у каждого из них есть своя собственная эвристика, база данных, настройки для этого. Единственный случай, который может охватывать как правила именования, так и правила подписи для всего, это:

  1. Подпишите сборки как обычно и;
  2. Убедитесь, что имя не находится в черном списке _по умолчанию_

@SteveSandersonMS Я видел несколько проблем при использовании NOD32 от ESET и видел, как активный сканер блокирует автоматическую загрузку некоторых двоичных файлов, на первый взгляд, это библиотеки динамической компоновки, не имеющие цифровой подписи.

Спасибо за информацию @grahamehorner. Вы примерно знаете, какие будут шаги воспроизведения? Если я только что установил NOD32 на (одноразовый) компьютер с Windows, достаточно ли этого, чтобы он не смог открыть https://blazor-demo.github.io/? Или нужна дополнительная конфигурация?

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

Профили блокировки файлов позволяют вам определять определенные типы файлов, которые вы хотите блокировать или отслеживать. Для большей части трафика (включая трафик в вашей внутренней сети) вы захотите заблокировать файлы, которые, как известно, несут угрозы или которые не имеют реального варианта использования для загрузки/выгрузки. В настоящее время к ним относятся пакетные файлы, библиотеки DLL, файлы классов Java, файлы справки, ярлыки Windows (.lnk) и файлы BitTorrent.

@SteveSandersonMS Я жду встречи с нашей группой ИТ-администрирования, которая удаленно управляет NOD32 и его конфигурацией, чтобы узнать, что (если что-либо) они изменили/настроили, поскольку я также получил автоматическое электронное письмо от нашей системы NOD32, в котором говорится, что я могли нарушать корпоративную политику безопасности, загружая/устанавливая ненадежное программное обеспечение. Я отпишусь как/когда узнаю или получу дополнительную информацию.

Мне интересно, могут ли .dll быть заблокированы, если они будут упакованы в .nupkg и распакованы/загружены blazor после загрузки?

В настоящее время к ним относятся пакетные файлы, библиотеки DLL, файлы классов Java, файлы справки, ярлыки Windows (.lnk) и файлы BitTorrent.

Вот что я хочу сказать... Независимо от продукта, это _по умолчанию_ список типов файлов, которые будут заблокированы любым ИТ-администратором в обычной (обычно не связанной с ИТ) компании...

Кстати, если есть кто-то из команды WPF, который работал с .xap, он может четко рассказать любому, с чем они столкнулись, когда выпустили «WPF в браузере» в тот же день и столкнулись с _точно_ такой же проблемой.

Потребовалось некоторое время, прежде чем _все_ антивирусные программы начали доверять этому расширению.

Я была такая же проблема. Тестировал образец внутри корпоративной сети. Сообщается, что файл DLL заблокирован. Это в основном делает невозможным демонстрацию этого коллеге. Получение файлов DLL для разблокировки, вероятно, не является стартовым.

Глядя на официальную страницу конвенций...
http://webassembly.github.io/spec/core/binary/conventions.html

Рекомендуемое расширение для файлов, содержащих модули WebAssembly в двоичном формате, — «.wasm», а рекомендуемый тип носителя — «application/wasm».

Так что, казалось бы, первое, что нужно сделать, это переименовать файлы в .wasm, а если они все же заблокированы, то файрволлом нужно разблокировать.

Я не думаю, что переименовывать файлы в .wasm — хорошая идея. Библиотеки DLL не являются модулями Wasm, это сборки .NET, которые (в настоящее время) интерпретируются средой выполнения Mono Wasm ( подробнее ). Только среда выполнения Mono является модулем Wasm. Тем не менее, я также голосую за переименование DLL на что-то другое из-за брандмауэров, особенно в корпоративных сценариях.

Антивирус AVG версии 18.1.3044 также заблокировал файлы DLL, когда я пытался посетить https://blazor-realworld.azurewebsites.net/

Я не думаю, что переименовывать файлы в .wasm — хорошая идея. Библиотеки DLL не являются модулями Wasm, это сборки .NET, которые (в настоящее время) интерпретируются средой выполнения Mono Wasm (подробнее). Только среда выполнения Mono является модулем Wasm.

Проблема заключается в том, каким будет это «что-то еще» расширение, потому что ни одно из существующих расширений не применимо (полезные нагрузки .NET MSIL, интерпретируемые непосредственно в песочнице браузера, — это совершенно новая концепция безопасности), тогда как wasm уже разрешен корпоративным брандмауэром.

Обработка .xap не может быть хорошей ссылкой с точки зрения безопасности, потому что она обходит изолированную программную среду безопасности браузера, в отличие от wasm.

Да, файлы DLL содержат MSIL, так что это технически верно, они не являются строго бинарными wasm. Но они называются DLL, потому что они названы в честь родных библиотек DLL Win32, хотя они просто используют фрагмент формата PE и в любом случае внутренне отличаются друг от друга. В том же духе wasm является «родным» форматом библиотеки для Webassembly, и по той же причине, по которой имело смысл называть управляемые библиотеки DLL:s (даже если они не имеют ничего общего с родными DLL:s внутри), это может иметь смысл назвать их wasm. С точки зрения безопасности DLL подразумевает «локальное выполнение», тогда как wasm подразумевает «выполнение в браузере». Чтобы соответствовать формату wasm, возможно, сборку .NET можно было бы внедрить как данные, чтобы сделать ее действительной wasm с волшебной начальной строкой и всем остальным.

Идея здесь в том, что существует аналог: wasm для MSIL — это то же самое, что PE для MSIL: формат контейнера-оболочки. Прецедент:

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

Двоичный формат .NET основан на формате файлов Windows PE. На самом деле библиотеки классов .NET являются совместимыми с Windows PE и на первый взгляд кажутся библиотеками динамической компоновки Windows (DLL) или исполняемыми файлами приложений (EXE). Это очень полезная характеристика в Windows, где они могут маскироваться под собственные исполняемые двоичные файлы и получать некоторые из тех же действий (например, загрузка ОС, инструменты PE).

Если модель Blazor не работает на 100 % с существующими брандмауэрами, она практически не работает. Он должен легко проходить через все брандмауэры, как и Javascript. Если бы я был администратором брандмауэра, я не уверен, что хотел бы добавить новую запись в белый список для каждого нового языка, который имеет свой собственный формат IL.

Если модель Blazor не работает на 100 % с существующими брандмауэрами, она практически не работает.

@SteveSandersonMS извините, если вы ответили на этот вопрос раньше, но вы предполагаете, что это разрешимо?

Конечно! При необходимости мы изменим либо URL-адреса, либо формат контента.

было бы здорово, если бы это могло стать приоритетом для следующей вехи. Действительно рассеет опасения людей, что это остановит шоу из-за потенциальных корпоративных блокировок безопасности.

@JonnyGibson Как упоминал Стив ранее, мы планируем решить эту проблему, но в духе того, что Blazor является экспериментальным проектом, мы сейчас отдаем приоритет работе, которая менее понятна. Мы почти уверены, что знаем, как решить эту проблему.

Вот еще один пример:
blazor antivirus

Возможно, решением было бы позволить разработчику определить расширение для приложения, пока брандмауэры и AV не добавят поддержку в белый список для любого расширения, которое будет выбрано.

Что касается моего предыдущего комментария о разрешении разработчику определять расширение, это также позволит разработчикам создавать приложения с различными расширениями для проверки поведения брандмауэра и антивируса.

@jonparker @torhovland мне кажется, что в отличие от определения расширений, которые могут или не могут быть заблокированы, нам нужно найти способ, который гарантирует, что они никогда не будут заблокированы. Никто не собирается использовать фреймворк, который приведет к блокировке веб-сайта при некоторых (весьма вероятных) сценариях.

Идея удалить расширение кажется разумной и должна быть опробована как можно скорее. Я не видел каких-либо других поднятых вопросов, которые были бы так близки к тому, чтобы стать демонстратором.

Идея удалить расширение кажется разумной и должна быть опробована как можно скорее.

Чтобы протестировать любое исправление, мы должны иметь возможность воспроизвести или, по крайней мере, исследовать как можно больше проблемных сред. Чтобы помочь нам в этом, продолжайте предоставлять сведения о своих средах, в которых возникают проблемы с блокировкой приложений Blazor. Спасибо всем, кто уже сообщил об этом!

Я не видел каких-либо других поднятых вопросов, которые были бы так близки к тому, чтобы стать демонстратором.

В долгосрочной перспективе мы не слишком обеспокоены этой проблемой. Мы вполне уверены, что сможем решить эту проблему с помощью некоторой формы упаковки или преобразования приложения. Но мы откладываем разработку решения до тех пор, пока у нас не будет больше данных о конкретных проблемах.

WebSense — это инструмент, который моя корпоративная сеть использует для управления доступом в Интернет. Я почти уверен, что проблема, блокирующая Blazor, - это просто их явная блокировка загрузки исполняемого файла.
https://www.websense.com/content/support/library/web/hosted/admin_guide/exten_block.aspx

Похоже, AVG блокирует мой проект blazor. https://files.gitter.im/aspnet/Blazor/Oc8w/image.png
blazor antivirus

Я могу подтвердить, что у меня также был опыт блокировки моего веб-сайта AVG. Мой друг не мог получить доступ к веб-сайту, не отключив AVG. насколько я знаю, он использовал настройки антивируса по умолчанию.

Расширение DLL не проблема... С компиляцией AOT в работах библиотеки DLL не будут распространяться, поскольку я понимаю, что библиотеки DLL используются для более быстрого цикла разработки. Не тратьте на это время, заставьте AOT работать, это цель.

Ну... #897 был дубликатом.

Это была моя ошибка
image

возможно, мы можем установить расширение в качестве параметра в UpdateIndex, где мы получим его из командной строки (по умолчанию «dll»): https://github.com/aspnet/Blazor/blob/dev/src/Microsoft.AspNetCore.Blazor .Build/Core/IndexHtmlWriter.cs

Если я отправлю PR по этому поводу, будет ли это рассмотрено?

Пожалуйста, исправьте эту проблему, это единственный элемент, который мешает мне протестировать это на предприятии.

Предложение быстрого исправления, если вы используете IIS с модулем перезаписи URL:

  • вы можете изменить в выводе все файлы ".*.dll" на .wasmnet или что-то еще. Он отредактирует содержимое тега сценария (https://docs.microsoft.com/en-us/iis/extensions/url-rewrite -module/создание-исходящих-правил-для-url-модуля перезаписи)
  • перепишите это расширение в dll, чтобы хорошие файлы отправлялись в браузер (или переименуйте файлы dll после развертывания)

вы могли бы сделать это с ядром .net https://docs.microsoft.com/fr-fr/aspnet/core/fundamentals/url-rewriting?view=aspnetcore-2.1&tabs=aspnetcore2x

Еще одна идея: я отмечаю, что большинство этих брандмауэров и продуктов безопасности не блокируют файлы .zip. Фактически, много раз, пытаясь загрузить файл .dll, где я заблокирован в какой-либо корпоративной сети, я замечаю, что версия .zip того же файла почти всегда проходит блокировку.

Таким образом, мы могли бы просто упаковать MyLib.dll как MyLib.zip (содержащий один файл MyLib.dll внутри zip). Проблема в том, что браузер изначально будет быстрее распаковывать содержимое файлов по сравнению с тем, если бы это был WASM/MONO, использующий какую-либо сборку .NET для распаковки содержимого сжатого архива. При распаковке будет замедление как минимум в 2-3 раза.

Но есть решение: мы можем упаковать файл MyLib.dll как MyLib.zip с нулевым сжатием, а затем предоставить сжатие файла веб-серверу (используя любые форматы сжатия, поддерживаемые клиентским браузером при запросе файла). Когда браузер загружает этот файл, он изначально распаковывает полученный контент, прежде чем попадет в Mono/WebAssembly. Таким образом, среде выполнения Mono нужно будет просто распаковать файл .zip (который на данный момент является исходным несжатым zip-архивом).

Надеюсь никого не смутило вышеизложенное. Я просто предлагаю использовать .zip в качестве формата несжатого контейнера; затем позвольте веб-браузеру и веб-серверу обрабатывать сжатие и распаковку так, как они обычно делают для любого запрошенного файла. Чтобы привести конкретный пример:

  1. mscorlib.dll размером 2 МБ архивируется в файл mscorlib.zip размером 2 МБ (обратите внимание, что мы установили для сжатия значение NONE).
  2. Веб-браузер запрашивает mscorlib.zip (отправляя обычные заголовки Accept-Encoding с поддерживаемыми методами сжатия).
  3. Веб-сервер сжимает содержимое mscorlib.zip до 700 МБ и отправляет его на сервер, поэтому размер пакета будет таким же, как сегодня)
  4. Веб-браузер (Chrome или Edge и т. д.) изначально распаковывает содержимое, а среда выполнения Mono получает исходный файл mscorlib.zip размером 2 МБ, который WASM Mono может очень быстро распаковать в исходную .dll, поскольку в нем не используется какое-либо внутреннее сжатие. этот оригинальный zip-архив.

Так что это просто еще одно предложение для включения в ведро. Мои мысли о других предложенных идеях:

  • Я надеюсь, что будет достаточно просто удалить расширение, поскольку MyLib.dll становится MyLib или более ранним предложением MyLib_dll.
  • Я также согласен с тем, что должна быть возможность «упаковать» сборку как данные внутри файла .wasm (но все же внутри в формате IL) таким же образом, как сборки .NET используют формат PE и получили .dll в качестве расширения. Таким образом, у нас мог бы быть MyLib.wasm, который внутренне хранил бы IL как данные. Единственный недостаток, который я здесь вижу, заключается в том, что когда у нас есть реальная компиляция AOT, может быть трудно визуально определить, содержит ли файл .wasm код, скомпилированный IL или Natively (WASM).

.dll будет правильным расширением и должно быть сохранено по умолчанию. Скрытие назначения файла путем изменения расширения на .zip не является оптимальным решением, так как это приводит к путанице. Вероятно, было бы лучше вообще не использовать расширение и назвать файл как somedllname_v1_0_0_4321_ab5e8d5b97d141aca3c54776e82d2355
(то есть имя проекта, версия файла и хэш SHA-256)

Более серьезная проблема заключается в том, что современные антивирусные сканеры (эвристически) обнаруживают подпрограммы, которые извлекают дополнительный код. Реального решения этой проблемы не существует до тех пор, пока поставщики AV не сделают адаптацию для поддержки .wasm . Так что лучше свяжитесь с поставщиками AV и сообщите об ошибке, чтобы они могли ее исправить.

Я на 100% согласен с @MovGP0. Поставщики AV должны обновить свое программное обеспечение. Они используют разные алгоритмы для обнаружения вредоносного кода, и эти алгоритмы должны быть достаточно умными, чтобы блокировать вирусы и разрешать легитимное программное обеспечение. Я считаю, что каждый современный AV-сканер проверяет содержимое каждого архива, zip, 7z, rar и т. д. Изменение расширения имени файла или псевдоупаковка не является долгосрочным решением.

Просто кажется глупым, что это проблема, потому что блокировка связана с устаревшими причинами. Существует два сценария использования Blazor для библиотек DLL:

  1. Работающий IL-код интерпретируется в браузере: в этом случае IL-код в DLL представляет собой просто необработанные ДАННЫЕ и представляет собой не большую угрозу, чем файл JPG или XML, который обрабатывает браузер. Это связано с тем, что загруженный IL полностью интерпретируется. Продукт безопасности имеет к этому не больше отношения, чем к любому файлу GIF, XML или TXT, который обрабатывает веб-сайт.

или (в будущем)

  1. Код IL скомпилировал AOT в .wasm. В этом случае код IL будет генерировать .WASM, и единственная проблема должна заключаться в том, как эти продукты безопасности обрабатывают файлы .wasm.

Еще один момент, касающийся «упаковки», заключается в том, что это именно то, что многие фреймворки javascript уже делают для уменьшения количества запросов к серверу: некоторые скрипты на стороне сервера динамически объединяют несколько отдельных скриптов в один файл. Лично я хотел бы увидеть какой-нибудь интеллектуальный обработчик на стороне сервера, который мог бы динамически комбинировать 20 небольших (5k) DLL, чтобы уменьшить первоначальные запросы к серверу и позволить мне, как разработчику, иметь некоторый контроль над этим во время загрузки страницы.

Но я думаю, что команда Blazor уже получила наши отзывы и сделает все, что разумно, и/или предоставит варианты.

Я укажу, что точка зрения, что мы должны ждать, пока все обновят свои продукты безопасности, не работает, потому что это не просто продукты , это существующие крупные компании, которые реально не будут вносить изменения в конфигурацию своей сетевой инфраструктуры. Это действительно повредит использованию Blazor, потому что речь идет не только об AV-сканерах, но и о попытке сообщить персоналу ИТ-отдела крупной компании, такой как News Corporation или Bhp Billiton, о внесении изменений в конфигурацию сети. Культура меняется, но в этих отделах по-прежнему много сотрудников, которым просто будет все равно (или они будут активно улыбаться), если это вызовет проблемы с Blazor ☹.

  • Я считаю, что каждый современный AV-сканер проверяет содержимое каждого архива, zip, 7z, rar и т. д.
    Мой личный опыт за последнее десятилетие показывает, что в формате .zip обычно все в порядке. Обычно вещи блокируются, если файлы имеют расширение .exe или .dll. В zip-архиве большинство продуктов будут блокировать zip-файл только в том случае, если они обнаружат фактическую известную сигнатуру вредоносного ПО в zip-архиве (а не только потому, что внутри есть .dll). Но я признаю, что все продукты разные, поэтому здесь нет никаких гарантий.
    От: [email protected]
    Отправлено: 6 июня 2018 г., 5:38
    Кому: aspnet/Blazor [email protected]
    Копия: jiggyswift [email protected] ; Комментарий [email protected]
    Тема: Re: [aspnet/Blazor] Рассмотрите возможность изменения URL-адресов сборок .NET, чтобы они не заканчивались на .dll (#172)

Я на 100% согласен с @MovGP0 https://github.com/MovGP0 . Поставщики AV должны обновить свое программное обеспечение. Они используют разные алгоритмы для обнаружения вредоносного кода, и эти алгоритмы должны быть достаточно умными, чтобы блокировать вирусы и разрешать легитимное программное обеспечение. Я считаю, что каждый современный AV-сканер проверяет содержимое каждого архива, zip, 7z, rar и т. д. Изменение расширения имени файла или псевдоупаковка не является долгосрочным решением.


Вы получаете это, потому что вы прокомментировали.
Ответьте на это письмо напрямую, просмотрите его на GitHub https://github.com/aspnet/Blazor/issues/172#issuecomment-394834055 или отключите ветку https://github.com/notifications/unsubscribe-auth/AmF6aIkiXWAVe282A0YSh_a7bgmGPGN7ks5t5t4OgaJpZM4SUpej .

Два человека из группы корпоративной безопасности подошли ко мне после того, как я просмотрел пример сайта mono wasm , который загружает hello.exe . Я думаю, что это было подхвачено «Symantec Endpoint Protection».

Спасибо, Гарри. Дали ли вам время упаковать все в коробку, прежде чем выпроводить за дверь? Лучшая история.

От: Гарри Макинтайр[email protected]
Отправлено: 7 июня 2018 г., 20:36
Кому: aspnet/Blazor [email protected]
Копия: jiggyswift [email protected] ; Комментарий [email protected]
Тема: Re: [aspnet/Blazor] Рассмотрите возможность изменения URL-адресов сборок .NET, чтобы они не заканчивались на .dll (#172)

Два человека из отдела корпоративной безопасности подошли к моему столу после того, как я просмотрел пример сайта mono wasm https://nam01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.hipbyte.com .


Вы получаете это, потому что вы прокомментировали.
Ответьте на это письмо напрямую, просмотрите его на GitHub https://nam01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Faspnet%2FBlazor%2Fissues%2F172%23issuecomment-395374377&data=02 % 7C01% 7C% 7Cf21af207f881447e8d5d08d5cc627621% 7C84df9e7fe9f640afb435aaaaaaaaaaaa% 7C1% 7C0% 7C636639645609018105 & SData = A9rl39HzRP7w9mzRkqPKrG4zsHJKkVIy2jwJ0e9nc3g% 3D & зарезервирован = 0 , или приглушить нить https://nam01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub. ком% 2Fnotifications% 2Funsubscribe-AUTH% 2FAmF6aG9lvmy2g93BQQmI-5mbrGICanCxks5t6QIPgaJpZM4SUpej & данные = 02% 7C01% 7C% 7Cf21af207f881447e8d5d08d5cc627621% 7C84df9e7fe9f640afb435aaaaaaaaaaaa% 7C1% 7C0% 7C636639645609018105 & SData = yZhLQXXqqp0hLEtD3mTowdoI4EpBu5qNNR0UI4tZDm8% 3D & зарезервирован = 0 .

Может быть полезно:

Из 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

Система может проверять до трех уровней вложенных файлов под самым внешним файлом архива (уровень 0), если файл является архивом (например, архивные файлы .zip или .rar). Вы можете проверять архивные файлы размером до Максимальный размер файла для хранения настроек расширенного контроля доступа.
Если какой-либо отдельный файл соответствует правилу файла с действием блокировки, система блокирует весь архив, а не только отдельный файл. Система также может блокировать архивы, которые превышают заданный уровень вложенности или содержимое которых зашифровано или не может быть проверено иным образом.

Другая ссылка (прокрутите до «Функции типов файлов»):
https://supportcenter.checkpoint.com/supportcenter/portal?eventSubmit_doGoviewsolutiondetails=&solutionid=sk105318&js_peid=P-14d3e69bf07-10000

Я нашел обходной путь, описанный здесь: https://remibou.github.io/Change-Blazor-DLL-extension-with-ASPNET-Core/. Это может не помочь для каждого случая и AV, но это отправная точка.

@RemiBou , чувак... это круто :) Хорошая идея использовать URLRewrite для этого! 👍

Что касается замены расширения dll, я хотел бы настаивать на расширении wasm (даже если это технически неправильно), потому что страницы github, cloudflare и, вероятно, большинство CDN уже обрабатывают сжатие для «application/wasm», но не для «application/ octet-stream», поэтому приложение Blazor по умолчанию весит около 3,2 МБ, имея только файл mono.wasm, сжатый с помощью brotli. В конце концов, библиотеки Blazor в любом случае уже будут wasm, когда компиляция AOT будет на месте, не так ли?

Я только что проверил трюк @RemiBou , используя расширение wasm и переименовав dll перед отправкой их на gh-страницы, и теперь холодное обновление составляет 1,9 МБ, как и должно быть: отлично! Спасибо @RemiBou!!

Но мой антивирус Avast сначала сошел с ума, потому что все эти поддельные файлы wasm были заражены DRep, и я получил то же окно предупреждения, что и @jorisvergeer . После быстрого поиска я думаю, что проблема может быть решена путем загрузки фальшивых библиотек wasm с сайта с лучшей репутацией, чем у моего недавно созданного поддомена, но сейчас я просто предполагаю.

Пример того, как клиентское приложение blazor выходит из строя внутри корпорации, см. в прикрепленном файле PDF. Это неприятная проблема с точки зрения разработчика, поскольку мы находимся во власти чего-то, что находится вне нашего контроля.

Было бы здорово, если бы мы могли попробовать предварительно скомпилировать dll в файлы wasm, а затем загрузить их вместо этого. (надеюсь, это сработает)

403forbidden.pdf

Запрещенное сообщение 403 в предыдущем посте было сгенерировано нашим брандмауэром zscaler.

Каков наилучший способ сделать эту проблему более заметной и приоритетной, чтобы ее рассмотрели в будущем спринте?

@rynowak @SteveSandersonMS @mkArtakMSFT Нам нужно убедиться, что у нас есть решение для этого, поэтому переходим к вехе blazor-wasm.

Я создал документ, описывающий решение, которое я использую прямо сейчас, чтобы обойти dll, заблокированные zScaler.

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

Я подозреваю, что нам, возможно, придется рассмотреть аналогичное решение для файлов WASM, поскольку есть вероятность, что производителям брандмауэров может потребоваться некоторое время, чтобы признать файлы wasm безопасными в течение следующих нескольких лет.

Я действительно с нетерпением жду PublishSingleFile/PublishTrimmed/TargetFramework=wasm, поэтому у нас есть только один относительно небольшой файл для управления в сервис-воркере.

Твои мысли?

Спасибо Дэн!
Я благодарен, что это привлекает внимание.
Я разместил свое временное решение на https://github.com/aspnet/AspNetCore/issues/5477.
Надеюсь, это может помочь в некотором роде.
Джо

От: Дэниел Рот, [email protected]
Отправлено: пятница, 11 октября 2019 г., 10:33
Кому: aspnet/AspNetCore [email protected]
Копия: jucchytil [email protected] ; Комментарий [email protected]
Тема: Re: [aspnet/AspNetCore] Рассмотрите возможность изменения URL-адресов сборок .NET, чтобы они не заканчивались на .dll (#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 & зарезервирован = 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 & зарезервирован = 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 . Нам нужно убедиться, что у нас есть решение для перехода на этот s или waz-blaz, поэтому мы должны перенести вехи.


Вы получаете это, потому что вы прокомментировали.
Ответьте на это письмо напрямую, просмотрите его на GitHub https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Faspnet%2FAspNetCore%2Fissues%2F5477%3Femail_source%3Dnotifications%26email_token % 3DAEBYRE4UUUJDL3KHNPOYYJ3QOCMCVA5CNFSM4GK4V5L2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEBALS2Y% 23issuecomment-541112683 & данные = 02% 7C01% 7C% 7Cecf83fca357f4abe690d08d74e604c75% 7C84df9e7fe9f640afb435aaaaaaaaaaaa% 7C1% 7C0% 7C637064047810633312 & SData = qxqf5LstFcAUsEgSImIxMMOw33sNOgku09qw% 2FJp3Z18% 3D & зарезервирован = 0 , или отказаться от https://eur01.safelinks.protection.outlook.com/?url= HTTPS% 3A% 2F% 2Fgithub.com% 2Fnotifications% 2Funsubscribe-AUTH% 2FAEBYRE2MQUF65CHXQD54OWDQOCMCVANCNFSM4GK4V5LQ & данные = 02% 7C01% 7C% 7Cecf83fca357f4abe690d08d74e604c75% 7C84df9e7fe9f640afb435aaaaaaaaaaaa% 7C1% 7C0% 7C637064047810643323 & SData = yx154tNWkGvXlXbVJNjvswed9hG0zr91HFqIhMVLCfo% 3D & зарезервирован = 0 .

Просто выполняю запрос Дэниела Рота в своем блоге, который попросил меня опубликовать здесь имя моего провайдера веб-хостинга, чтобы вы могли проверить эту проблему. Комментарий к блогу можно найти здесь: https://devblogs.microsoft.com/aspnet/asp-net-core-and-blazor-updates-in-net-core-3-0/#comment-955 .

Хостинг-провайдером, о котором идет речь, является infinityfree.net. Они бесплатны, так что попробовать будет легко!

По сути, при загрузке сайта их сервер удалит около половины DLL из папки _framework\bin\. Сначала я подумал, что что-то пошло не так, и несколько раз пытался загрузить недостающие файлы. В конце концов они как бы «прилипли», как будто их сервер отказался от проверки новых файлов на вирусы, а через день все еще там (хотя, возможно, их в конце концов заметут).

В любом случае, пожалуйста, добавьте мой голос за подходящее решение, такое как переименование DLL.

@ andyste1 Спасибо за информацию. Вы проверили и подтвердили, что если файлы были переименованы, они не удаляются? Если хостинговая компания делает это на основе содержания, а не имени, то переименование не обязательно будет решением.

Переименование может не сильно помочь — для этого уже есть обходные пути.
Для меня проблема заключается в формате PE файла - антивирусная программа Sophos блокирует файлы каждый раз, когда я ее переименовываю, поскольку она также сканировала содержимое файла. К счастью, Sophos позволяет загружать файлы DLL (формат PE) через HTTPS (не HTTP).

@lertoo мы обсуждаем потенциальное удаление метаданных PE из сборок для уменьшения размера, но это также может помочь в решении этой проблемы.

Версия этой проблемы для антивируса Norton: https://forums.asp.net/t/2161027.aspx

Очень вероятно, что не только расширение файла, но и заголовок файла вызовет проблему с некоторым параноидальным программным обеспечением. Обфускация не поможет, когда проблема связана с заголовком, за исключением того, что JS, который запускает виртуальную машину Blazor, не заменяет их вручную в памяти каким-либо образом, но это долгий путь.

Мой текущий обходной путь заключается в предоставлении версии каждой библиотеки DLL в кодировке Base64 в моем конвейере CI/CD, использовании сервисного работника для обнаружения 403 от брандмауэра для DLL, загрузке версии текстового файла DLL в формате Base64 и преобразовании Base64 обратно в DLL в сервис-воркере перед кэшированием в браузере.

Было бы любопытно посмотреть, исчезнет ли проблема, если бы мы могли просто преобразовать библиотеки DLL в файлы WASM, поскольку файл WASM, кажется, проходит нормально для меня, но это может быть верно не для всех брандмауэров.

Еще одно ложное срабатывание Blazor WebAssembly:

image

Я ждал решения этой проблемы с начала 2018 года :) Я люблю / любил blazor, но этот казался потенциальной остановкой шоу, если библиотеки нельзя было изменить.

@JonnyGibson Спасибо за терпение! Мы работаем над тем, чтобы найти какое-то решение этой проблемы для предстоящего выпуска в мае этого года.

Это довольно длинная проблема, поэтому я попытался обобщить все это здесь:

Антивирус

  • NOD32 (ЕСЕТ)
  • СРЕДНЯЯ версия 18.1.3044 (+3)
  • Сканирование веб-трафика
  • Аваст (+3)
  • Защита конечных точек Symantec
  • zScaler

Переименовать предложения

  • .блазор (+35)
  • .бин (+3)
  • .lib
  • .иласм (+6)
  • .нет (+14)
  • .васм (-8)
  • [Пользовательский] (+1)
  • [Никто]

Люди используют обходной путь

  • Переименовать расширение
  • BASE64 кодирует библиотеки DLL

Главные примечания

  • .DLL и .EXE — это расширения, которые многие предприятия блокируют на уровне брандмауэра в соответствии с политикой.
  • Были сообщения о переименованных расширениях, о которых также сообщает антивирусное программное обеспечение.

@мкАртак
Вы также можете включить zScaler где-нибудь в свою сводку, так как именно он блокировал мои загрузки.

Один из подходов к тестированию состоит в том, чтобы преобразовать все исполняемые файлы в файлы wasm, поскольку я не помню, чтобы у zScaler были проблемы с ними.

Я временно перешел на Angular, пока blazor на стороне клиента не решит эти проблемы и не улучшит начальное время загрузки.

Я потратил много времени, пытаясь заставить работать blazor на стороне клиента, и решил подождать, пока платформа еще немного созреет.
https://github.com/jucchytil/CSBNotes/blob/master/Notes.md

@javiercn давайте проследим за работой по переименованию расширений файлов здесь, и я отправлю отдельный вопрос, чтобы связаться с антивирусными поставщиками по этому поводу.

ТРЕБУЕТСЯ ДЕЙСТВИЕ

🎫
Я только что создал новый выпуск , в котором мы попытаемся собрать все конкретное программное обеспечение, блокирующее приложения Blazor WASM. Предоставьте информацию, относящуюся к вашему делу, как описано здесь: https://github.com/dotnet/aspnetcore/issues/19552 .

Кстати, CDN, такие как страницы github и cloudflare, сжимают активы с расширением wasm из коробки, в то время как они обслуживают несжатую версию для файлов dll. Если я правильно помню, Azure CDN должен вести себя так же.

Мы испытали это сегодня. Снятие ограничения на загрузку DLL не будет вариантом. Маловероятно, что не только мы, но и наши клиенты снимут это ограничение, поэтому нам действительно нужно исправить это, иначе наш проект Blazor будет мертв в воде (работодатель не хочет использовать серверную часть).

Я считаю, что наш брандмауэр — это Пало-Альто.

@mrpmorris , не могли бы вы поместить подробности в https://github.com/dotnet/aspnetcore/issues/19552 , поскольку именно здесь мы собираем их, чтобы мы могли привлечь поставщиков.

@mrpmorris решило ли изменение расширения проблему в вашем сценарии?

Привет @javiercn

Я только что обновил эту проблему. Похоже, переход на https у нас сработал, что логично. Однако мы не можем быть уверены, что наши клиенты хотят иметь такое же исключение.

Я буду рад проверить вариант переименования. У вас есть ссылка на инструкции о том, как заставить Blazor работать с расширениями .wasm или чем-то еще? На данный момент я просто щелкаю правой кнопкой мыши свой проект веб-сервера и выбираю Publish прямо в веб-приложение Azure.

@mrpmorris Вы можете проверить инструкции здесь
https://github.com/dotnet/aspnetcore/pull/19558#issuecomment-594461263

@mrpmorris Обратите внимание, что эти инструкции применимы только к нашим последним сборкам 3.2.0-preview2, и обновление с 3.2.0-preview1 потребует некоторой работы с использованием шагов, которые мы еще не опубликовали. Возможно, вы захотите подождать, пока мы не выпустим его позже в этом месяце.

@ danroth27 Не думаю, что вы еще опубликовали превью 2... :)

Вы можете попробовать это с ночными сборками, следуя инструкциям здесь , если вы решите это сделать.

Я бы порекомендовал вам очистить кеши пакетов nuget до и после, если вы решите это сделать. Учтите, что очистка кешей повлияет на всю машину (все приложения на этой машине).

Я подожду выхода сборки p2 и тогда попробую. Спасибо!

@mrpmorris 3.2 Preview 2 уже доступен! У вас работают шаги, предложенные в https://github.com/dotnet/aspnetcore/pull/19558#issuecomment -594461263 для переименования файлов?

Привет народ!

В недавнем выпуске Blazor WebAssembly 3.2 Preview 2 мы внесли некоторые изменения, чтобы упростить переименование DLL-файлов в вашем приложении, чтобы устранить прокси-серверы, брандмауэры и антивирусное программное обеспечение, мешающее приложениям Blazor WebAssembly. Мы хотели бы, чтобы люди, столкнувшиеся с этой проблемой, опробовали приведенные ниже шаги на опубликованных выходных данных ваших приложений Blazor WebAssembly (автономных или размещенных на ASP.NET Core) и посмотрели, поможет ли это:

Окна

  • Откройте приглашение PowerShell в каталоге wwwroot вашего опубликованного вывода (например, в yourapp\bin\Release\netstandard2.1\publish\wwwroot
  • Выполните следующие две строки:
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

Линукс / макОС

  • Откройте терминал в каталоге wwwroot вашего опубликованного вывода (например, в yourapp/bin/Release/netstandard2.1/publish/wwwroot
  • Выполните следующие две строки:
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

Пожалуйста, попробуйте эти шаги и дайте нам знать, как это происходит. Если вы все еще сталкиваетесь с проблемами, пожалуйста, сообщите нам! У нас есть несколько других идей, что можно попробовать, если это необходимо.

Спасибо!

Это сработало для меня. Хотя мне пришлось настроить шаг публикации в Azure DevOps и деактивировать, чтобы в конце он создавал ZIP-файл.

В моем случае:

- 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 В каком смысле это сработало? В том смысле, что вы убедительно заметили, что ваш сайт раньше не работал (из-за какого-то антивируса или брандмауэра), и смена URL-адресов это исправила? Если это так, не могли бы вы опубликовать подробную информацию о том, какие антивирусы/брандмауэры/и т. д. раньше вызывали у вас проблемы, по адресу https://github.com/dotnet/aspnetcore/issues/19552? Спасибо!

@SteveSandersonMS хорошо, раньше у меня был обходной путь с помощью переписчика. После обновления до версии 3.2 превью 2 эта перестала работать и приложение снова заблокировали. С вышеперечисленным он снова работает.

К сожалению, я не могу вам сказать, какой брандмауэр у нас в сети и я не думаю, что Антивирус (McAffee) имеет здесь влияние, так как работа локально работала без проблем.

У кого-то в моем офисе был положительный результат на COVID-19, поэтому, похоже, мой офис будет закрыт на пару недель, а это значит, что я не буду получать доступ к файлам через их брандмауэр. Извиняюсь.

@mrpmorris Нет проблем. Оставайтесь в безопасности!

Привет народ!

В недавнем выпуске Blazor WebAssembly 3.2 Preview 2 мы внесли некоторые изменения, чтобы упростить переименование DLL-файлов в вашем приложении, чтобы устранить прокси-серверы, брандмауэры и антивирусное программное обеспечение, мешающее приложениям Blazor WebAssembly. Мы хотели бы, чтобы люди, столкнувшиеся с этой проблемой, опробовали приведенные ниже шаги на _опубликованном выходе_ ваших приложений Blazor WebAssembly (автономных или размещенных на ASP.NET Core) и посмотрели, поможет ли это:

@danroth27

Я запустил сценарий (я разрабатываю в Windows, но развертываю из среды Linux в другую среду Linux, поэтому я использовал предоставленный сценарий Linux), и он развернулся с новыми именами, и при загрузке страницы кажется, что загружаются файлы с новыми расширениями все в порядке, и приложение работает. В нашем случае Avast больше не помечает приложение и не блокирует загрузки.

Из-за ситуации с пандемией пройдет некоторое время, прежде чем мы проверим ситуацию с корпоративным брандмауэром.

Это достаточно простой шаг для добавления в сборку, и, похоже, у него нет недостатков, поэтому мы начнем его использовать.

Спасибо!

@ danroth27 danroth27 в какой-то момент это будет по умолчанию, поэтому нам не нужно делать этот шаг? Есть ли какая-то причина не просто переходить на .bin или не использовать тип файла по умолчанию вместо того, чтобы требовать, чтобы все делали это, если есть общая проблема с типом файла .dll?

Есть ли шанс, что средство проверки на вирусы проверит файл, даже если это не «.dll», чтобы определить, является ли он файлом dll?

@danroth27 @SteveSandersonMS
Я получил много ошибок в консоли браузера, связанных с нарушением целостности или не найденным файлом:

_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.

Я попробовал шаги, упомянутые @danroth27, как в Windows, так и в контейнере Linux Docker с теми же результатами.

Использование 3.2 Предварительный просмотр 4.

@radderz Эта проблема не затрагивает все среды — она специфична для определенных сред и часто основана на политике. Если мы переключимся на другое расширение файла, нет гарантии, что это сработает для всех. Таким образом, вместо того, чтобы менять значение по умолчанию для всех, мы реализуем план, согласно которому клиенты, столкнувшиеся с этой проблемой, могут сами контролировать расширения файлов, используя описанную выше технику.

Вполне возможно, что антивирусное программное обеспечение / прокси / брандмауэры могут выполнять более глубокую проверку файлов, а не просто смотреть на расширение файла. До сих пор мы не слышали, чтобы кто-то был заблокирован этим. Если это станет проблемой, мы предпримем другие меры.

@mihaimyh Похоже, у вас неправильно настроена политика безопасности контента?

@mihaimyh Похоже, у вас неправильно настроена политика безопасности контента?

@ danroth27 Не могли бы вы быть более точным? О какой политике безопасности вы говорите? Я получил эти ошибки даже в среде разработки, где я считаю, что политика безопасности не реализована.

@mihaimyh Извините, кажется, я перепутал политику безопасности контента с целостностью подресурсов . Похоже, что браузер пытается обеспечить соответствие хэшей загруженных ресурсов хэшам, указанным в разметке через атрибут integrity , но атрибут integrity отсутствует. Это также может быть связано с тем, как Blazor загружает и кэширует ресурсы приложения, который использует аналогичную стратегию на основе хэшей для проверки того, изменились ли файлы.

@mihaimyh Извините, кажется, я перепутал политику безопасности контента с целостностью подресурсов . Похоже, что браузер пытается обеспечить соответствие хэшей загруженных ресурсов хэшам, указанным в разметке через атрибут integrity , но атрибут integrity отсутствует. Это также может быть связано с тем, как Blazor загружает и кэширует ресурсы приложения, который использует аналогичную стратегию на основе хэшей для проверки того, изменились ли файлы.

@ danroth27 Хорошо, и я думаю, что смогу обойти проверку целостности, добавив

<BlazorCacheBootResources>false</BlazorCacheBootResources>

к моим файлам .csproj, но я все еще получаю событие 404 с отключенной проверкой целостности.

@mihaimyh Если вы можете воспроизвести это надежно, я бы предложил открыть новую проблему для этой проблемы, поскольку она, похоже, не связана с проблемой расширений файлов. Это облегчит привлечение нужных людей.

Убедитесь, что вы добавили что-то подобное в свой скрипт «dll rename» .

# 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"

В большинстве случаев предварительно сжатый blazor.boot.json будет загружаться вместо «исправленного» blazor.boot.json , выполняющего запросы к файлам «.dll» , а не к файлам «.bin» , что вызывает проблему целостности.

Таким образом, вам нужно либо удалить сжатые файлы json, либо повторно сжать blazor.boot.json, но я не думаю, что стоит проходить через эту проблему.

Надеюсь, однажды все это сможет обработать фреймворк с флагом в csproj, например

<BlazorBinariesExtension>.bin</BlazorBinariesExtension>

Привет народ. На данный момент мы задокументировали стратегию, которую рекомендуем для изменения расширения файла для опубликованных сборок .NET с помощью скриптов. Я думаю, что предложение @stavroskasidis по-прежнему является хорошим, чтобы предоставить простой встроенный способ сделать это, поэтому я открыл https://github.com/dotnet/aspnetcore/issues/21489 , чтобы отслеживать предложение. На этом, я думаю, мы готовы закрыть этот вопрос. Спасибо всем за предоставленные подробные отзывы!

Из того, что я вижу, переименование из .dll в .bin должно быть выполнено также в wwwroot/service-worker-assets.js и удалено или повторно сжато wwwroot/service-worker-assets.js.br и wwwroot/service-worker-assets.js.gz , иначе возникнут проблемы с целостностью консоль браузера.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги