Загрузка видов в основное приложение 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