首页
学习
活动
专区
圈层
工具
发布

ASP.NET Core应用基本编程模式:如何放置你的初始化代码

一个ASP.NET Core应用的核心就是由一个服务器和一组有序中间件组成的请求处理管道,服务器只负责监听、接收和分发请求,以及最终完成对请求的响应,所以一个ASP.NET Core应用针对请求的处理能力和处理方式由注册的中间件来决定...一个ASP.NET Core在启动过程中的核心工作就是注册中间件,本节主要介绍应用启动过程中以中间件注册为核心的初始化工作。...作为启动程序集的配置项目的名称为startupAssembly,对应静态类型WebHostDefaults的只读字段StartupAssemblyKey。...注册IHostingStartup程序集的配置项名称为hostingStartupAssemblies,对应静态类型WebHostDefaults的只读字段HostingStartupAssemblies...如果不希望第三方程序集对当前应用程序进行干预,我们可以通过配置项preventHostingStartup关闭这一特性,该配置项的名称对应WebHostDefaults的PreventHostingStartupKey

1.6K20

通过3个Hello World应用来了解ASP.NET 5应用是如何运行的(3)

我们在HelloWorld目录下创建一命名为Project4的子目录,这个目录就代码了我们即将创建的ASP.NET MVC应用。...{ public string Index() { return "Hello World"; } } } 我们知道一个项目的引用体现为针对另一个程序集...(程序集引用)或者项目(项目引用)的依赖。...由于采用的服务器(实际上是用于创建服务器的工厂类型)定义在程序集“Microsoft.AspNet.Server.WebListener.dll”,所以我们需要在dependencies配置项中添加对应...ASP.NET可以视为一种基础的架构平台,它的核心目的在于构建一个统一的、可扩展的请求处理管道模型,这个管道由一系列被称为中间件(Middleware)的请求处理器连接而成。

2.2K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    .NET 4.5.1 预览版新特性

    这需要进一步改造,而且其核心文件也不可能简单地从.NET 4.0中移除。为了解决这一问题,微软使用了命名空间切换。“命名空间切换的一般规则是,将System.Data....位于System.Data.dll程序集内System.Data命名空间中的EF相关类不会发生改变。在更新项目的using语句之前,需要移除对System.Data.Entity.dll的引用。...当应用程序处于空闲状态一段时间后,它将会被分页到磁盘,一旦某个请求到来或是完成,它将被唤醒。可以在IIS配置中将Time-out Action这一项设置为“挂起”以实现这一功能。...另一项在.NET 4.5.1中得到改进的部分是有关framework升级后系统的表现。目前,运行更新后的.NET Framework会使应用程序性能在短时间有一定程度的下降。...这是因为核心的.NET程序集在更新或补丁需要一段时间进行JIT编译。在Windows 8.1中,即使运行(更新后的).NET Framework,应用的性能也能保持稳定。

    1.1K60

    通过3个Hello World应用来了解ASP.NET 5应用是如何运行的(1)

    我们先创建一个空的目录并将其命名为“HelloWorld”,我们接下来创建的三个应用都保存在这里。...换句话说,我们熟悉不过的web.config在ASP.NET 5项目已经不再需要了,而project.json不仅仅是web.config的替代者,更多的配置信息被放置在这里。...KRuntime的核心是KRE(KRuntime Enviroment),不仅多个版本的KRE可以在同一台机器上并存,同一个应用程序可以采用不同版本的KRE来运行。...对于我们的程序来说,我们不曾在project.json中定义任何配置,所以目录下的.cs文件(Program.cs)会默认作为源文件编译到生成的程序集中(程序集会以项目的根目录进行命名,所以编译生成的目标程序集名称为...成功编译之后,目标程序集中的以Program命名的类型被解析出来,定义其中的Main方法将会作为入口程序被执行。

    1.1K60

    ASP.NET MVC 4 - 测试驱动 ASP.NET MVC

    测试驱动 ASP.NET MVC Keith Burnell 下载代码示例 模型-视图-控制器 (MVC) 模式的核心是将 UI 功能划分成三个组成部分。模型表示您的领域的数据和行为。...首先,我建议在创建 ASP.NET MVC 项目时使用空的项目模板。其他模板很适合于试验或创建概念证明,但它们通常会包含许多会让人分神且在真正的企业应用程序中不必要的干扰内容。...图 3 Tests 解决方案文件夹示例 命名您的测试项目 测试项目的命名方式与测试项目的定位同样重要。您希望能够轻松地区分每个测试项目中待测试的应用程序部分以及项目包含的测试类型。...在命名项目时添加测试类型是很有必要的,可避免命名冲突以及确定您在编辑器内处理的测试类型。图 4 显示具有测试项目的解决方案资源管理器。 ?...此外,因为您在 ASP.NET MVC 站点的 Application_Start 中注册依赖关系,因此,您的 Web 层必须直接知道绑定有依赖关系的应用程序的其他每个层。

    7.1K70

    ASP.NET Core基础补充03

    例如,如果要将RazorPages服务或MVC服务添加到asp.net核心应用程序,则需要将这些服务添加到该方法接受的参数中,如下图所示。...ASP.NET Core Startup类中的Configure()方法 在Configure方法中,我们可以使用内置IoC容器提供的IApplicationBuilder实例为asp.net核心应用程序配置应用程序请求管道...ASP.NET Core引入了中间件组件来定义请求管道,该管道将在每个请求上执行。 您仅包括应用程序所需的那些中间件组件,从而提高了应用程序的性能。...AppSetting.json 当我们使用空项目模板或Razor页面或MVC模板或Web API模板创建ASP.NET Core Web应用程序时,Visual Studio会自动为我们创建appsettings.json...然后,通过构造函数依赖项注入,我们注入IConfiguration对象并将其存储在私有变量config中。 以下代码。

    69210

    ASP.NET Web API自身对CORS的支持: CORS授权检验的实施

    二、CorsRequestContext 针对CORS的支持其实并不限于仅被使用在ASP.NET Web API上,用于根据提供的资源授权策略对跨域资源请求进行授权检验得引擎定义在程序集System.Web.Cors.dll...中,定义在另一个程序集对于这些类型来说,除了CorsPolicy定义在程序集System.Web.Cors.dll,其余的类型均定义在程序集System.Web.Http.Cors.dll中的相关类型可以视为对这个核心...对于本节引入的类型来说,它具有的命名空间其实也体现了它所在的程序集。...对于ASP.NET Web API来说,CORS资源授权检验实施的目标是表示当请求的HttpRequestMessage对象,这个对象自然不可能使用在ASP.NET的核心CORS引擎中。...三、CorsEngine 我们说ASP.NET 的核心CORS引擎定义在程序集System.Web.Cors.dll中,它主要体验为这个名为CorsEngine的对象,其主要的使命在于:根据提供的资源授权策略

    2.1K110

    Asp.Net Web API 2第十七课——Creating an OData Endpoint in ASP.NET Web API 2(OData终结点)

    客户端可以使用元数据来发现类型信息和关系的数据集。ASP.NET Web API OData可以很容易的创建OData终结点的数据集。您可以控制​​哪些操作的OData终结点支持。...选择合适的模版进行创建项目 并命名为OData,点击确认后,在下一个Asp.Net 项目对话框中选择 Empty的空模版,并在以下对象添加文件夹和核心引用下:进行勾选Web  API。...此字段也是后台数据库中表的主键,之后进行生成项目的步骤。 添加一个OData的控制器  控制器就是一个处理HTTP请求的类。在OData服务中你为每个实体数据集定义一个独立的控制器。...如果你命名这个实体集为”ProductSet“,那么你将需要把控制器命名为”ProductSetController“。请注意一个终结点可以包含多个实体集。...为每个实体集调用EntitySet,然后定义一个合适的控制器。 MapODataRoute 方法为OData终结点添加一个路由。

    1.6K31

    ASP.NET Core 2.0 : 三. 项目结构

    新建项目, 选择类型 新建项目, 选择.NET Core 有如下几种类型可选, 分别是Console, ASP.NET Core 的空项目, Web API 我们选择ASP.NET Core Web App...介绍的时候我会对比大家熟悉的ASP.NET Framework版本, 方便理解. ? ① Dependencies 依赖项 这里主要分两部分, NuGet和SDK, 目前这两部分下面都只有一项....猛地一看, 这是一非常大而全的包了, 和之前说的模块化有点不一致, 而且无缘无故的让自己的项目引用了一些根本用不到的程序集, 非常不爽....其实这些程序集不会随着项目发布一起出现在部署包中, 不止没引用的, 包括引用的也不会. 这些已经存在于部署环境中了, 所以发布包不会变大反而会变小, 不必担心....相对于上面的Microsoft.AspNetCore.All, 它同样是包含了一些程序集.但它似乎更"基础"一些.

    2.3K50

    ASP.NET MVC框架(第四部分): 处理表单编辑和提交场景

    一开始,在ASP.NET MVC项目中,右击/Models子目录,选择“添加新项” -> “LINQ to SQL 类”,调出 LINQ to SQL ORM 设计器来对我们的数据对象建模: ?...在第一个预览版中,只有"ActionLink"方法是内置于System.Web.Extensions(目前实现核心ASP.NET MVC框架的程序集)中的。...要安装MVCToolkit HTML辅助方法的话,只要将MVCToolkit.dll程序集添加为你的项目的引用即可: ?...如果你引用了MVCToolkit程序集,你可以利用在System.Web.Mvc.BindingHelpers命名空间下实现的一个有用的扩展方法,来对此代码作些清理。...但注意,填充的不是一个空对象,我们使用了一个模式,先从数据库中获取老的值,然后对它应用用户做的改动,然后更新到数据库中。

    7K70

    在一个空ASP.NET Web项目上创建一个ASP.NET Web API 2.0应用

    做这些的目的何在?哪些是必需的,哪些又是不必要的?正是基于这样的目的,在接下来演示的实例中,我们将摒弃Visual Studio为我们提供的向导,完全在创建的空项目中编写我们的程序。...三、以Web Host方式寄宿Web API 我们在上面已经提到过了,虽然被命名为ASP.NET Web API,但是其核心的消息处理管道却是独立于ASP.NET平台的,所以我们可以对相同的Web API...采用Web Host方式寄宿Web API的宿主程序WebHost是一个空的ASP.NET应用。...除了程序集“System.Net.Http.dll”(它属于.NET Framework 原生的程序集)之外,其余3个均可以在目录“%ProgramFiles%\Microsoft ASP.NET\ASP.NET...对于SelfHost这么一个空的控制台应用来说,除了需要添加针对WebApi的项目引用之外,还需要添加如下4个程序集引用。

    5.4K110

    ASP.NET MVC Controller激活系统详解:总体设计

    我们使用Visual Studio提供的项目模板创建一个空的ASP.NET MVC应用,并且使用如下所示的默认路由注册代码。...现在我们对本例的路由注册代码作了如下的修改,为注册的路由对象指定了两个命名空间(分别是两个HomeContrller所在的命名空间),运行我们的程序依然会得到如第一张图所示的错误。...如果注册对象具有命名空间(调用MapRoute方法时指定了命名空间或者对应的AreaRegistration类型定义在某个命名空间中),该条目的值为False;否则为True。...在一个通过Visual Studio的ASP.NET MVC项目创建的空Web应用中,我们添加一个名称为Admin的Area,此时IDE会默认为我们添加如下一个AdminAreaRegistration...通过《ASP.NET路由系统实现原理:HttpHandler的动态映射》介绍我们知道ASP.NET路由系统的核心是一个叫做UrlRoutingModule的自定义HttpModule,路由的实现是它通过注册代表当前

    2.2K60

    ASP.NET MVC是如何运行的: 建立在“伪”MVC框架上的Web应用

    通过上面对ASP.NET管道设计的介绍,我们知道ASP.NET的扩展点只要体现在HttpMoudle和HttpHandler这两个核心组建之上,实际上整个ASP.NET MVC框架就是通过自定义的HttpMoudle...值得一提的是,为了让读者根据该实例从真正的ASP.NET MVC中找到对应的组件,我完全采用了与ASP.NET MVC一致的类型命名方式。...我们通过Visual Studio创建一个空的ASP.NET Web应用(注意不是ASP.NET MVC应用),我们不会引用System.Web.Mvc.dll这个程序集,所以你在接下来的程序中看到的定义在该程序集中的同名类型都是我们自行定义的...如下面的代码片断所示,按照我们熟悉的命名方式(以字符Controller作为后缀),我们定义了如下一个HomeController。...前面定义的HomeController定义在命名空间WebApp下,由于请求地址中只能解析出Controller类型的名称,我们需要将该命名空间注册为当前ControllerBuilder的默认命名空间

    1.8K60

    ASP.NET保持用户状态的九种选择

    .数据集有多大? 通过回答这些问题,你能决定哪个对象为保持ASP.NET应用程序请求间数据提供了最佳的解决方案。图1列出了不同的状态管理对象并描述了什么时候使用它们。...这些数据事实上可以是任意大小的,它随着每个form post在网络上向前和向后发送。 在传统的ASP中,这是在应用程序中暴露状态的通常的途径,特别是在多页面窗体应用程序中。...它可以保持很长时间,但是不能超过应用程序重新启动的时间,并且数据的终止基于时间或者其它的依赖关系。它可以高效率地保持大量或少量地数据。 Cache 是ASP.NET中最"酷"的对象之一。...当你处理缓存中的项时也可能使用这种模式。使用if语句来检查缓存的当前内容是否为空(因为要多次引用,为缓存键使用了一个变量)。如果是空的,从数据源生成数据并放入缓存中。如果不是空的,从缓存中返回数据。...每个ASP.NET应用程序使用Web.config文件来设置它的许多属性,每个服务器在系统文件夹下有一个作为应用程序基础的Machine.config文件。这些设置都作为默认值使用,除非重载。

    2.5K20

    【ASP.NET Core 基础知识】--项目结构

    一、ASP.NET Core项目的基本结构 ASP.NET Core项目的基本结构通常遵循一种标准的组织方式,这有助于提高项目的可维护性和可扩展性。...以下是一个典型的ASP.NET Core项目的基本结构: 项目文件 (.csproj): 项目的主要配置文件,定义了项目的依赖项、输出等信息。...以下是主要的文件和文件夹的作用: 项目文件 (.csproj): 作用: 项目文件是项目的主要配置文件,定义了项目的依赖项、输出等信息。它告诉编译器如何构建和组织项目。...组织方式: 通常按照控制器的命名规则进行组织,例如 HomeController 的视图放在 Views/Home 文件夹下。...四、配置文件 在ASP.NET Core中,配置文件是一种存储应用程序配置信息的方式,允许将应用程序配置从代码中分离出来,以便于修改和管理。

    1.1K10

    .NET Core多平台开发体验: Windows

    对于传统的.NET Framework应用来说,即使是一个空的C#项目,定义该项目的.csproj文件在内容和结构上显得比较复杂。...我们执行的dotnet new命令行除了帮助我们创建一个空的控制台程序之外,还会帮助我们生成一些初始化代码,这就是项目目录下的这个Program.cs文件的内容。...除此之外,针对不同目标框架编译生成的程序集是不同的,所以最终生成的程序集会采用基于目标框架的目录结构进行组织,所以最终生成的这个程序集被保存在“\bin\Debug\netcoreapp2.0\”目录下...为了在程序性中使用到上述这两个对象,我们自然先得具有对应程序集的引用。...Core MVC应用 对于我们在上面一节创建的这个极简ASP.NET Core应用来说,它对应的管道由一个服务器和一个中间件组成,前者的类型为KestrelHttpServer,后者则将每个请求的响应内容统一设置为

    2.2K70
    领券