c# – 使用OWIN启动多个Web服务器

我有一个场景,我想在同一个URL上托管ASP.NET MVC Web API应用程序和单页网站项目.

基本上,在http://localhost/上托管网站,在http://localhost/api/上托管API.

在IIS中,这就像设置Application子文件夹并将其指向磁盘上的文件一样简单.在OWIN中,我不确定如何实现这种情况.

我有一个控制台应用程序将作为Web主机,它目前使用此代码中的方法托管WebAPI应用程序:
SelfHostWebApiWithOwinAndUnity

有人可以帮忙吗?

最佳答案 如果我正确理解你,你想要托管一些静态html文件以及web api.这对OWIN来说相当简单.我假设你已经有了Web API的nuget包,所以继续抓住
StaticFiles package.然后在Startup.Configuration中,你可以添加以下代码:

var options = new FileServerOptions();
options.EnableDefaultFiles = true;
options.DefaultFilesOptions.DefaultFileNames = new[] { "index.html" };
options.DefaultFilesOptions.FileSystem = new PhysicalFileSystem("Web");
options.DefaultFilesOptions.RequestPath = PathString.Empty;
app.UseFileServer(options);

这将提供“Web”文件夹中的文件.提供的默认文件将是“index.html”,并且可以使用文件名访问Web文件夹中的任何其他文件(即localhost / otherpage.html).它不允许访问Web的子文件夹.

然后只需确保您的WebAPI路由都以“api /”开头

点赞