Перенос приложения Twilio MMS на .NET Core с помощью Visual Studio Code

Автор: | 10.08.2026

Я был большим поклонником .NET с времен .NET Framework 1.1. Спустя годы и множество обновлений Microsoft сделала шаг вперед, представив .NET Core и Visual Studio Code, что позволило разработчикам писать и запускать код откуда угодно без потери производительности, безопасности или эффективности. Если вы задаетесь вопросом: «Что дает мне .NET Core?», загляните сюда. В предыдущей статье блога мы создали API для отправки фотографий через MMS с использованием облачного хранилища Dropbox на C# и .NET Framework 4.5. Давайте перенесем этот API с .NET Framework на .NET Core.

Для этого нам нужно:

— Установить .NET Core (и все необходимые зависимости), Visual Studio Code и расширение C#

— Создать новый проект с помощью интерфейса командной строки (CLI) .NET Core

— Скопировать существующий код и исправить проблемы конвертации

— Запустить приложение и получить достижения!

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

Сначала установите .NET Core и Visual Studio Code. Если вы уже разработчик .NET и используете Visual Studio, вы, вероятно, думаете: «Разве я не могу использовать Visual Studio для этого?» Конечно, можете, но в этой статье давайте попробуем Visual Studio Code.

После установки запустите Visual Studio Code, нажмите `⌘ + P` на клавиатуре (или `Ctrl + P` в Windows) и введите команду `ext install csharp`.

В панели расширений найдите расширение C#. Когда появятся результаты, установите расширение от Microsoft. Оно должно выглядеть как на картинке справа. После нажатия кнопок *C#* и *Install* мы будем готовы двигаться дальше.

Перезагрузите Visual Studio Code.

Работа в Visual Studio Code строится на использовании папок и взаимодействии с командной строкой. Если вы привыкли к Visual Studio, возможно, вы испытываете те же чувства, что и я после прочтения этой строки. Давайте остановимся и признаем это:

Теперь, когда мы это прояснили, не волнуйтесь! Обещаю, это будет легко и быстро! Итак, запустите терминал на Mac (или командную строку в Windows). В этом окне перейдите в директорию, где хотите сохранить проект, и выполните следующие команды:

«`

mkdir CoreApi

cd CoreApi

dotnet new webapi

«`

Эти команды создают проект ASP.NET Web API в папке *CoreApi*. Далее давайте восстановим некоторые пакеты NuGet, которые мы использовали в оригинальном проекте. Для этого вернитесь в терминал и введите следующие команды:

«`

dotnet add package Twilio

dotnet add package Newtonsoft.Json

dotnet restore

«`

Затем введите `code .` в терминале. Если в Visual Studio Code появится панель инструментов с сообщением «*Отсутствуют необходимые ресурсы для сборки и отладки в ‘CoreApi’*», нажмите кнопку *Yes*. Это создаст папку *.vscode*, содержащую два файла, которые VS Code использует для запуска и отладки приложения. Наконец, создадим необходимые файлы, введя следующие команды в терминале:

«`

code DropboxHelper.cs

code Controllers/PhotosController.cs

«`

Затем перейдите в *Файл > Сохранить все*, чтобы сохранить файлы. На картинке справа показана наша завершенная настройка.

Мы ввели кучу команд, но кода пока нет. Вам уже грустно?

Надеюсь, что нет, потому что пришло время писать код. 😀

**Файл DropboxHelper.cs**

Перейдите к файлу DropboxHelper.cs из оригинального проекта. Скопируйте код оттуда и вставьте его в файл *Helper.cs* в Visual Studio Code.

После копирования кода метод *PostAsJsonAsync* будет содержать ошибки, так как в .NET Core нет его реализации. Чтобы исправить это, внесем следующие изменения:

— Добавьте следующее сразу после операторов *using* в начале файла:

«`csharp

using System.Net.Http;

using System.Text;

«`

— В конструкторе DropboxHelper добавьте эту строку сразу после установки заголовка Authorization в строке 21:

«`csharp

_client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(«application/json»));

«`

— Замените строки, вызывающие *PostAsJsonAsync*, на следующее:

«`csharp

var content = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, «application/json»);

var response = await _client.PostAsync(url, content);

«`

Эти изменения добавляют поддержку парсинга JSON в нашем приложении. На этом обновление файла помощника завершено. Если вы хотите запустить это, сгенерируйте токен доступа из созданного вами приложения Dropbox и замените строку «UPDATE_YOUR_ACCESS_TOKEN_HERE» на него. Также загрузите фотографию в папку приложения, которую вы создали.

**Файл PhotosController.cs**

Далее перейдите к файлу PhotosController.cs из оригинального проекта. Скопируйте код оттуда и вставьте его в файл PhotosController.cs в Visual Studio Code.

Внесем несколько изменений:

— Замените `using System.Web.Http;` на `using Microsoft.AspNetCore.Mvc;`

— Замените `namespace BabyApi.Controllers` на `namespace CoreApi.Controllers`

— Добавьте следующее над объявлением класса: `[Route(«api/[controller]»)]`

— Замените `public class PhotosController:ApiController` на `public class PhotosController:Controller`

— Замените `public async Task Get()` на `public async Task Get()`

— Замените оператор возврата в методе *Get* на этот:

«`csharp

return Content(response.ToString(), «application/xml»);

«`

Обновление кода завершено! Давайте присоединимся к миньонам и поаплодируем.

После загрузки фотографии в папку вашего приложения Dropbox и обновления токена доступа в файле *DropboxHelper.cs* введите `dotnet run` в терминале, а затем перейдите по адресу http://localhost:5000/api/photos (это URL по умолчанию в .NET Core). Если вы не видите URL с хостом *dropboxusercontent*, не волнуйтесь. Проверьте, что ваша фотография загружена в ту же папку приложения, которую создал Dropbox для запуска этого приложения. Если ваш браузер выглядит похоже на изображение выше, настало время танцевать!

Если вы хотите подключить этот код к Twilio, ознакомьтесь с разделом **Подключение нашего кода к Twilio** в оригинальной статье блога. Теперь мы можем писать код на .NET на любой ОС, поддерживаемой Visual Studio Code, и запускать наш API .NET на любой ОС, поддерживаемой .NET Core. Кросс-платформенность, мы идем!

Если вы хотите скачать готовый код, возьмите его на GitHub. Оставьте комментарий ниже или напишите мне в Twitter @CoreyLWeathers, если столкнетесь с проблемами. Не могу дождаться, чтобы увидеть, что вы создадите.