按@ FedericoDipuma的評論,我結束了使用OWIN具有以下Startup.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Owin;
using Microsoft.Owin.FileSystems;
using Microsoft.Owin.StaticFiles;
using System.IO;
namespace SealingServer
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapWhen(ctx => ctx.Request.Headers.Get("Host").Equals("subdomain1.site.com"), app2 =>
{
var firstClientRoot = Path.Combine("./firstClient/");
var firstClientFileSystem = new PhysicalFileSystem(firstClientRoot);
var fileServerOptions = new FileServerOptions();
fileServerOptions.EnableDefaultFiles = true;
fileServerOptions.FileSystem = firstClientFileSystem;
fileServerOptions.DefaultFilesOptions.DefaultFileNames = new[] {"home.html"};
fileServerOptions.StaticFileOptions.OnPrepareResponse = staticFileResponseContext =>
{
staticFileResponseContext.OwinContext.Response.Headers.Add("Cache-Control", new[] { "public", "max-age=0" });
};
app2.UseFileServer(fileServerOptions);
});
app.MapWhen(ctx => ctx.Request.Headers.Get("Host").Equals("subdomain2.site.com"), app2 =>
{
var secondClientRoot = Path.Combine("./secondClient/");
var secondClientFileSystem = new PhysicalFileSystem(secondClientRoot);
var fileServerOptions = new FileServerOptions();
fileServerOptions.EnableDefaultFiles = true;
fileServerOptions.FileSystem = secondClientFileSystem;
fileServerOptions.DefaultFilesOptions.DefaultFileNames = new[] { "home.html" };
fileServerOptions.StaticFileOptions.OnPrepareResponse = staticFileResponseContext =>
{
staticFileResponseContext.OwinContext.Response.Headers.Add("Cache-Control", new[] { "public", "max-age=0" });
};
app2.UseFileServer(fileServerOptions);
});
}
}
}
我不明白的是爲什麼你會喜歡混合ASP.NET核心(用紅隼)和Web API(System.Web)在同一個項目中。他們的架構完全不同(我認爲不兼容)。您可以考慮使用Owin [原生路由功能](https://stackoverflow.com/a/25405782/3670737)並提供類似於[app.UseStaticFiles()]的類似靜態文件(https://msdn.microsoft.com /en-us/library/owin.staticfileextensions.usestaticfiles(v=vs.113).aspx)。 –
我結束了使用OWIN,它很好地滿足了我的需求。結合前面評論中鏈接中的信息直接導致實施解決方案。謝謝@FedericoDipuma! –