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"));

  运行效果如下:

 

 解决问题。

 

posted @ 2020-03-01 16:08  楠空卡牛  阅读(313)  评论(0)    收藏  举报