【发布时间】:2020-06-18 10:25:15
【问题描述】:
我在一个全新的 blazor-server 项目中创建了一个中间件委托,以转换我的 html 响应。请参阅下面的代码。
app.Use(async (context, next) =>
{
var originalStream = context.Response.Body;// currently holds the original stream
var newStream = new MemoryStream();
context.Response.Body = newStream;
await next();
string contentType1 = context.Response.ContentType?.Split(';', StringSplitOptions.RemoveEmptyEntries)[0];
string contentType2 = "text/html";
if (contentType1 == "text/html") // EXCEPTION THROWN, SEE IMAGE 1
//if (contentType2 == "text/html") // EXCEPTION NOT THROWN, SEE IMAGE 2
{
newStream.Seek(0, SeekOrigin.Begin);
var originalContent = new StreamReader(newStream).ReadToEnd();
var updatedContent = originalContent.Replace("Hello", "HOLA");
context.Response.Body = originalStream;
await context.Response.WriteAsync(updatedContent);
}
});
但是当我比较从 Response.ContentType 中提取的字符串时,我得到了一个异常(图 1)。但是当比较另一个具有相同值的字符串时,我没有得到它(图 2) 在这两种情况下,页面都是用替换呈现的。对这个有帮助吗?
【问题讨论】:
-
您是否尝试禁用 BrowserLink?这是如何做到这一点https://docs.microsoft.com/en-us/aspnet/core/client-side/using-browserlink?view=aspnetcore-3.1
标签: middleware blazor-server-side asp.net-core-3.1