我们需要在WPF APP中自托管一个Asp.Net Core应用程序,API可以正常工作,但是在加载cshtml视图时会遇到一些问题。
这是我们的代码: 主机生成器:
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上没有例外。
答案 0 :(得分:1)
好,现在可以使用! 您需要手动执行一些操作:
1)将WPF projet迁移到VS2017格式,方法如下: How-to migrate Wpf projects to the new VS2017 format(寻找@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必须具有构建选项“内容”,但是csproj上的指令需要删除,否则它将无法编译。
这里是一个示例: https://github.com/alexandrereyes/wpf-aspnetcore-mvc