0.00
0 читателей, 11 топиков

NLog добавление логирования в .NET Core WEB приложение

Пример добавления логирования в WEB приложение на .NET Core на основе NLog.

Первоначально добавляем через Nuget пакет:
NLog.Web.AspNetCore


Затем добавляем в корень проекта файл nlog.config следующего содержания:
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      autoReload="true"
      internalLogLevel="info"
      internalLogFile="internal-nlog.txt">

    <!-- enable asp.net core layout renderers -->
    <extensions>
        <add assembly="NLog.Web.AspNetCore"/>
    </extensions>

    <!-- the targets to write to -->
    <targets>
        <!-- write logs to file  -->
        <target xsi:type="File" name="allfile" fileName="logs/nlog-all-${shortdate}.log"
                layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}" />

        <!-- another file log, only own logs. Uses some ASP.NET core renderers -->
        <target xsi:type="File" name="ownFile-web" fileName="logs/nlog-own-${shortdate}.log"
                layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" />
    </targets>

    <!-- rules to map from logger name to target -->
    <rules>
        <!--All logs, including from Microsoft-->
        <logger name="*" minlevel="Trace" writeTo="allfile" />

        <!--Skip non-critical Microsoft logs and so log only own logs-->
        <logger name="Microsoft.*" maxLevel="Info" final="true" />
        <!-- BlackHole without writeTo -->
        <logger name="*" minlevel="Trace" writeTo="ownFile-web" />
    </rules>
</nlog>

В данном файле содержатся настройки логирования, куда и как и что сохранять. Обязательно для данного файла необходимо выставить в параметрах свойство Copy to output directory: Copy Always.

Читать дальше →

Класс для транслитерации предложений на Русском по ГОСТ и ISO на C# под .NET Core

Бывает так, что приходится заниматься преобразованием предложения на русском в русский текст но на латинице (транслит), например при отправки СМС для сокращения затрат — поскольку латиницей обычно и влазит больше и стоит дешевле. Или при приведении ссылок для сайта в удобный вид без кириллицы, или просто для пересылки информации для решения проблем с кодировкой таким экзотическим способом, вариантов где это может пригодиться довольно много.

В этой публикации будет приведен пример класса который реализует функционал транслитерации в двух стандартах: ГОСТ и ISO. При желании, разобравшись в коде (он довольно прост и компактен) можно легко добавить и другие стандарты, но приведенные два мне кажутся наиболее используемыми.


Итак пример

Crop Image - Пример вырезания изображения с изменением размера и использованием библиотеки SixLabors.ImageSharp на .NET Core

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

Пример:
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.PixelFormats;
using System;
using SixLabors.ImageSharp.Formats.Jpeg;

namespace TransformImage.Methods
{
    public static class ImgActions
    {
        public static void CropImage(string path, string path_in, int size)
        {
            try
            {
                // Открывает файл, определяет тип файла и декодирует
                using (Image<Rgba32> image = Image.Load(path)) 
                {
                    // Теперь изображение находится в независимой от формата файла структуре в памяти как серия Rgba32 пикселей
                    
                    int line = image.Height < image.Width ? image.Height : image.Width;
                    
                    // Вырезаем часть изображения (квадрат по минимальной стороне)
                    
                    image.Mutate(tx => tx.Crop(line, line));
                    
                    // Изменяем размер изображения
                    
                    image.Mutate(ctx => ctx.Resize(size, size)); 

                    // Записываем в заданном формате с указанным качеством, без метаданных для экономии места
                    
                    image.Save(path_in,new JpegEncoder{Quality = 100, IgnoreMetadata = true}); 
                }
            }
            catch (Exception ex)
            {
                Program.logger.Error(ex, ex.Message);
            }
        }

    }
}


Читать дальше →

Пример синхронного AJAX запроса на JQuery и .NET Core

В данной публикации приведен пример того как выполнить асинхронный запрос к серверу без перезагрузки текущей страницы, с помощью JQuery на .NET Core.

Итак приступим.

Для начала нам потребуется создать проект Web сайта на .NET Core, например как здесь: https://kbss.ru/blog/netcore/271.html

Теперь модифицировать или создать новый контроллер Home с двумя методами:
Index — отображает страницу
GetInfo — обрабатывает запрос и возвращает ответ в формате JSON

Читать дальше →

Авторизация в приложении через Вконтакте VK на C#

Данная публикация написана как простая инструкция для себя, на память, чтобы не забыть.

Предложенный вариант использовался для авторизации через токен VK в серверном приложении.

Для начала создадим метод отправки HTTP запроса и получения ответа от сервера:

/// <summary>
        /// Отправляем запрос на получение 
        /// </summary>
        /// <param name="req"></param>
        /// <returns></returns>
        private static string GetRequest(string host, string req)
        {
            string str = "";

            var Vk = new HttpClient();
            Vk.DefaultRequestHeaders.Add("Connection", "close");

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(req);
            request.UseDefaultCredentials = true;
            request.PreAuthenticate = true;
            request.Credentials = CredentialCache.DefaultCredentials;
            request.Method = "GET";
            request.Host = host;
            request.UserAgent = "RM";
            request.ContentType = "application/x-www-form-urlencoded";
            request.KeepAlive = false;

            using (HttpWebResponse responsevk = (HttpWebResponse)request.GetResponse())
            using (var stream = responsevk.GetResponseStream())
            using (var streamReader = new StreamReader(stream, Encoding.UTF8))
            {
                str = streamReader.ReadToEnd();
            }
            return str;
        }


Читать дальше →

Немного размышлений по поводу .NET Core

.NET Core появился уже достаточно давно, претерпел ряд изменений и даже обзавелся второй версией.

С появлением .NET Core в архитектуре .NET появилось понятие .NET Standard — представляет спецификацию интерфейсов, которые должны реализовывать все версии .NET, что дает возможность разработчикам создавать переносимые библиотеки, которые возможно использовать в разных реализациях .NET благодаря общему набору интерфейсов.

.NET Standard

Разные реализации .NET реализуют определенные версии .NET Standard.

Читать дальше →

Работаем с базой данных MySql из .NET Core

В данной публикации мы рассмотрим как подключиться к базе данных MySql из приложения на .Net Core.

1. Если у вас ещё не установлен .Net Core то устанавливаем: .NET Core.

2. Далее создаем новый проект .NET Core
mkdir MySqlCoreSample
cd MySqlCoreSample
dotnet new

После выполнения этих команд в папке MySqlCoreSample появится 2 файла: «Program.cs», «project.json».
Это простейший шаблон приложения на .NET Core.
В эти файлы мы и будем вносить изменения, для чего будем использовать Visual Studio Code.

3. Используя расширение NuGet добавляем в наш проект "MySql.Data.7.0.6-ir31"
И добавляем зависимость в файле «project.json».

Читать дальше →

ASP.NET MVC проект на .NET Core в VS Code. Часть 2 (Добавляем Представление)

В предыдущей публикации мы создали простейший ASP.NET MVC проект на .NET Core и добавили в него контроллер. Весь проект состоял из 4 файлов и содержал только самое необходимое. Теперь мы добавим в этот проект представления.
(Скачать исходник предыдущего проекта можно здесь: Sample001s.zip)

Приступим. Для начала добавим в наш проект каталог «View» (именно так принято именовать папку содержащую представления) в котором будут лежать все наши представления. Затем в каталоге «View» создадим подкаталог «SayHello» — в нем будут лежать представления для контроллера SayHello.

Читать дальше →

ASP.NET MVC проект на .NET Core в VS Code. Часть 1 (Создаем проект и Добавляем Контроллер)

В этой публикации я надеюсь начать цикл повествований по разработке ASP.NET MVC приложения на .NET Core без использования Visual Studio. Для разработки приложения я буду использовать VS Code (по сути навороченный текстовый редактор), и больше ничего.

Начну я с создания пустого проекта и последовательного добавления в проект Контроллера, Представления и Модели, с постепенным включением в проект необходимых библиотек.

Поскольку сам я это делаю впервые, то могу местами ошибаться или нести какую нибудь «чушь» :), поэтому заранее приношу извинения за возможно не «кошерный» код или некорректное описание чего либо. Обещать могу лишь одно, приведенные примеры гарантированно работоспособны.

Читать дальше →

Создаем первый Web сайт с ноля на .NET Core

1. Устанавливаем .NET Core.

2. Создаем новый проект .NET Core
mkdir Sample01
cd Sample01
dotnet new

После выполнения этих команд в папке Sample01 появится 2 файла: «Program.cs», «project.json».
Это и есть простейший шаблон приложения на .NET Core.

Читать дальше →