ASP.NET MVC

.NET Web应用中为什么要使用async/await异步编程

本秂侑毒 提交于 2020-08-19 16:10:11
前言 什么是async/await? await和async是.NET Framework4.5框架、C#5.0语法里面出现的技术,目的是用于简化异步编程模型。 async和await的关系? async和await是成对出现的。 async出现在方法的声明里,用于批注一个异步方法。光有async是没有意义的。 await出现在方法内部,Task前面。只能在使用async关键字批注的方法中使用await关键字。 private async Task DoSomething( ) { await Task.Delay(TimeSpan.FromSeconds( 10)); } async/await会创建新的线程吗? 不会。async/await关键字本身是不会创建新的线程的,但是被await的方法内部一般会创建新的线程。 asp.net mvc/webapi action中使用async/await会提高请求的响应速度吗? 不会。 正题 我们都知道web应用不同于winform、wpf等客户端应用,客户端应用为了保证UI渲染的一致性往往都是采用单线程模式,这个UI线程称为主线程,如果在主线程做耗时操作就会导致程序界面假死,所以客户端开发中使用多线程异步编程非常必要。 可web应用本身就是多线程模式,服务器会为每个请求分配工作线程。 既然async/await不能创建新线程

.NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)

和自甴很熟 提交于 2020-08-19 04:17:14
阅读目录: 1.需求背景介绍(Model元数据设置项应该与View绑定而非ViewModel) 1.1.确定问题域范围(可以使用DSL管理问题域前提是锁定领域模型) 2.迁移ViewModel设置到外部配置文件(扩展Model元数据提供程序) 2.1.实现元数据提供程序(简单示例) 1.需求背景介绍(Model元数据设置项应该与View绑定而非ViewModel) 使用ASP.NETMVC构建普通的中小型站点可以使用简单的Model元数据设置方式来控制ViewModel如何显示在View中,但是复杂的应用场景不会这么简单的就能完成;大型站点的ViewModel的体积非常大,真的大的超乎我们的想象(当然这里面有历史原因),这么大的一个显示实体我们需要在不同的页面中呈现它会非常的棘手;然而小型站点不太会遇见ViewModel在几十个页面中显示的情况出现,一般页面也就是几十个差不多了; 在大型电子商务应用中,UI层的一个ViewModel不仅用来呈现数据还充当着与远程SOA接口通讯的DTO作用,如果为了结构清晰完全可以将ViewModel与DTO分开,但是有时候我们确实需要考虑额外的性能开销(有时候我们只能接受历史遗留的问题,技术债务累积多久就要还多久); 这篇文章将讲解如何利用ASP

Asp.Net Core 中的“虚拟目录”

牧云@^-^@ 提交于 2020-08-17 16:07:39
写在前面   现在部署Asp.Net Core应用已经不再限制于Windows的IIS上,更多的是Docker容器、各种反向代理来部署。也有少部分用IIS部署的,IIS部署确实是又快又简单,图形化操作三下五除二就可以发布好一个系统了。在过去Asp.Net MVC 项目部署的时候,还常常使用IIS一个功能—— 虚拟目录 。 虚拟目录可以直接定位到非项目的其他路径,将路径作为网站的一部分,可实现上传文件保存到其他盘符或间接的使用项目以外的静态文件。在Asp.Net MVC中从虚拟路径中存取文件也很简单,如 Server.MapPath( " ~/Upload/liohuang.jpg " ); 但在Asp.Net Core上不同,它被抽象出一个“文件系统”,也就是 FileProvider 。FileProvider是对所有实现了IFileProvider接口的所有类型以及对应对象的统称,在Artech蒋老师的《 .NET Core的文件系统[2]:FileProvider是个什么东西? 》文章中已经透析了,这里不在罗里吧嗦了。 这篇文章要解决的内容是:Asp.Net Core应用中,如何优雅的使用“虚拟目录”。 实操   首先,新建一个.Net Core WebApi空项目部署在D盘,“虚拟目录”假设物理路径在F盘,分别创建三个测试目录: F:/test1 、 F:/test2 和

如何让ELMAH使用ASP.NET MVC [HandleError]属性?

允我心安 提交于 2020-08-16 09:20:57
问题: I am trying to use ELMAH to log errors in my ASP.NET MVC application, however when I use the [HandleError] attribute on my controllers ELMAH doesn't log any errors when they occur. 我正在尝试使用ELMAH来记录我的ASP.NET MVC应用程序中的错误,但是当我在控制器上使用[HandleError]属性时,ELMAH在发生错误时不会记录任何错误。 As I am guessing its because ELMAH only logs unhandled errors and the [HandleError] attribute is handling the error so thus no need to log it. 正如我猜测它,因为ELMAH只记录未处理的错误,[HandleError]属性正在处理错误,因此无需记录它。 How do I modify or how would I go about modifying the attribute so ELMAH can know that there was an error and log it.. 我如何修改或如何修改属性

免费下载 !微软 Visual Studio 2013 and ASP.NET MVC 5 新特性体验课程

时间秒杀一切 提交于 2020-08-16 04:59:10
推荐最新《微软 Visual Studio 2013 and ASP.NET MVC 5 新特性体验课程》 微软特邀讲师 @老徐FrankXuLei 讲授。视频下载地址: http://t.cn/zRMXziW @微软中国MSDN @微软中国 @微软中国MVP项目组 @微软中国WindowsPhone 转起来 来源: oschina 链接: https://my.oschina.net/u/4385225/blog/4317298

【无私分享:ASP.NET CORE 项目实战(第二章)】添加EF上下文对象,添加接口、实现类以及无处不在的依赖注入(DI)

吃可爱长大的小学妹 提交于 2020-08-15 21:50:21
原文: 【无私分享:ASP.NET CORE 项目实战(第二章)】添加EF上下文对象,添加接口、实现类以及无处不在的依赖注入(DI) 目录索引   【无私分享:ASP.NET CORE 项目实战】目录索引 简介    上一章,我们介绍了安装和新建控制器、视图,这一章我们来创建个数据模型,并且添加接口和实现类。 添加EF上下文对象    按照我们以前的习惯,我们还是新建几个文件夹   Commons:存放帮助类   Domians:数据模型   Services:接口和实现类    我们在Domains文件夹下添加一个类库 Domain 我们新建一个类 ApplicationDbContext 继承 DbContext 1 using Microsoft.EntityFrameworkCore; 2 3 namespace Domain 4 { 5 public class ApplicationDbContext : DbContext 6 { 7 public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) 8 : base (options) 9 { 10 } 11 12 protected override void OnModelCreating(ModelBuilder

【无私分享:ASP.NET CORE 项目实战(第六章)】读取配置文件(一) appsettings.json

|▌冷眼眸甩不掉的悲伤 提交于 2020-08-15 15:55:35
原文: 【无私分享:ASP.NET CORE 项目实战(第六章)】读取配置文件(一) appsettings.json 目录索引   【无私分享:ASP.NET CORE 项目实战】目录索引 简介   在我们之前的Asp.net mvc 开发中,一提到配置文件,我们不由的想到 web.config 和 app.config ,在 core 中,我们看到了很多的变化,新的配置系统显得更加轻量级,具有更好的扩展性,并且支持多样化的数据源。   博客园对于这个的讲解很多,比如: Artche ,但是,没有点基础看老A的博客还是有些吃力的,对于老A介绍的配置,我也是看的一头雾水,在后面的文章中,我会用像我们这些菜鸟容易接受的方式,重新解释一下。   今天,我们以 appsettings.json 为例,读取一些简单的系统配置。 appsettings.json    在 第二章 中,我们在讲到EF上线文时,在 Startup.cs 添加 services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("SqlServerConnection"))); 已经使用到了 appsettings.json   我们添加一些简单的系统配置

asp.net mvc 最简单身份验证 [Authorize]通过的标准

ぐ巨炮叔叔 提交于 2020-08-15 13:36:09
原文: asp.net mvc 最简单身份验证 [Authorize]通过的标准 [Authorize] public ContentResult Index2() { return Content( " 验证通过了 " ); } 经常能够看到某个Controler下的Action通过这个标签进行登录权限状态的校验,否则该Action不执行。但是满足什么条件才能通过 Authorize这个过滤器的校验呢?答案:↓ public WebApiApplication() { PostAuthenticateRequest += WebApiApplication_PostAuthenticateRequest; } /// <summary> /// 获取到了用户的身份信息 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void WebApiApplication_PostAuthenticateRequest( object sender, EventArgs e) { // 身份验证逻辑 // 关键代码 HttpContext.Current.User = new MyUser() { code = " admin " , name = " admin "

ASP.NET MVC 实现简单的登录 源码

一个人想着一个人 提交于 2020-08-14 03:39:13
1、创建一个控制器 如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using Demo.Models; //命名空间 namespace Demo.Controllers { public class HomeController : Controller { // // GET: /Home/ DL_DemoEntities db = new DL_DemoEntities(); // 模型 public ActionResult Index() // 首页 { return View(); } public ActionResult Demo404() // 登陆失败跳转 { return View(); } public ActionResult Start_Here() // 登陆成功跳转 { return View(); } [HttpPost] public ActionResult Login( string name, string password) { name = Request[ " name " ]; password = Request[ " password " ]; if (

2020 Web界面开发:DevExtreme全新的Diagram控件、文件管理器

 ̄綄美尐妖づ 提交于 2020-08-13 16:06:25
DevExpress ASP.NET Web Forms Controls拥有针对Web表单(包括报表)的110+种UI控件,DevExpress ASP.NET MVC Extensions是服务器端MVC扩展或客户端控件,由轻量级JavaScript小部件提供支持的70+个高性能DevExpress ASP.NET Core Controls,包含功能完善的报表平台,DevExpress ASP.NET Web Forms Bootstrap Controls利用轻量级渲染、响应式布局和现代性能优化技术,扩展网站的受众范围并提高搜索排名。 DevExpress DevExtreme组件 v20.1日前震撼发布,新版本全新的Diagram控件、文件管理器、全新的Gantt控件等,欢迎下载v20.1体验! DevExpress DevExtreme v20.1正式版下载 全新的Diagram控件 Diagram control 于2019年5月作为社区技术预览(CTP)首次引入,此更新标志着其正式发布。 其功能包括: 40多种可自定义和可扩展的形状(包括OrgChart形状) 可折叠形状的容器 自定义形状 绑定到外部数据 直角和直角图连接器 以JSON格式加载/保存图 导出为SVG,PNG和JPEG 自动布局 模板 全屏和简单视图模式 只读模式 可配置页面设置 自定义用户界面