IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> Asp.Net/Asp.Net core/Blazor摸索笔记 -> 正文阅读

[开发测试]Asp.Net/Asp.Net core/Blazor摸索笔记

本文章随时更新,如有疑问或错误的地方欢迎留言。

目录

在子目录(如:admin)中使用Blazor:

?启用多端view:(MVC中适用)

解决中文进行编码问题

JSON的一些全局配置

Apache代理WS

?DbContext全局不跟踪(NoTracking)



在子目录(如:admin)中使用Blazor:

//目录名以admin为例
//blazor server 模式:

endpoints.MapFallbackToPage("{*path:regex(^(admin).*$)}", "/_host");


//blazor wasm (ASP.NET Core hosted) 模式:

//1、Client项目:
//编辑项目文件,在  <PropertyGroup>组中加入:
<StaticWebAssetBasePath>admin</StaticWebAssetBasePath>
//修改www/index.html文件:样式文件或其它引用文件如有路径错误,对应修改即可
 <base href="/admin/" />
//2、Server项目:
//修改Startup.cs文件 在Config方法中修改或加入:
app.UseBlazorFrameworkFiles("/admin");
// app.UseEndpoints中修改MapFallbackToFile如下即可
  app.UseEndpoints(endpoints =>
            {
                endpoints.MapRazorPages();
                endpoints.MapControllerRoute(
                  name: "default",
                  pattern: "{controller=Home}/{action=index}/{id?}");
                endpoints.MapFallbackToFile("/admin/{*path:nonfile}", "admin/index.html");
            });


?启用多端view:(MVC中适用)

//效果类似以前asp.net mvc的根据设备加载不同的View文件。
//如手机web端可以写视图文件为: index.mobile.hmtl等。
?.AddRazorOptions(options => {
????????????????? options.ViewLocationExpanders.Clear();
????????????????? options.ViewLocationExpanders.Add(new TemplateViewLocationExpander());
????????????? })

?TemplateViewLocationExpander的内容参考,可自行发挥:

其中HttpContext.Request.DeviceType()为扩展方法,根据UserAgent判断设置是手机还是PC浏览器还是微信内置浏览器等,你还可以细化出是IE,Firfox,或谷歌等。

public class TemplateViewLocationExpander : IViewLocationExpander
    {
        public IEnumerable<string> ExpandViewLocations(ViewLocationExpanderContext context, IEnumerable<string> viewLocations)
        {
            var request = context.ActionContext.HttpContext.Request;
            var MobileList = new List<string>();
            var WeChatList = new List<string>();
            var deviceType = context.Values["DeviceType"];
            if (deviceType == DeviceType.Mobile.ToString())
            {
                foreach (var item in viewLocations)
                {
                    MobileList.Add(item.Replace(".cshtml", ".mobile.cshtml"));
                }
            }
            else if (deviceType == DeviceType.WeChat.ToString())
            {
                foreach (var item in viewLocations)
                {
                    WeChatList.Add(item.Replace(".cshtml", ".wechat.cshtml"));
                    MobileList.Add(item.Replace(".cshtml", ".mobile.cshtml"));
                }
            }
            return WeChatList.Concat(MobileList).Concat(viewLocations);
        }

        public void PopulateValues(ViewLocationExpanderContext context)
        {
            context.Values["DeviceType"] = context.ActionContext.HttpContext.Request.DeviceType().ToString();
        }
    }

解决中文进行编码问题

 services.AddSingleton(HtmlEncoder.Create(UnicodeRanges.All));

JSON的一些全局配置

services.AddControllersWithViews()
    .AddJsonOptions(options=> { 
        options.JsonSerializerOptions.WriteIndented=false ;
        //取消中文字被Unicode编码
        options.JsonSerializerOptions.Encoder =JavaScriptEncoder.Create(UnicodeRanges.All);
         //使用驼峰样式的key:JsonNamingPolicy.CamelCase,不使用则设置为null,
        options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
         //反序列化不区分大小写
        options.JsonSerializerOptions.PropertyNameCaseInsensitive = true;
         options.JsonSerializerOptions.Converters.AddDateFormatString("yyyy-MM-dd HH:mm:ss");
        //options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles;   //忽略循环引用  .net6 中可用
    });

Apache代理WS

? httpd.conf: ?
? ? ? ? ? ? ?? LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
? ??? vhost:
?? ?? ? ? ? ? ? RewriteCond %{HTTP:Upgrade} websocket?????????????? [NC]
????? ? ? ? ? ? RewriteCond %{HTTP:Connection} upgrade?????????????? [NC]
????? ? ? ? ? ? RewriteRule ^/?(.*)???????? "ws://127.0.0.1:87/$1"? [P,L]

?DbContext全局不跟踪(NoTracking)

  services.AddDbContext<DBContext>(
    options => options.UseMySql(Configuration.GetConnectionString("MysqlConnection"))
                .UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking) 
            );

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-07-10 14:46:59  更:2021-07-10 14:47:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/6 3:24:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码