.NETOWIN和HTML5历史
我正在运行一个AngularJS SPA,它有一个.NETWebAPI和OWIN middlware。我正在尝试根据IIS虚拟路径动态设置基本标记。当使用HTML5历史记录时,这是必需的,以便将文件处理到正确的路径 我正在使用OWIN middlware将我的HTML5历史路径重新映射回.NETOWIN和HTML5历史,.net,asp.net-mvc,asp.net-web-api2,owin,html5-history,.net,Asp.net Mvc,Asp.net Web Api2,Owin,Html5 History,我正在运行一个AngularJS SPA,它有一个.NETWebAPI和OWIN middlware。我正在尝试根据IIS虚拟路径动态设置基本标记。当使用HTML5历史记录时,这是必需的,以便将文件处理到正确的路径 我正在使用OWIN middlware将我的HTML5历史路径重新映射回index.html页面,如下所示: namespace API { public partial class Startup { public void Configuratio
index.html
页面,如下所示:
namespace API
{
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapWhen((r) => !r.Request.Path.Value.Contains("api"),
spa =>
{
spa.Use((context, next) =>
{
context.Request.Path = new PathString("/index.html");
return next();
});
spa.UseStaticFiles();
});
}
}
}
index.html页面如下所示:
<!doctype html>
<html lang="en">
<head>
<base href="/" />
</head>
<body>
<div>here</div>
<script src="angular/angular.js"></script>
</body>
</html>
var index = File.ReadAllText("C:\\Web\\index.html");
var baseTag = VirtualPathUtility.ToAbsolute("~");
index = index.Replace(@"<base href=""/"">", "<base href=\"" + baseTag + "\">");
app.MapWhen(r => !r.Request.Path.Value.Contains("api"), spa =>
{
spa.Use((context, next) =>
{
var stream = new MemoryStream();
var writer = new StreamWriter(stream);
writer.Write(index);
writer.Flush();
stream.Position = 0;
context.Response.Body = stream;
return next();
});
spa.UseStaticFiles();
});
但我想看看是否有人有更好的想法
类似项目: