本文是在实践工作中遇到的一些问题记录,并给出是如何解决的,.net core已经升级到3.0版本了,其实在项目中很早就已经在使用.net core来开发后台接口了,正好有个网站项目,就使用了Razor Pages来开发,从体验上来说,如果你熟悉Razor Pages的话,开发速度是非常快的,如果有趁手的框架,那就更是如虎添翼。

好了,闲话少说,接下来将遇到了这些杂乱的问题记录如下:

网站目录里面的_ViewImports.cshtml用途

_ViewImports.cshtml用于引入命名空间,引入后就可以在Razor Page页面上使用。每个目录(文件夹)都可以建一个 _ViewImports.cshtml 视图,这样当前目录下的所有Razor Page页面都可以除了可以使用根目录的 _ViewImports.cshtml 引入的命名空间外,还可以使用当前目录 _ViewImports.cshtml 引入的命名空间所有对象。有点继承的意思。

部分视图如何引入?

部分视图是很有用的一个功能特性,您可以把它当成webform时代的用户控件,在引入时,只需要通过如下代码即可以了:

<partial name="~/Views/Folder/_PartialName.cshtml" />

登录功能如果有记住密码,如何实现?

使用Razor Page开发网站时,如果在您的登录界面上有个记住用户功能,用户下次进来直接进入后台,不需要再次登录。实现这个功能,简单一点的方法就是使用cookie认证,在首次登录成功后,给用户颁发一个长期的cookie,代码如下:

await HttpContext.SignInAsync(
CookieAuthenticationDefaults.AuthenticationScheme,
new ClaimsPrincipal(claimsIdentity),
new AuthenticationProperties
{
IsPersistent = true
});

  基于上面的记住用户的功能,实现方式很多,以上代码用于生产环境需要评估安全风险,但对于内部系统,可以这样取巧实现;另外对于基于cookie的方式,还存在一个问题就是用户如果设置了退出浏览器自动清空一切历史记录的话,此方法失效。

后台接口时间格式序列化问题

在编写web api接口时,会遇到时间格式化的问题,如有的地方需要使用短时间格式(年-月-日,如2019-01-02),有的地方需要使用长时间格式(年-月-日 小时:分钟:秒),即时间显示需要具体到分钟秒这种格式,如果您的框架统一处理了时间格式为短时间格式,那么遇到长时间格式问题,就需要单独处理,序列化用得较多的组件就是 NewtonSoft.json,那么我们只需要自定义一个格式化时间的类,写个自定义格式化时间的类,继承自IsoDateTimeConverter,然后在对应的属性上加上这个特性即可,如下代码所示:

public class CustomizedDateTimeConverer : IsoDateTimeConverter
{
/// <summary>
/// 构造函数
/// </summary>
public CustomizedDateTimeConverer() : base()
{
DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
} /// <summary>
/// 带参构造函数
/// </summary>
/// <param name="format"></param>
public CustomizedDateTimeConverer(string format) : this()
{
DateTimeFormat = format;
}
}

  接下来在Startup.cs里面配置一下,如下代码所示:

services.AddJsonOptions(options =>
{
CustomizedDateTimeConverer converer = new CustomizedDateTimeConverer();
options.SerializerSettings.Converters.Add(converer);
});

然后需要使用到的dto对象或者实体对象,打上这个特性即可,如下所示:

[JsonConverter(typeof(CustomizedDateTimeConverer), “yyyy-MM-dd HH:mm:ss”)]

这样就实现了对时间格式的灵活控制,在整个后台框架设置的输出时间格式为短时间格式时,有需要的情况下,我们仍然可以根据业务需要设置长时间格式,或者其它格式化方式。

使用AutoMapper如何忽略部分属性映射?

使用automapper进行对象映射时,可以减少您写大量的赋值语句,当然你在项目中偷懒直接使用和数据库表对应的那个实体,automapper就派不上用场了。使用automapper进行对象映射时,如果源对象和目标对象有些属性不同,或者要忽略掉,如何总呢?答案其实很简单,在对应的属性上打上这个[Ignore]特性即可:

/// <summary>
/// 列表集合
/// </summary>
[Ignore]
public int[] List { get; set; }

服务器可视化监控工具

项目上线后,需要对服务器进行监控,您不可能安排一个人天天守着服务器看,需要借助 Grafana 来搞定这个需求。

Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知运维人员。

具体的使用教程网上很多,不做介绍。

原文链接:https://jhrs.com/2019/28454.html

使用.net core基于Razor Pages开发网站一些工作笔记的更多相关文章

  1. [译]ASP.NET Core揭秘 - Razor Pages

    原文 什么是Razor Pages? Razor pages是ASP.NET Core 2.0的新特性,它被设计用来更快的开发页面,比传统的MVC模式更便捷. 创建项目 为了使用Razor Pages ...

  2. asp.net core 的 razor pages 如何使用ajax调用后台方法

    Razor 是一种允许您向网页中嵌入基于服务器的代码(Visual Basic 和 C#)的标记语法. 当网页被写入浏览器时,基于服务器的代码能够创建动态内容. 在网页加载时,服务器在向浏览器返回页面 ...

  3. 【翻译】介绍 ASP.NET Core 中的 Razor Pages

    介绍 ASP.NET Core 中的 Razor Pages 原文地址:Introduction to Razor Pages in ASP.NET Core         译文地址:介绍 asp. ...

  4. ASP.NET Core Razor Pages 初探

    最近新建 Asp.net Core MVC 项目的时候不小心选错了个模板,发现了一种新的项目模板.它使用cshtml视图模板,但是没有Controller文件夹.后来才发现这是ASP.NET Core ...

  5. 学习 razor pages 指南

    这是一个系列,我打算把此人的系列翻译一下,学习技术的同时,顺便提高一下英文水平. 原文地址:https://www.learnrazorpages.com/ 前言 欢迎来学习 razor pages ...

  6. 项目开发中的一些注意事项以及技巧总结 基于Repository模式设计项目架构—你可以参考的项目架构设计 Asp.Net Core中使用RSA加密 EF Core中的多对多映射如何实现? asp.net core下的如何给网站做安全设置 获取服务端https证书 Js异常捕获

    项目开发中的一些注意事项以及技巧总结   1.jquery采用ajax向后端请求时,MVC框架并不能返回View的数据,也就是一般我们使用View().PartialView()等,只能返回json以 ...

  7. 基于ASP.NET Core 3.0快速搭建Razor Pages Web应用

    前言 虽然说学习新的开发框架是一项巨大的投资,但是作为一个开发人员,不断学习新的技术并快速上手是我们应该掌握的技能,甚至是一个.NET Framework开发人员,学习.NET Core 新框架可以更 ...

  8. ASP.NET Core 快速入门(Razor Pages + Entity Framework Core)

    引子 自从 2009 年开始在博客园写文章,这是目前我写的最长的一篇文章了. 前前后后,我总共花了 5 天的时间,每天超过 3 小时不间断写作和代码调试.总共有 8 篇文章,每篇 5~6 个小结,总截 ...

  9. ASP.NET Core Razor Pages

    Razor 页面是Asp.Net Core2.0新增的一个功能.Razor 页面是 ASP.NET Core MVC 的一个新特性,它可以使基于页面的编码方式更简单高效. 环境:vs2017 .net ...

随机推荐

  1. win2003浏览器提示是否需要将当前访问的网站添加到自己信任的站点中去

    Win2003的操作系统,的确比其它操作系统在安全上增加了不少,这是为用户所考虑的.当然,既然提供了安全性,尤其是在上网的时候,可以禁止某些活动脚本的显示,这样,就可以多方面的避免在使用Win2003 ...

  2. shell多线程之进程间通信(2)

    工作中往往遇到这种情况,有许多任务,依次执行比较浪费时间,由于任务之间有依赖关系,简单的并发执行又不行. 就如同下面这种情况,任务new和dvidUser是可以并发执行的,fact任务依赖于new任务 ...

  3. ElasticSearch2.3.1环境搭建哪些不为人知的坑

    首先说明一点,大家最好不要用什么尝鲜版,用比稳定版就好了,要不麻烦不断,另外出了问题,最好去官网,或者google搜索,因为这样靠谱些,要不现在好多都是低版本的,1.4的什么的,结果按照安装,多少情况 ...

  4. 实战Java的反射机制

    众所周知,Java要调用某个对象的方法首先需要对象实例化后才能调用. 而实例化对象常见的就是new执行和spring(DI)的依赖注入了. Spring的DI其实就是以反射作为最基础的技术手段. 一. ...

  5. string类总结第一部分函数介绍

    在前面几章,看了整个String类的源码,给每个方法都行写了注释,但是太过凌乱,今天我就把String类的方法整理归纳,然后再讲一下String类比较难以理解的部分 特此声明:本文篇幅较大,涵盖知识点 ...

  6. 强制等待&隐士等待&显示等待&元素定位方法封装

    前言 问题 学习selenium的同学估计大多数都遇见过一个问题 明明页面已经精准的定位到了元素,但是执行脚本的时候却经常报错没找到元素.其实原因很简单,就是脚本执行的速度很快,而浏览器加载页面的时候 ...

  7. navicat12.0.29破解操作步骤

    navicat12.0.29破解操作步骤 2018年07月11日 22:21:17 xijian0521 阅读数:1620   我的百度网盘地址: 下载点这里 以管理员身份运行 此注册机:  打开注册 ...

  8. Spring Boot2(七):拦截器和过滤器

    一.前言 过滤器和拦截器两者都具有AOP的切面思想,关于aop切面,可以看上一篇文章.过滤器filter和拦截器interceptor都属于面向切面编程的具体实现. 二.过滤器 过滤器工作原理 从上图 ...

  9. html、javascript、url特殊字符的转义诠释及使用方法详解

    html.javascript.url特殊字符转义在实际编程中都是有用到的,有的人对特殊字符转义的使用不是很清楚,下面就对html,javascript,url特殊字符的转义做一下说明和归纳. htm ...

  10. RABC权限控制(二级菜单实现)

    目前大部分系统由于用户体验,基本上菜单不会做的很深,以二级菜单为例,做了一个简单的权限控制实现,可精确到按钮级别(基于django),下面具体看看实现 1.表结构的设计 无论开发什么都需要先梳理清楚需 ...