Andrey on .NET | Вышел ASP.NET Core RC2

Вышел ASP.NET Core RC2

ASP.NET logoСегодня стала доступна для загрузки RC2 версия ASP.NET Core. Давайте посмотрим как её установить, какие произошли ключевые изменения, а так же запустим кроссплатформенное "Hello World!".

Как установить?

Загрузить ASP.NET Core RC2 (для различных ОС) и инструменты для Visual Studio можно с сайта: http://get.asp.net

Перед установкой необходимо удалить инструменты от предыдущей версии (RC1).

А что с ASP.NET 5?

Как уже было отмечено ранее, ASP.NET 5 переименован в ASP.NET Core 1.0.

Изменения в ASP.NET Core RC2

.NET CLI

Одним из ключевых изменений в RC2 является появление .NET CLI (Command-Line Interface). Это утилита для командной строки, которая заменяет устаревшие dnvm, dnx и dnu. Она соответствует им по функциональности. После установки ASP.NET Core RC2 откройте командную строку и введите:

dotnet --help

.NET CLIdotnet поддерживает все необходимые для создания и запуска приложения команды: new, restore, build, run и т.д.

Приложения для ASP.NET Core – консольные

Приложения в ASP.NET Core явно реализуют метод public static void Main(), который используется в качестве входной точки. Это не заменяет startup.cs, использовавшийся в прошлых версиях, а дополняет его. Все, что сейчас находится внутри Main(), раньше DNX делал самостоятельно, после чего обращался к классу Startup для дальнейшей настройки. Теперь реализацию Main() задает разработчик, что предоставляет ему больше возможностей по контролю над конфигурацией и запуском ASP.NET Core приложения.

Вот пример такого метода:

public class Program
{
    public static void Main(string[] args)
    {
        var host = new WebHostBuilder()
            .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .Build();

        host.Run();
    }
}

Как можно заметить, здесь присутствует разделение ответственностей: Main() настраивает среду выполнения, а Startup класс – само приложение

Новые шаблоны проектов

Шаблоны веб-проектов находятся в разделе Web:.NET Core Web Application tempaltes

После выбора типа framework можно будет выбрать тип проекта – пустой, настроенный на WebApi или WebApp.

Так же добавлена новая секция для проектов .NET Core:

.NET Core Application tempaltes

Поддержка IIS

Для запуска ASP.NET Core приложений в IIS создан модуль, который необходимо указать в web.config (новые шаблоны проектов уже его содержат):

<configuration>
<system.webServer>

  <handlers>
    <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
  </handlers>

  <aspNetCore processPath="%LAUNCHER_PATH%"
              arguments="%LAUNCHER_ARGS%"
              stdoutLogEnabled="false"
              stdoutLogFile=".\logs\stdout"
              forwardWindowsAuthToken="false"/>
</system.webServer>
</configuration>

Миграция с RC1 на RC2

Вот несколько ссылок на информацию, которая может мигрировать RC1 DNX-приложения на ASP.NET Core RC2:

Поддержка на Azure

На этой неделе так же станет возможным размещение ASP.NET Core RC2 приложений в Azure. Анонс будет размещен в Azure Blog.

Запускаем простое ASP.NET Core приложение

Можно легко проверить работоспособность ASP.NET Core после установки на любой ОС. Для этого создайте пустую папку и выполните в ней следующие команды (в командной строке):

>dotnet new
>dotnet restore
>dotnet run

Результатом будет созданный проект, который при запуске (dotnet run) выведет строку "Hello World!".

Комментарии (13) -

Сергей 17.05.2016 16:55:49

А если установить rc2 не удаляя rc1, будут ли они существовать вместе или конфликтовать?

Сергей Run-time будет жить, можно по прежнему будет собирать RC1 проекты. А вот насчет инструментария (я про VS, а не dnx/dnvm/dnu) - не уверен.

Руслан 18.05.2016 16:45:05

Похоже, что VS сегодня не поддерживает Core RC2. Студия все также пытается скомпилить проект используя dnx.

Руслан
Если это был существующий проект, то вы поправили версию ASP.NET в project.json? Какая там сейчас версия установлена?

Руслан 19.05.2016 8:16:30


  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "dnxcore50"
      ]
    }
  },

Руслан Опечатался. Правильно - global.json. Там должно быть:
"sdk": {
  "version": "1.0.0-preview1-002702"
}

Костя 20.05.2016 0:06:17

А никто не сталкивался с такой проблемой, что приложение на RC2 использует очень много оперативной памяти? У меня это 1гб. Судя по снапшотам всю эту память съедает Microsoft.AspNetCore.Mvc.ModelBinding.Binders.ComplexTypeModelBinder из за зацикливания. Что с этим можно сделать?

Костя Не сталкивался, но думаю самое лучшее - добавить issue на https://github.com/aspnet/Mvc

Костя 20.05.2016 15:03:32

Я нашел там уже описание этой проблемы, если кому интересно то вот: https://github.com/aspnet/Mvc/issues/4666 тут

подскажите, почему может не запускаться проект?

Rc 1 удалила, RC 2 поставила. Создала новый проект. При запуске
host.Run(); выдает ошибку
Необработанное исключение типа "System.AggregateException" в Microsoft.AspNetCore.Server.Kestrel.dll
"Error -4092 EACCES permission denied"

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

Лена Указанный для приложения порт уже кем-то используется? Или не прописан вообще (параметры запуска Kestrel в конфиге какие)?

Сергей 25.07.2016 20:43:39

Спасибо большое за статью. Не могли бы вы подсказать, а то я запутался. Если мне не нужна кросс-платформенность, а просто хочу использовать Asp Net Core с его плюшками. Если проект Asp Net Core RC2 под полный Net Framework 4.6.1, то как его правильно хостить? Нужен ли Windows Server Hosting bundle, нужно ли выставлять в настройках пула No managed code вместо CLR 4? Нигде не могу найти информацию.  Заранее благодарю.

Сергей А это не поможет https://docs.asp.net/en/latest/publishing/iis.html

Добавить комментарий