Добавить C # web api route из скомпилированного скрипта roslyn - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь добавить маршруты веб-API в основное веб-приложение ASP.NET из сценария, скомпилированного в память с помощью Roslyn.

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

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

Содержимое примера сценария с маршрутом:

#r "nuget:Microsoft.AspNetCore.App, 2.1.1"

using System;
using Microsoft.AspNetCore.Mvc;

[Route("api/scriptedcontroller")]
[HttpGet]
public string Get()
{
    return "Hello from ScriptedController!";
}

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

Я не могу понять, что мешает распознавать маршрут внутри скомпилированного скрипта приложением ASP.NET.

...