一.概述 HTTP 是无状态的协议. 默认情况下,HTTP 请求是不保留用户值或应用状态的独立消息. 本文介绍了几种保留请求间用户数据和应用状态的方法.下面以表格形式列出这些存储方式,本篇专讲Session会话状态,计划下篇再讲应用状态. 存储方法 存储机制 Cookie HTTP Cookie(可能包括使用服务器端应用代码存储的数据) Session 状态 HTTP Cookie 和服务器端应用代码 TempData HTTP Cookie 或Session状态  查询字符串 HTTP 查询字…
一. MVC介绍 MVC架构模式有助于实现关注点分离.视图和控制器均依赖于模型. 但是,模型既不依赖于视图,也不依赖于控制器. 这是分离的一个关键优势. 这种分离允许模型独立于可视化展示进行构建和测试.ASP.NET Core MVC 包括以下功能: 路由.模型绑定.模型验证.依赖关系注入.筛选器.区域.Web API.可测试性.Razor 视图引擎.强类型视图.标记帮助程序. 视图组件. (1) 路由 ASP.NET Core MVC 建立在 ASP.NET Core 的路由之上,是一个功能强…
一. Razor介绍 在使用ASP.NET Core Web开发时, ASP.NET Core MVC 提供了一个新特性Razor. 这样开发Web包括了MVC框架和Razor框架.对于Razor来说它是一个新特性,在官方介绍ASP.NET Core的优点中提到“Razor Pages可以使基于页面的编码方式更简单高效”. 1.1 Razor结构介绍 (1) Pages文件夹 存放所有Razor页面,包括Razor 页面和支持文件. 每个 Razor 页面都是一对文件: 一个 .cshtml 文…
一. ASP.NET Core Module 在介绍ASP.NET Core Web实现之前,先来了解下ASP.NET Core Module.该模块是插入 IIS 管道的本机 IIS 模块(本机是指程序所部署的服务器).是基于windows平台处理 IIS和进程内IISHttpServer或Kestrel.用于: (1) 在 IIS 工作进程 (w3wp.exe) 内托管 ASP.NET Core 应用,称为进程内托管模型. (2) 将 Web 请求转发到运行 Kestrel 服务器的后端 A…
一.概述 在asp.net core中,Host主机负责应用程序启动和生存期管理.host主机包括Web 主机(IWebHostBuilder)和通用主机(IHostBuilder).Web 主机是适用于托管 Web 应用:通用主机(ASP.NET Core 2.1 或更高版本)是适用于托管非 Web 应用:在未来的版本中,通用主机将适用于托管任何类型的应用,包括 Web 应用. 通用主机最终将取代 Web 主机.本篇先来了解ASP.NET Core Web主机. 1.1 设置Web主机以及执行…
一.概述 MVC的视图与Razor页面经常共享视觉和程序元素,通过使用布局来完成,布局还可减少重复代码.本章演示了以下内容的操作方法:(1)使用通用布局,(2)自定义布局,(3) 共享指令,(4)在呈现Razor页面或MVC视图之前运行通用代码. 大多数 Web 应用都有一个通用布局,可在页面间切换时,为用户提供一致体验. 布局通常包括应用页头.导航或菜单.页脚等常见的用户界面元素,还有经常使用script和css等常用的 HTML 结构. 所有这些共享元素均可在布局文件中进行定义,在Conte…
一.MVC视图 在Web开发的MVC和Razor中,都有使用视图,在Razor中称为"页"..cshtml视图是嵌入了Razor标记的HTML模板. Razor 标记使用C#代码,用于与HTML 标记交互以生成发送给客户端的网页.在MVC目录结构中,Views / [ControllerName] 文件夹下用于创建视图,其中Views/Shared 文件夹下的视图是控制器共享的视图. 1.1  视图页Razor 标记 下面是Views/Home 文件夹中创建一个 About.cshtm…
一.介绍 最近搭建了一套CQRS框架,需要在投入开发前,进行必要的压力测试.Web Capacity Analysis Tool  (Wcat)是一种轻量级HTTP负载生成工具,主要用于衡量受控环境中Web服务器的性能.WCAT可以模拟数千个并发用户向单个网站或多个网站发出请求.WCAT引擎使用一个简单的脚本来定义要回放到Web服务器的HTTP请求集.WCAT是一个非常轻量级但功能强大的工具,可供IT专业人员和开发人员使用.其丰富的设置可用于大多数情况.它最大的缺点是缺乏用于创建和管理负载测试场…
一. 模型绑定 ASP.NET Core MVC 中的模型绑定,是将 HTTP 请求中的数据映射到action方法参数. 这些参数可能是简单类型的参数,如字符串.整数或浮点数,也可能是复杂类型的参数. 当 MVC 收到 HTTP 请求时,它会将此请求路由定位到控制器的指定action方法.默认路由模板为 {controller=Home}/{action=Index}/{id?} //例如:请求URL http://contoso.com/movies/edit/2 //映射到movies/ed…
一.分部视图 对于MVC 视图和 Razor Pages 页面,都有分部视图功能.通常将 MVC 视图和 Razor Pages 页面统称为“标记文件”,下面会常提到该名词.使用分部视图的优势包括:(1) 将大型标记文件分解为更小的组件.(2) 减少跨标记文件中,常见标记内容的重复. 建议:(1)不应使用分部视图来维护常见布局元素,常见布局元素应在 _Layout.cshtml 文件中指定,比如页头.页尾.(2)当需要呈现复杂逻辑或代码执行的应该使用视图组件. 1.1 声明分部视图 分部视图是在…
一.概述 本章Web架构分层指南,参考了“Microsoft应用程序体系结构指南”(该书是在2009年出版的,当时出版是为了帮助开发人员和架构师更快速,更低风险地使用Microsoft平台和.NET Framework设计和构建有效,高质量的应用程序).虽然已过去十年了,技术架构已更新(如流行的DDD/CQRS模式,微服务,容器),但web分层思想还是一样可取,下面是一个“传统N分层设计”架构图,该架构在2010年左右是最流行的,包括了表现层presentation,服务层services,业务…
随笔分类 - asp.net core系列篇 asp.net core系列 68 Filter管道过滤器 摘要: 一.概述 本篇详细了解一下asp.net core filters,filter叫"筛选器"也叫"过滤器",是请求处理管道中的特定阶段之前或之后运行代码.filter用于处理横切关注点. 横切关注点的示例包括:错误处理.缓存.配置.授权和日志记录. filter可以避免重复代码,通过Attribut阅读全文 posted @ 2019-07-16 09:…
Ajax跨域问题及解决方案   目录 复现Ajax跨域问题 Ajax跨域介绍 Ajax跨域解决方案 一. 在服务端添加响应头Access-Control-Allow-Origin 二. 使用JSONP解决 小结 复现Ajax跨域问题 做两个简单的小项目复现Ajax跨域问题. 后端语言使用Java 首先是一个简单的订单系统, 通过访问/loadOrderList, 最终以json串形式返回订单集合. 该项目使用Tomcat发布在7070端口. @RequestMapping("/loadOrder…
1. 血案由来 近期我在为Lazada卖家中心做一个自助注册的项目,其中的shop name校验规则较为复杂,要求:1. 英文字母大小写2. 数字3. 越南文4. 一些特殊字符,如“&”,“-”,“_”等看到这个要求的时候,自然而然地想到了正则表达式.于是就有了下面的表达式(写的比较龊): ^([A-Za-z0-9._()&'\- ]|[aAàÀảẢãÃáÁạẠăĂằẰẳẲẵẴắẮặẶâÂầẦẩẨẫẪấẤậẬbBcCdDđĐeEèÈẻẺẽẼéÉẹẸêÊềỀểỂễỄếẾệỆfFgGhHiIì…
工具: 1.Visual Studio 2017 V15.3.5+ 2.Postman (Chrome的App) 3.Chrome (最好是) 关于.net core或者.net core 2.0的相关知识就不介绍了, 这里主要是从头编写一个asp.net core 2.0 web api的基础框架. 我最近几年一直在使用asp.net web api (传统.net framework)作为后台Api, 前台使用 angularjs 1.2 或者 1.6进行开发, 自己独立做过10多个基于这两…
工具: 1.Visual Studio 2017 V15.3.5+ 2.Postman (Chrome的App) 3.Chrome (最好是) 关于.net core或者.net core 2.0的相关知识就不介绍了, 这里主要是从头编写一个asp.net core 2.0 web api的基础框架. 我一直在关注asp.net core 和 angular 2/4, 并在用这对开发了一些比较小的项目. 现在我感觉是时候使用这两个技术去为企业开发大一点的项目了, 由于企业有时候需要SSO(单点登…
从今天开始来学习如何在 ASP.NET Core 中构建 Web API 以及每项功能的最佳适用场景.关于此次示例的数据库创建请参考<学习ASP.NET Core Razor 编程系列一>    至  <学习ASP.NET Core Razor 编程系列十九——分页> 一.概述 本教程将创建以下 Web API: API 说明 请求正文 响应正文 GET /api/Book 获取所有的书籍信息 None 书籍的数组 GET /api/Book/{id} 通过 ID 获取书籍信息 N…
一.管理数据库架构概述 EF Core 提供两种主要方法来保持 EF Core 模型和数据库架构同步.一是以 EF Core 模型为基准,二是以数据库为基准. (1)如果希望以 EF Core 模型为准,请使用迁移. 对 EF Core 模型进行更改时,此方法会以增量方式将相应架构更改应用到数据库,以使数据库保持与 EF Core 模型兼容.  (2)如果希望以数据库架构为准,请使用反向工程. 使用此方法,可通过将数据库架构反向工程到 EF Core 模型来生成相应的 DbContext 和实体…
一.返回类型 ASP.NET Core 提供以下 Web API Action方法返回类型选项,以及说明每种返回类型的最佳适用情况: (1) 固定类型 (2) IActionResult (3) ActionResult<T> 1.1 固定类型 最简单的操作是返回基元或复杂数据类型(如 string 或自定义对象类型). 请参考以下Action,该Action返回自定义 Product 对象的集合: [HttpGet] public IEnumerable<Product> Get…
一.概述 HTTP不仅仅用于提供网页.HTTP也是构建公开服务和数据的API强大平台.HTTP简单灵活且无处不在.几乎任何你能想到的平台都有一个HTTP库,因此HTTP服务可以覆盖广泛的客户端,包括浏览器,移动设备和传统的桌面应用程序. ASP.NET Web API 是一个框架,基于.NET Framework 或.NET Core 之上构建 Web API. 从本章开始学习Web API系列时,先从一个示例开始,下面使用ASP.NET Core MVC 创建 Web API.通过本次演示将了…
一.概述 ASP.NET Core 通用主机 (HostBuilder),该主机对于托管不处理 HTTP 请求的应用非常有用.通用主机的目标是将 HTTP 管道从 Web 主机 API 中分离出来,从而启用更多的主机方案. 基于通用主机的消息.后台任务和其他非 HTTP 工作负载可从横切功能(如配置.依赖关系注入 [DI] 和日志记录)中受益.通用主机是 ASP.NET Core 2.1 中的新增功能,不适用于 Web 承载方案.通用主机正处于开发阶段,用于在未来版本中替换 Web 主机,并在…
黄衫女子的武功似乎与周芷若乃是一路,飘忽灵动,变幻无方,但举手抬足之间却是正而不邪,如说周芷若形似鬼魅,那黄衫女子便是态拟神仙. 这段描写出自<倚天屠龙记>第三十八回. “九阴神抓”本是<九阴真经>中的上乘武功,但当初梅超风夫妇由于拿到的<九阴真经>不完整,学不到里面的内功心法,硬是把这门上乘武功练到了邪路上,于是就成了“九阴白骨爪”.周芷若为求速成,也练就了这门邪功. 但黄衫女子乃出身武林名门(相传是杨过和小龙女的后人),自然修炼的是正宗的<九阴真经>.虽…
WPF中的常用布局   一 写在开头1.1 写在开头微软是一家伟大的公司.评价一门技术的好坏得看具体的需求,没有哪门技术是面面俱到地好,应该抛弃对微软和微软的技术的偏见. 1.2 本文内容本文主要内容为WPF中的常用布局,大部分内容转载至https://blog.csdn.net/woshisunjiale/article/details/54136323,代码片段可能有所不同. 二 WPF中的常用布局因为项目需要,所以得学习WPF开发.WPF使软件界面和逻辑相分离,手写xaml进行程序UI的开…
原文:asp.net core系列 39 Razor 介绍与详细示例 一. Razor介绍 在使用ASP.NET Core Web开发时, ASP.NET Core MVC 提供了一个新特性Razor. 这样开发Web包括了MVC框架和Razor框架.对于Razor来说它是一个新特性,在官方介绍ASP.NET Core的优点中提到“Razor Pages可以使基于页面的编码方式更简单高效”. 1.1 Razor结构介绍 (1) Pages文件夹 存放所有Razor页面,包括Razor 页面和支持…
前面讲过 .NET Core简介及开发环境安装,本章会讲一讲ASP.NET Core 2.0的项目结构,查看完整的ASP.NET Core系列文章:https://www.cnblogs.com/zhangweizhong/category/1477144.html 新建项目 新建项目, 选择.NET Core 有如下几种类型可选, 分别是Console, ASP.NET Core 的空项目,Web API 我们选择ASP.NET Core Web App(MVC), 没有标注MVC的是采用Ra…
前面讲了ASP.NET Core 的项目结构,查看完整的ASP.NET Core系列文章:https://www.cnblogs.com/zhangweizhong/category/1477144.html ASP.NET Core 里面一个比较重要的就是Startup.cs 类,包括加载配置, 通过依赖注入加载组件, 注册路由等都在此处进行.今天就来聊一聊Startup 类的作用和用法. 与 ASP.NET 对比,ASP.NET Core 最显著的变化之一就是配置应用程序的方式,Global…
ChuanGoing 2019-11-17 这篇原本时想把事务处理.日志处理.错误处理.授权于鉴权一并介绍完的,授权和鉴权我想结合自定义权限来介绍,全部放到这里篇幅可能太长,因此权限部分将会在下篇来介绍.先说下我接下来的打算把,下篇将介绍权限控制,结合Oauth2.0和OpenId Connect以及自定义权限来介绍:完了后会结合之前所介绍的基础来实现一个简单的电商网站,当然时利用领域驱动设计来实现.我的这个系列的主题就是领域驱动设计,实现简单电商网站时将会深入的讲解下领域的划分原则及领域服务的…
ChuanGoing 2019-11-24 asp.net core系列已经来到了第五篇,通过之前的基础介绍,我们了解了事件订阅/发布的eventbus整个流程,初探dapper ORM实现,并且简单的介绍了领域模型.领域仓储及服务实现,结合上一篇的日志.错误处理及事务和本篇将要介绍的权限,大致的可以形成一个简单的后端系统架构.当然这些都是零散的一些技术概念的介绍,后面如果有时间的话,我想详细的介绍下如何利用领域驱动来实现一个实际案例. 话不多讲,下面来看下本篇的学习曲线: 1.认识Identi…
asp.net core系列 36 WebAPI 搭建详细示例一.概述1.1 创建web项目1.2 添加模型类1.3 添加数据库上下文1.4 注册上下文1.5 添加控制器1.6 添加Get方法1.7 Route特性(1)Route特性(2)HttpGet1.8 返回值二.测试Web API2.1 查询2.2 新增2.3 修改2.4 删除 asp.net core系列 37 WebAPI 使用OpenAPI (swagger)中间件一.概述1.1 什么是Swagger/OpenAPI1.2 swa…
0. 前言 在<asp.net core 系列>之前的几篇文章中,我们简单了解了路由.控制器以及视图的关系以及静态资源的引入,让我们对于asp.net core mvc项目有了基本的认识.不过,这些并不是 asp.net core mvc项目的全部内容,剩下的内容我将结合实战项目为大家讲解其中的知识.现在,就让我们开始吧. 1. 项目构建 抛开之前的项目,现在跟着我重新创建一个项目,第一步依旧是先创建一个解决方案: dotnet new sln --name Template 我先介绍一下这个…