asp.net core 输出乱编的解决方案
最近公司项目要用.net core 开发相关项目。这里在开发的过程中遇见一个问题,单点登录过滤器,这里做一个用户提醒的操作
string message= string.Format("<script type='text/javascript'>alert('未检测到用户信息或者用户信任时间过期,请您重新登入!');window.location.href='{0}';</script>", "/Home/Index");
filterContext.HttpContext.Response.WriteAsync(message);
运行的效果如下:

很显然,这里出现了乱码,不是我想要的。
于是寻找解决方案,先尝试添加
filterContext.HttpContext.Response.ContentType = "text/plain;charset=utf-8
给返回消息通道加入消息类型,效果如下:

乱码是解决了,但是网站没有执行js脚本。
很明显,这个效果不上我想要的
于是通过NuGet 包管理器,添加System.Text.Encoding.CodePages 这个包
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseSession();
app.UseMvc(routes => {
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
加入
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
这个方法,同时修改过滤器代码:
string message= string.Format("<script type='text/javascript'>alert('未检测到用户信息或者用户信任时间过期,请您重新登入!');window.location.href='{0}';</script>", "/Home/Index");
filterContext.HttpContext.Response.WriteAsync(message, Encoding.GetEncoding("GB2312"));
运行效果如下:

解决问题。

浙公网安备 33010602011771号