【发布时间】:2017-10-26 14:56:01
【问题描述】:
我们有一个现有的 Web API 项目,我们现在也希望从根目录为 2 个客户端提供服务(通过不同的子域访问)。设置 Web API 以执行为两个网站提供文件并点击路由的功能的正确方法是什么?
我看到两个主要选项:
-
使用 Kestrel 作为文件服务器。我不确定如何配置 Kestrel 以从根(来自不同的子域)服务两个站点。它似乎暴露了最少的配置,并且这似乎无法扩展为基于子域为 2 个站点提供服务。
var host = new WebHostBuilder() .UseKestrel() .UseWebRoot("wwwroot") .UseIISIntegration() .UseStartup<Startup>() .Build(); host.Run();此外,我目前无法将 Kestrel 与 Web API 集成,请参阅StackOverflow question。
从负责 root 的 Web API 控制器提供文件。这将读取 URL 并返回正确的 index.html。从那里我不确定它将如何为 index.html 引用的其他文件提供服务,例如 js/app.js、css/core.css 或 assets/*。可以让单独的控制器来处理这些,但这似乎很脆弱。
这些方法中哪一种是合适的?或者还有什么我没有考虑过的事情来实现这个目标?
【问题讨论】:
-
我不明白为什么你想在同一个项目中混合使用 ASP.NET Core(使用 Kestrel)和 Web API(System.Web)。他们的架构完全不同(我认为不兼容)。您可以考虑使用 Owin native routing capabilities 并提供类似于 app.UseStaticFiles() 的静态文件。
-
我最终使用了 OWIN,它很好地满足了我的需求。结合前面评论中链接中的信息,直接导致了解决方案的实施。谢谢@FedericoDipuma!
标签: c# asp.net-web-api kestrel-http-server fileserver