C# 在ASP.NET core 2.0中修改请求文件的内容
我正在尝试使用下面的代码更改指定请求文件的主体。index.html文件已正确发送到客户端,但head部分中包含的其他文件在客户端是空的(文件显示在chrome的sources选项卡中)。红隼不报告任何错误。你能解释一下为什么吗C# 在ASP.NET core 2.0中修改请求文件的内容,c#,asp.net-core,kestrel-http-server,C#,Asp.net Core,Kestrel Http Server,我正在尝试使用下面的代码更改指定请求文件的主体。index.html文件已正确发送到客户端,但head部分中包含的其他文件在客户端是空的(文件显示在chrome的sources选项卡中)。红隼不报告任何错误。你能解释一下为什么吗 public static Func<HttpContext, Func<Task>, Task> Rewrite() { return async (context, next) => { if (cont
public static Func<HttpContext, Func<Task>, Task> Rewrite()
{
return async (context, next) =>
{
if (context.Request.Path.Value == "/")
{
var originalStream = context.Response.Body;
using (Stream bufferStream = new FileStream("./wwwroot/index.html", FileMode.Open, FileAccess.Read))
{
context.Response.Body = bufferStream;
bufferStream.Seek(0, SeekOrigin.Begin);
using (var reader = new StreamReader(bufferStream))
{
var response = await reader.ReadToEndAsync();
response = response.Replace("[ddd]", "<script type=\"text/javascript\" src=\"lib/jquery/dist/jquery.js\"></script>");
using (var writer = new StreamWriter(originalStream))
{
await writer.WriteAsync(response);
}
}
}
}
else
{
await next();
}
};
}
“head部分中包含的其他文件在客户端是空的”-哪个中间件响应这些请求,结果是什么?在razor页面中不这样做有什么原因吗?(Home/Index是默认的路由(除非另有设置),当只请求
/
时)@Tseng没有理由,但我将使用websockets,因此我不能在不关闭websocket会话的情况下加载不同的页面,但可能仅用于索引的razor页面不是一个坏主意。。然而,我认为这种方式对我来说更具可读性。@CodeCaster标准版,这个例子应该只修改index.html。其他文件以标准方式处理
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.Use(ResponseStreamRewriter.Rewrite());
}