Загрузка видов в основное приложение WPF asp.net.

Нам нужно самостоятельно разместить приложение Asp.Net Core в WPF APP, API работают нормально, но есть некоторые проблемы с загрузкой представлений cshtml.

Вот наш код: Host Builder:

public static class HostBuilder
    {
        private static IWebHost host;

        public static async Task Start()
        {
            if (host == null)
            {
                var ip = System.Net.IPAddress.Parse("127.0.0.1");
                var port = 9388;

                host = new WebHostBuilder()
                   .UseKestrel(options =>
                   {
                       options.Listen(ip, port);
                   })
                   .UseStartup<HostStartup>()
                   .Build();

                await host.RunAsync();
            }
        }

    }

Запуск хоста:

public class HostStartup
    {
        public IConfiguration Configuration { get; }

        public HostStartup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
        }

        public void Configure(IApplicationBuilder app, IHostingEnvironment env, System.IServiceProvider serviceProvider)
        {

            app.UseMvcWithDefaultRoute();
        }
    }

контроллер:

[AllowAnonymous]
    [Route("api")]
    public class LoginController : Controller
    {
        [HttpGet]
        [Route("/myview")]
        public ViewResult MyView()
        {
            var v = View("myview");
            return v;
        }

        [HttpGet]
        [Route("test")]
        public IActionResult Test()
        {
            return Ok("Good!");
        }
    }

URL http://127.0.0.1:9388/api/test работает! (веб-API) Но когда мы переходим на http://127.0.0.1:9388/myview браузер показывает ошибку http 500.

Я что-то пропустил? Нет никаких исключений на WPF.

1 ответ

Решение

Хорошо, теперь это работает! Вам нужно сделать несколько вещей вручную:

1) Перенесите ваш проект WPF в формат VS2017, вот как: Как перенести проекты Wpf в новый формат VS2017 (найти ответ @stil)

2) Установите Asp.net Core и Asp.net Core MVC

3) Снова отредактируйте csproj и измените корневой атрибут Sdk с Microsoft.NET.Sdk на Microsoft.NET.Sdk.Razor.

4) Направьте ваш проект WPF на фреймворк 4.6.2, 4.7 > не работает!

5) Ваш cshtml должен иметь опцию сборки "Content", но инструкцию по csproj нужно удалить, иначе она не скомпилируется.

Вот пример: https://github.com/alexandrereyes/wpf-aspnetcore-mvc

Другие вопросы по тегам