1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/maikebing-practical-aspnetcore

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 50 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 14:32 7fc0cf6

201 пример для ASP.NET Core 2.1 и 2.2 (обновляется почти ежедневно, кроме лета)

Если вы изучаете ASP.NET Core, я слежу за этим Gitter Channel (https://gitter.im/DotNetStudyGroup/aspnetcore).

Добро пожаловать

Цель этого проекта — дать возможность программистам на .NET изучить новый стек ASP.NET Core с нуля прямо из кода. В основе стека ASP.NET Core заложено много возможностей. Не упустите их!

Я настоятельно рекомендую использовать Visual Studio Code (https://code.visualstudio.com/), чтобы поиграть с этими примерами, но это не обязательно. Вы также можете использовать Visual Studio 2017.

Примечание: если у вас возникнут проблемы с загрузкой пакетов или Nuget, попробуйте выполнить следующую команду nuget.exe locals -clear all.

Безопасность

Есть новый раздел, посвящённый всем темам безопасности (1 пример) для ASP.NET Core (https://github.com/dodyg/practical-aspnetcore/tree/master/projects/security).

MVC, SignalR и Blazor

Существуют специальные примеры для ASP.NET Core MVC 2.1 (35 примеров) (https://github.com/dodyg/practical-aspnetcore/tree/master/projects/mvc), ASP.NET Core SignalR 2.1 (0 примеров) (https://github.com/dodyg/practical-aspnetcore/tree/master/projects/signalr) и Blazor (6 примеров) (https://github.com/dodyg/practical-aspnetcore/tree/master/projects/blazor). Остальные проекты здесь предназначены только для ASP.NET Core.

Как запустить эти примеры

Чтобы запустить эти примеры, просто откройте консоль командной строки, перейдите в каждую папку и выполните команду dotnet watch run.

В большинстве примеров здесь используется пакет Microsoft.AspNetCore, который состоит из следующих компонентов:

  Microsoft.AspNetCore.Diagnostics
  Microsoft.AspNetCore.HostFiltering
  Microsoft.AspNetCore.Hosting
  Microsoft.AspNetCore.Routing
  Microsoft.AspNetCore.Server.IISIntegration
  Microsoft.AspNetCore.Server.Kestrel
  Microsoft.AspNetCore.Server.Kestrel.Https
  Microsoft.Extensions.Configuration.CommandLine
  Microsoft.Extensions.Configuration.EnvironmentVariables
  Microsoft.Extensions.Configuration.FileExtensions
  Microsoft.Extensions.Configuration.Json
  Microsoft.Extensions.Configuration.UserSecrets
  Microsoft.Extensions.Logging
  Microsoft.Extensions.Logging.Configuration
  Microsoft.Extensions.Logging.Console
  Microsoft.Extensions.Logging.Debug

Когда примеру требуются пакеты, которых нет в списке, они будут добавлены в файл проекта.

Что нового в ASP.NET Core 2.2 Preview 3 (12)

Все примеры в этом разделе требуют ASP.NET Core 2.2 Preview 3 (2.2.100-preview3-009430). Загрузите его здесь (https://www.microsoft.com/net/download/dotnet-core/2.2).

Используйте IServiceCollection.AddHttpClient, чтобы предоставить HttpClient для ваших классов.

Использование IServiceCollection.AddHttpClient для предоставления интерфейса-реализующих классов

Используйте IServiceCollection.AddHttpClient, чтобы обеспечить реализацию интерфейса HttpClient.

Как скрыть сообщения о состоянии при запуске веб-приложения

Можно скрыть сообщения о статусе при запуске вашего веб-приложения. Это небольшая полезная функция.

Что нового в ASP.NET Core 2.0

В этом разделе будут показаны новые функции ASP.NET Core 2.0. Это хорошее объяснение того, что нового в ASP.NET Core 2.0.

Hello World с Microsoft.AspNetCore.All пакетом

Если вы ориентируетесь на netcoreapp2.0, вы можете использовать метапакет Microsoft.AspNetCore.All, который загружает большинство необходимых пакетов для разработки системы ASP.NET Core/MVC (включая поддержку БД EF).

Он также добавляет следующие пакеты:

Installing Microsoft.IdentityModel.Logging 1.1.4.
Installing Microsoft.IdentityModel.Tokens 5.1.4.
Installing runtime.win-x64.runtime.native.System.Data.SqlClient.sni 4.4.0.
Installing runtime.win-x86.runtime.native.System.Data.SqlClient.sni 4.4.0.
Installing runtime.win-arm64.runtime.native.System.Data.SqlClient.sni 4.4.0.
Installing System.IdentityModel.Tokens.Jwt 5.1.4.
Installing System.Text.Encoding.CodePages 4.4.0.
Installing runtime.native.System.Data.SqlClient.sni 4.4.0.
Installing Microsoft.Azure.KeyVault.WebKey 2.0.7.
Installing Microsoft.Rest.ClientRuntime.Azure 3.3.7.
Installing Microsoft.Rest.ClientRuntime 2.3.8.
Installing SQLitePCLRaw.lib.e_sqlite3.v110_xp 1.1.7.
Installing SQLitePCLRaw.lib.e_sqlite3.linux 1.1.7.
Installing SQLitePCLRaw.lib.e_sqlite3.osx 1.1.7.
Installing SQLitePCLRaw.provider.e_sqlite3.netstandard11 1.1.7.
Installing Microsoft.IdentityModel.Protocols 2.1.4.
Installing Microsoft.NETCore.App 2.0.0-preview2-25407-01.
Installing Microsoft.NETCore.DotNetHostPolicy 2.0.0-preview2-25407-01.
Installing Microsoft.NETCore.Platforms 2.0.0-preview2-25405-01.
Installing NETStandard.Library 2.0.0-preview2-25401-01.
Installing Microsoft.NETCore.DotNetHostResolver 2.0.0-preview2-25407-01.
Installing Microsoft.Packaging.Tools 1.0.0-preview2-25401-01.
Installing System.Interactive.Async 3.1.1.
Installing SQLitePCLRaw.core 1.1.7.
Installing Microsoft.IdentityModel.Protocols.OpenIdConnect 2.1.4.
Installing SQLitePCLRaw.bundle_green 1.1.7.
Installing Microsoft.Azure.KeyVault 2.3.2.
Installing Microsoft.IdentityModel.Clients.ActiveDirectory 3.14.1.
Installing WindowsAzure.Storage 8.1.4.
Installing System.Data.SqlClient 4.4.0.
Installing Microsoft.NETCore.DotNetAppHost 2.0.0-preview2-25407-01.

В ASP.NET Core 2.0 это рекомендуемый способ запуска хоста:

public class Program
{
    public static void Main(string[] args)
    {
        BuildWebHost(args).Run();
    }

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .UseEnvironment("Development")
            .Build();
}

Новый способ настройки логирования

Теперь вы настраиваете логирование в Program вместо Startup.Configure через ConfigureLogging.

Фильтрация логирования

Теперь можно настроить, что... Доступные методы в классе Startup

  • Hello World с пользовательским именем класса Startup.

    Вам не обязательно называть свой класс Startup, подойдёт любой допустимый класс C#.

  • Hello World, реагирующий на несколько URL-адресов.

    Настройте приложение так, чтобы оно реагировало на несколько URL.

  • Hello World с несколькими классами Startup.

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

  • Hello World с использованием нескольких классов Startup в зависимости от среды.

    В этом проекте показано, что можно создать несколько классов Startup и выбирать их при старте в зависимости от потребностей и среды (класс Startup должен называться Startup).

  • Hello World с выбором метода Configure на основе среды.

    Проект демонстрирует возможность выбора метода Configure в одном классе Startup на основе окружения.

  • Hello World с выбором метода ConfigureServices на основе среды.

    Проект демонстрирует возможность выбора метода ConfigureServices в одном классе Startup на основе окружения.

  • Пример реализации интерфейса IStartup.

    Мы подробно рассматриваем класс Startup. Это пример того, как напрямую реализовать IStartup.

  • Hello World без класса Startup.

    Почему? Потому что мы можем это сделать.

  • Hello world с IStartupFilter.

    Используйте IStartupFilter для настройки промежуточного ПО. Это сложная тема. В этой статье делается попытка объяснить IStartupFilter. Я добавлю больше примеров, чтобы IStartupFilter стал более понятным.

  • Показывать ошибки во время запуска.

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

  • Показать информацию о соединении.

    Перечислите информацию о подключении HTTP-запроса.

  • Настройки среды.

    Установите среду приложения на «Разработка», «Производство» или другой режим непосредственно из кода.

  • Ведение журнала консоли.

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

Мы добавляем следующие зависимости: "Microsoft.Extensions.Logging": "1.1.0" и "Microsoft.Extensions.Logging.Console": "1.1.0".

Используем IApplicationBuilder Run, метод расширения для добавления терминального промежуточного программного обеспечения.

  • Консольное ведение журнала — без фреймворкового логирования.

    Отфильтруйте фреймворк-логирование из вывода логов. Без фильтрации… Демонстрация встроенного механизма DI (Dependency Injection) в ASP.NET Core для обеспечения зависимостей для вашего middleware

Middleware 9

[https://github.com/dodyg/practical-aspnetcore/tree/master/projects/middleware-9]

Продемонстрировать, как использовать встроенный механизм DI (Dependency Injection) в ASP.NET Core, чтобы обеспечить зависимости для вашего middleware.

  • Middleware 10

[https://github.com/dodyg/practical-aspnetcore/tree/master/projects/middleware-10]

Показать, что middleware является singleton.

Функции (8)

Функции — это набор объектов, которые можно получить из фреймворка во время выполнения и которые служат различным целям.

  • Функция Server Addresses

[https://github.com/dodyg/practical-aspnetcore/tree/master/projects/features-server-addresses]

Используйте эту функцию, чтобы получить список URL-адресов, на которые отвечает ваше приложение.

  • Функция Server Addresses — 2

[https://github.com/dodyg/practical-aspnetcore/tree/master/projects/features-server-addresses-2]

Используйте интерфейс IServer для доступа к адресам серверов, когда у вас нет доступа к IApplicationBuilder.

  • Функция Request

[https://github.com/dodyg/practical-aspnetcore/tree/master/projects/features-server-request]

Получите подробную информацию о текущем запросе. Она имеет некоторое сходство с HttpContext.Request. Они не равны. HttpContext.Request имеет больше свойств.

  • Функция Connection

[https://github.com/dodyg/practical-aspnetcore/tree/master/projects/features-connection]

Используйте IHttpConnectionFeature для получения локального IP/порта и удалённого IP/порта.

  • Пользовательская функция

[https://github.com/dodyg/practical-aspnetcore/tree/master/projects/features-server-custom]

Создайте свою собственную пользовательскую функцию и передайте её от middleware.

  • Пользовательская функция — переопределение

[https://github.com/dodyg/practical-aspnetcore/tree/master/projects/features-server-custom-override]

Показывает, как вы можете заменить реализацию функции другой внутри конвейера запросов.

  • Функция культуры запроса

[https://github.com/dodyg/practical-aspnetcore/tree/master/projects/features-request-culture]

Используйте эту функцию для определения культуры веб-запроса через IRequestCultureFeature. Для этого требуется следующая зависимость: «Microsoft.AspNetCore.Localization»: «2.1.0».

  • Сеансовая функция

[https://github.com/dodyg/practical-aspnetcore/tree/master/projects/features-session]

Используйте сеансы в своих middleware. Этот пример показывает базовое использование сеанса в памяти. Для этого требуются следующие зависимости: «Microsoft.AspNetCore.Session»: «1.1.0-» и «Microsoft.Extensions.Caching.Memory»: «2.1.0-».

Внедрение зависимостей (2)

ASP.NET Core живёт и умирает благодаря DI. Он опирается на библиотеку Microsoft.Extensions.DependencyInjection. Нет необходимости явно указывать эту зависимость в вашем project.json, потому что aspnetcore уже имеет этот пакет в качестве собственной зависимости.

  • Внедрение зависимостей 1 — основное

[https://github.com/dodyg/practical-aspnetcore/tree/master/projects/dependency-injection-1]

Демонстрирует три регистрации времени жизни для встроенной функциональности DI: singleton (один и только навсегда), scoped (один в каждом запросе) и transient (новый каждый раз).

  • Внедрение зависимостей 3 — простая регистрация

[https://github.com/dodyg/practical-aspnetcore/tree/master/projects/dependency-injection-3]

Зарегистрируйте все объекты, настроенные классами, реализующими определённый интерфейс (в этом примере — IBootstrap). Это полезно, когда у вас есть большое количество классов в проекте, которые нуждаются в регистрации. Вы можете зарегистрировать их рядом с тем местом, где они находятся (обычно в одной папке), вместо того чтобы регистрировать их где-то в гигантской регистрационной функции.

Примечание: пример 2 ожидается. Вдохновение ещё не пришло.

Поставщик файлов (2)

Мы будем иметь дело с различными типами поставщиков файлов, поддерживаемых ASP.NET Core.

  • Поставщик физических файлов — информация о содержимом и веб-корнях

[https://github.com/dodyg/practical-aspnetcore/tree/master/projects/file-provider-physical]

Доступ к информации о файлах в ваших веб-и контент-корнях.

  • Настраиваемый поставщик файлов

[https://github.com/dodyg/practical-aspnetcore/tree/master/projects/file-provider-custom] Реализуйте простой и в значительной степени бессмысленный поставщик файлов. Это хорошая отправная точка для реализации собственного поставщика файлов.

Кэширование в памяти (также известное как локальный кэш) (4)

Эти образцы зависят от библиотеки Microsoft.Extensions.Caching.Memory. Пожалуйста, добавьте эту зависимость в свой файл project.json.

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

  • Кэширование 2 — зависимость от файла (https://github.com/dodyg/practical-aspnetcore/tree/master/projects/caching-2). Добавьте зависимость файла к вашему кэшированию, чтобы при изменении файла ваш кэш истекал. Вам необходимо поместить файл кэша в свой проект.json, чтобы он был скопирован, например:
"buildOptions": {
    "emitEntryPoint": true,
    "copyToOutput": ["cache-file.txt"]
}

Примечание: пример 1 ожидается. Вдохновение ещё не пришло.

Конфигурация (7) Этот раздел полностью посвящён конфигурации, от конфигурации памяти до INI, JSON и XML.

<appSettings>
  <add key="webpages:Version" value="3.0.0.0" />
  <add key="webpages:Enabled" value="false" />
</appSettings>

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

Локализация и глобализация (6) Этот раздел посвящён языкам, культуре и т. д.

Требуется зависимость "Microsoft.AspNetCore.Localization": "2.1.0" и "Microsoft.Extensions.Localization": "2.1.0", чтобы использовать встроенную функцию QueryStringRequestCultureProvider. Этот пример поддерживает английский и французский языки.

Локализация — 3:

Демонстрация различий между культурой (Culture) и культурой пользовательского интерфейса (UI Culture).

Локализация — 4:

Использование встроенной функции CookieRequestCultureProvider для переключения культуры запроса через cookie. Этот пример также поддерживает английский и французский языки.

Локализация — 5:

Пример использования переносимых объектов (PO-файлов) для поддержки локализации вместо громоздких файлов resx. Для этого примера требуется пакет OrchardCore.Localization.Core. Также требуется ASPNET Core 2.

Локализация — 6:

Продолжение предыдущего примера с контекстом, который позволяет возвращать разные строки для одного и того же ключа перевода.

URL Redirect/Rewriting (6):

Этот раздел посвящён тёмной магии перенаправления URL.

Rewrite:

Самый базовый пример перенаправления (возвращает HTTP 302), который перенаправляет всё на домашнюю страницу «/». Требуется дополнительная зависимость "Microsoft.AspNetCore.Rewrite" : "2.1.0-*". Если вы уже использовали маршрутизацию, рекомендуется ознакомиться с примерами маршрутизации.

Rewrite — 2:

Перенаправление (возвращает HTTP 302) всего, что имеет расширение, например, about-us.html или welcome.aspx, на домашнюю страницу (/). Также показано, как захватывать значения, соответствующие регулярному выражению.

Rewrite — 3:

Переписывание (возвращает HTTP 301) всего, что имеет расширение, например, about-us.html или welcome.aspx, на домашнюю страницу (/). Также показано, как захватывать значения, соответствующие регулярному выражению.

Rewrite — 4:

Постоянное перенаправление (возвращает HTTP 301) всего, что имеет расширение, например, about-us.html или welcome.aspx, на домашнюю страницу (/). Также показано, как захватывать значения, соответствующие регулярному выражению.

Rewrite — 5:

Реализация собственной логики перенаправления на основе реализации IRule. Требуется дополнительная зависимость "Microsoft.AspNetCore.StaticFiles": "1.1.0" для обслуживания изображений. Эта собственная логика перенаправления позволяет нам просто указывать имена файлов изображений без необходимости беспокоиться об их точном пути, например, 'xx.jpg' и 'yy.png'.

Rewrite — 6:

Реализация собственной логики перенаправления с использованием лямбда-выражений (аналогично Rewrite — 5). Требуется дополнительная зависимость "Microsoft.AspNetCore.StaticFiles": "1.1.0" для обслуживания изображений. Эта собственная логика перенаправления позволяет нам просто указывать имена файлов изображений без необходимости заботиться об их точном пути, например, 'xx.jpg' и 'yy.png'.

Compression (1):

Включение возможности сжатия ответов ASP.NET Core. Эти примеры зависят от Microsoft.AspNetCore.ResponseCompression": "2.1.0.

Default Gzip Output Compression:

Сжатие всего по умолчанию. Сжатие Gzip

Everything означает следующий вывод MIME:

  • text/plain
  • text/css
  • application/javascript
  • text/html
  • application/xml
  • text/xml
  • application/json
  • text/json

Диагностика (6)

Эти образцы зависят от "Microsoft.AspNetCore.Diagnostics":"1.1.1".

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

Покажите любое необработанное исключение на красиво оформленной странице с подробностями об ошибке. Используйте это только в среде разработки!

Используйте функцию IExceptionHandlerFeature, предоставляемую Microsoft.AspNetCore.Diagnostics.Abstractions, для создания пользовательской глобальной страницы исключений.

Аналогично предыдущему, за исключением того, что мы используем настраиваемую страницу ошибок, определённую в отдельном пути.

Используйте UseStatusCodePagesWithRedirects. Внимание: этот метод расширения обрабатывает ваш код возврата статуса 5xx путём перенаправления его на определённый URL. Он не будет обрабатывать исключения вашего приложения в целом (для этого используйте UseExceptionHandler — проверьте предыдущие образцы).

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

  • Microsoft.AspNetCore.MiddlewareAnalysis
  • Microsoft.Extensions.DiagnosticAdapter
  • Microsoft.Extensions.Logging.Console

Статические файлы (6)

Требуется дополнительная зависимость для включения функциональности "Microsoft.AspNetCore.StaticFiles": "1.1.0".

Просто обслуживайте статические файлы (html, css, изображения и т. д.).
В этом проекте обслуживаются два статических файла: index.html и hello.css. Они хранятся в папке wwwroot, которая является местоположением папки по умолчанию для этой библиотеки.
Чтобы получить к ним доступ, вы должны ссылаться на них напрямую, например, localhost:5000/index.html и localhost:5000/hello.css.

Разрешите перечисление и просмотр вашей папки wwwroot.

Объединяет функциональность UseStaticFiles, UseDefaultFiles и UseDirectoryBrowser.

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

Показать настраиваемый просмотр каталогов и обработать список каталогов, а также файлы.

Использовать просмотр каталогов по определённому пути с помощью DirectoryBrowserOptions.RequestPath, например /browse.

Веб-сокеты (5)

Мы собираемся изучить функциональность веб-сокетов, предоставляемую ASP.NET Core. Все образцы здесь требуют... Microsoft.AspNetCore.WebSockets

Предупреждение: Эти образцы представляют собой низкоуровневый код для работы с веб-сокетами. Для производственных целей используйте SignalR (https://github.com/aspnet/signalr). Да, скоро я буду работать над образцами SignalR.

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

Мы улучшаем предыдущий образец, добавляя логирование в консоль (требуется пакет Microsoft.Extensions.Logging.Console) и обрабатывая данные, размер которых больше размера буфера. Я установил очень маленький размер буфера (4 байта), чтобы вы могли увидеть, как это работает.

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

Мы улучшаем предыдущий образец, обрабатывая событие закрытия, инициированное веб-клиентом.

Реализуйте элементарный одноканальный чат-сервер.

Серверные события (1)

Этот сервер будет отправлять приветствие «hello world» вечно.

Синдикации (2)

Мы используем новый пакет Microsoft.SyndicationFeed.ReaderWriter для чтения RSS-каналов и каналов ATOM.

Это наименьшее количество кода для чтения RSS-канала. Этот пример читает канал от изобретателя RSS Дейва Винера по адресу http://scripting.com/rss.xml.

В этом примере обрабатывается расширение Outline для RSS.

Разное (3)

Служите файлу Markdown как файлу HTML. Вы увидите, как можно создать полезное приложение, используя несколько основных возможностей aspnetcore.

Мы берём зависимость «Markdig»: «0.15.1».

Служит файлу Markdown как файл HTML. Имеет ту же функциональность, что и Markdown-сервер, но реализован с использованием компонента промежуточного программного обеспечения.

Мы берём зависимость «Markdig»: «0.15.1».

Ознакомьтесь с документацией о том, как написать собственное промежуточное программное обеспечение (https://docs.asp.net/en/latest/migration/http-modules.html).

Дайте ему строку, и он сгенерирует для вас безопасный хеш, например localhost:5000?password=mypassword.

Добавляем зависимость «Microsoft.AspNetCore.Identity»: «2.1.0», чтобы включить эту функциональность.

Веб-утилиты (2)

Эта секция показывает различные функции, доступные в Microsoft.AspNetCore.WebUtilities.

Эта утилита помогает вам безопасно генерировать строку запроса для вашего URL (ht Rehan Saeed).

Эта утилита возвращает HTTP-причины, указанные номером статуса.

Uri Helper (1)

В этой секции показаны различные методы, доступные на уровне UriHelper. Microsoft.AspNetCore.Http.Extensions.UriHelper

Get Display Url

Request.GetDisplayUrl() показывает полный URL-адрес с хостом, путём и строкой запроса текущего запроса. Он предназначен только для отображения.

Trimming (1)

В этом разделе показано, как можно уменьшить размер приложения с помощью Microsoft.Packagin.Tools.Trimming.

Trimming Microsoft.AspNetCore.All hello world application

Запустите dotnet publish или dotnet build и прочитайте вывод в терминале. Будет выведено что-то похожее на Trimmed 115 из 168 файлов для экономии 18,93 МБ. Окончательный размер приложения составляет 3,07 МБ. Вы можете отключить обрезку, установив <TrimUnusedDependencies>true</TrimUnusedDependencies> в значение false в файле проекта.

Modules (2)

Этот раздел показывает, как создать подключаемую и расширяемую веб-систему с использованием системы Orchardcore Modules.

Modular Hello World

Запустите dotnet watch run в папке web. Этот пример показывает модуль, который просто выводит «hello world».

Проект module1 требует OrchardCore.Module.Targets, а проект хоста web требует OrchardCore.Application.Targets и OrchardCore.Modules.

Keeping track of anonymous users

Отслеживайте анонимных пользователей в своём ASP.NET Core (полезно в таких сценариях, как отслеживание корзины покупок) с помощью библиотеки ReturnTrue.AspNetCore.Identity.Anonymous.

Middleware (1)

Response Buffering

Используйте промежуточное ПО Microsoft.AspNetCore.Buffering 0.2.2 для реализации функции буферизации ответов. Это позволит вам изменять ответ после его записи.

Device Detection (1)

Образцы в этом разделе основаны на библиотеке Wangkanai.Detection.

Device Detection

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

Owin (1)

Все эти образцы требуют пакета Microsoft.AspNetCore.Owin. Эти низкоуровневые образцы в большинстве случаев не имеют отношения к вашей повседневной разработке ASP.NET Core.

Owin

Привет, мир, трудный путь.

Image Sharp (1)

Всем этим образцам требуется промежуточное программное обеспечение SixLabors.ImageSharp.Web. Это промежуточное ПО — отличный инструмент для обработки повседневных задач по обработке изображений.

Image-Sharp

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

Generic Host (9)

Generic Host — это отличный способ разместить все виды долго выполняющихся задач и приложений, например, обмен сообщениями, фоновые задачи и т.д.

Этот раздел посвящён всем тонкостям Generic Host. Все примеры в этом разделе полагаются на пакет Microsoft.AspNetCore.App.

Hello World

Это эквивалент приветствия миру службы Generic Host.

Hello World using Console Lifetime

Использовать UseConsoleLifetime неявно.

Startup and Shutdown order Демонстрируется порядок запуска и остановки размещённых сервисов.

Другие ресурсы

Другие ресурсы aspnetcore с примерами кода:

Разное

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/maikebing-practical-aspnetcore.git
git@api.gitlife.ru:oschina-mirror/maikebing-practical-aspnetcore.git
oschina-mirror
maikebing-practical-aspnetcore
maikebing-practical-aspnetcore
master