感叹: Core 16年6月1号 在中国宣布上线 到现在已经快经历两年时间了,目前版本已经到了2.0 就目前的前景来看,个人感觉 到2020年才可能有所起色,等到Core更成熟

个人看法:在.net这条路上总感觉后劲不足,市场好像越来越小了。不过学习还是要学的,毕竟很喜欢 c#

  (1)有关怎么创建Core MVC/API 这里就不说了,前段时间的博客中有说过:这里介绍的是有关 AspNetCore web 通用的基础知识,不针对单独的MVC/API介绍,也是我个人学习的结果,写出来希望和大家相互学习讨论,共同进步,希望在大家这里学到更多

  (2) 项目创建生成后我们会看到这样两个类 (Program/Startup)如图下图所示

和我们的 ASP.NET MVC / ASP.NET Api  做比较 有关  Global.asax、FilterConfig.cs 和 RouteConfig.cs 等都被 Program.cs 和 Startup.cs两个类取而代之. 程序中 把Program.cs 作为 Web 应用程序的入口,程序启动的时候会调用 Startup.cs 类。

Startup.cs 作用就是,对项目中用到的  静态文件,管道,服务,日志,路由,数据库连接,过滤器的注册  等  所有的有关程序的启动运行中用到的。、

传统的MVC/Api 使用的比较多的开发人员初步接触都会感到有点迷茫,这里我们对这两个类进行剖析。不足之处希望大家指出。

  (3) Startup类  初始内容    

       public void ConfigureServices(IServiceCollection services)
{
//运行时调用此方法。使用此方法向容器添加服务。
} public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
//运行时调用此方法。使用此方法配置HTTP请求管道
}

     3.1  ConfigureServices 方法 使用

                             

 public void ConfigureServices(IServiceCollection services)
{
//注入MVC的服务 services.AddMvc();
// 添加 EF 服务 可以添加多个 使用多个EF 多个库
//services.AddEntityFrameworkSqlServer().AddDbContext<EFDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("SqlServer")));
// services.AddEntityFrameworkSqlServer().AddDbContext<EFLogDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("SqlServerLog")));
services.AddMvc();
// 添加自定义服务 :详见 IServiceCollection
}

     3.2  Configure 方法的使用

//重新定义 IHostingEnvironment
public IHostingEnvironment HostingEnvironment { get; }
//运行时调用此方法。使用此方法配置HTTP请求管道
public void Configure(IApplicationBuilder app)
{
//判断当前的运行环境 是否是 Microsoft 如果是则返回true
// 如果要判断其他的运行环境比如Linux 可以用 env.IsEnvironment("environmentname") 要验证的环境名称 忽略大小写
if (HostingEnvironment.IsDevelopment())
{
//抓取错误信息 把错误信息生成 HTML
//关于这个等写到关于错误处理的时候详细说明**************************** app.UseDeveloperExceptionPage();
}
else
{
//自定义错误信息帮助页
app.UseExceptionHandler("/Home/Error");
}
//已被重写
//if (env.IsDevelopment())
//{
// app.UseDeveloperExceptionPage();
//} //使用MVC默认路由 app.UseMvcWithDefaultRoute();
app.UseMvc(); //使用MVC的管道路径 可以在这里配置路由等操作
//app.UseMvc(
// routes =>
// {
// routes.MapRoute(
// name: "User",
// template: "{controller}/{action}/{id?}",
// defaults: new { controller = "User", action = "Index" });
// });
//app.UseMvc(routes =>
//{
// routes.MapRoute(
// name: "default",
// template: "{controller}/{action=Index}/{id?}");
//});
}

有关 IHostingEnvironment          参考 https://msdn.microsoft.com/zh-cn/library/system.web.hosting.hostingenvironment.aspx

  (4) Program类  初始内容 

public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
} public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
}

    4.1实现不依赖 Startup 启动程序  直接在 Program 类中 构建  扩展,配置,配置 ,扩展,日志

public class Program
{
public static IServiceCollection services { get; set; }
public static IHostingEnvironment HostingEnvironment { get; set; }
public static void Main(string[] args)
{
BuildWebHost(args).Run();
} public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
//构建 扩展,配置,配置 ,扩展,日志,ILoggerFactory
.ConfigureAppConfiguration((WebHostBuilderContext, config) =>
{
HostingEnvironment = WebHostBuilderContext.HostingEnvironment;
})
.ConfigureServices((IServiceCollection, services) =>
{
services.AddMvc();
})
.Configure(app =>
{
if (HostingEnvironment.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
}
//使用MVC默认路由 app.UseMvcWithDefaultRoute();
//使用静态文件
app.UseStaticFiles("");
//配置路由
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller}/{action=Index}/{id?}");
});
})
//被替换掉的启动项
// .UseStartup<Startup>() .Build();
}

 
    不足之处希望大家指出,相互交流学习
   
    

AspNet Core Web 应用程序的启动 当项目中 没有Startup.cs 类如何设置启动 配置等等的更多相关文章

  1. 设计模式(一)单例模式:创建模式 ASPNET CORE WEB 应用程序的启动 当项目中 没有STARTUP.CS 类如何设置启动 配置等等

    设计模式(一)单例模式:创建模式 先聊一下关于设计的几个原则(1)单一原则(SRP):一个类应该仅有一个引起它变化的原因 :意思就是 (一个类,最好只负责一件事情,并且只有一个引起它变化的原因(2)开 ...

  2. AspNet Core Web 应用程序的启动(有关 Program.cs类/ Startup.cs类 ) 当项目中干掉 Startup.cs 类如何设置启动 配置等等

    .有关怎么创建Core MVC/API 这里就不说了,前段时间的博客有说过: 1.  项目生成后会有如图所示两个类 Program类Startup类 2. Startup类  初始内容 public ...

  3. Asp.Net Core Web应用程序—探索

    前言 作为一个Windows系统下的开发者,我对于Core的使用机会几乎为0,但是考虑到微软的战略规划,我觉得,Core还是有先了解起来的必要. 因为,目前微软已经搞出了两个框架了,一个是Net标准( ...

  4. 使用docker部署Asp.net core web应用程序

    拉取aspnetcore最新docker镜像 aspnetcore的docker镜像在docker官网是有的,是由微软提供的.它的依赖镜像是microsoft/dotnet.通过访问网址:https: ...

  5. ASP.NET Core Web 应用程序系列(五)- 在ASP.NET Core中使用AutoMapper进行实体映射

    本章主要简单介绍下在ASP.NET Core中如何使用AutoMapper进行实体映射.在正式进入主题之前我们来看下几个概念: 1.数据库持久化对象PO(Persistent Object):顾名思义 ...

  6. ASP.NET Core Web 应用程序系列(三)- 在ASP.NET Core中使用Autofac替换自带DI进行构造函数和属性的批量依赖注入(MVC当中应用)

    在上一章中主要和大家分享了在ASP.NET Core中如何使用Autofac替换自带DI进行构造函数的批量依赖注入,本章将和大家继续分享如何使之能够同时支持属性的批量依赖注入. 约定: 1.仓储层接口 ...

  7. ASP.NET Core Web 应用程序系列(二)- 在ASP.NET Core中使用Autofac替换自带DI进行批量依赖注入(MVC当中应用)

    在上一章中主要和大家分享在MVC当中如何使用ASP.NET Core内置的DI进行批量依赖注入,本章将继续和大家分享在ASP.NET Core中如何使用Autofac替换自带DI进行批量依赖注入. P ...

  8. ASP.NET Core Web 应用程序系列(一)- 使用ASP.NET Core内置的IoC容器DI进行批量依赖注入(MVC当中应用)

    在正式进入主题之前我们来看下几个概念: 一.依赖倒置 依赖倒置是编程五大原则之一,即: 1.上层模块不应该依赖于下层模块,它们共同依赖于一个抽象. 2.抽象不能依赖于具体,具体依赖于抽象. 其中上层就 ...

  9. ASP.NET Core Web 应用程序开发期间部署到IIS自定义主机域名并附加到进程调试

    想必大家之前在进行ASP.NET Web 应用程序开发期间都有用到过将我们的网站部署到IIS自定义主机域名并附加到进程进行调试. 那我们的ASP.NET Core Web 应用程序又是如何部署到我们的 ...

随机推荐

  1. python 3.6 +pyMysql 操作mysql数据库

    版本信息:python:3.6 mysql:5.7 pyMysql:0.7.11 ########################################################### ...

  2. 怎样将word文件转化为Latex文件:word-to-latex-2.56具体解释

    首先推荐大家读一读这篇博文:http://blog.csdn.net/ibingow/article/details/8613556 --------------------------------- ...

  3. Selenium_WebDriver登录模拟鼠标移动切换窗体等操作练习(cssSelector初练手)_Java

    cssSelector 据说cssSelector比xpath快. 所以,有固定ID属性的页面元素用By.id或者By.cssSelector("#id属性值")来找,有class ...

  4. 让Android Support V4中的SwipeRefreshLayout支持上拉载入很多其它

    前言 原来的Android SDK中并没有下拉刷新组件,可是这个组件确实绝大多数APP必备的一个部件.好在google在v4包中出了一个SwipeRefreshLayout.可是这个组件仅仅支持下拉刷 ...

  5. Unity For Android Cardboard App ( 1 ):基础入门

    作者: ericzwhuang 前言 目前Google官方推出的VR设备有DayDream(2016年推出)和Cardboard(2014年推出)两种. Daydream是消费级VR解决方案,提供了手 ...

  6. 获取AJAX加载的内容

    1.有些网页内容使用AJAX加载,AJAX一般返回的是JSON,直接对AJAX地址进行post或get,就返回JSON数据了. 2.用抓包工具分析https://movie.douban.com/j/ ...

  7. Springboot 之 解决IDEA读取properties配置文件的中文乱码问题

    问题描述 当在.properties的配置文件中有中文时,读取出来的总是乱码.比如我的application.properties配置文件的内容如下: server.port=9090 test.ms ...

  8. JMeter脚本获取变量名、检验字符串值

    说明: 脚本中获取变量值用vars.get("变量名"); 校验String类型的值使用String.equals("字符串值"),而不能用String==&q ...

  9. htpasswd 命令详解

    htpasswd参数 -c 创建passwdfile.如果passwdfile 已经存在,那么它会重新写入并删去原有内容. -n 不更新passwordfile,直接显示密码 -m 使用MD5加密(默 ...

  10. C++11新语法糖之尾置返回类型

    C++11的尾置返回类型初衷是为了方便复杂函数的声明和定义,但是当复杂度稍微提升一些的时候很明显能注意到这种设计的作用微乎其微. 首先考虑如下代码: C++ //返回指向数组的指针 auto func ...