第2章 ASP.NET Core

目录

第二章的所有Demo(0积分)

https://download.csdn.net/download/weixin_55959870/77118033

2.1 ASP.NET Core 相关概述及创建

2.2 ASP.NET Core 中的应用启动

2.3 ASP.NET Core 中的跨域请求 

2.4依赖注入


第二章的所有Demo(0积分)

https://download.csdn.net/download/weixin_55959870/77118033

2.1 ASP.NET Core 相关概述及创建

        

随着时代发展,ASP.NET经历了从无到有的发展,即从WebForm
框架到MVC框架的转变。随着云计算和微服务的发展,为方便开发
跨平台微服务程序,微软公司推出了ASP.NET Core这一新一 代的模块
化Web开发平台。
(1) ASP.NET Core基本概念,ASP.NET Core的优点和创建项目的步骤
(2) ASP.NET Core的应用启动过程
(3) ASP.NET Core中的跨域请求
(4) ASP.NET Core依赖注入
 

1.ASP.NET Core概述
ASP.NET Core是一个跨平台的高性能开源框架,用于生成基于
云且连接Internet网络的新式应用程序。
使用ASP.NET Core可以实现以下需求:
(1)创建Web应用程序和服务、loT 应用和移动后端。
(2 )在Windows、macOS和Linux上使用喜爱的开发工具。
(3)部署到云或本地。
(4)在.NET Core或.NET Framework上运行。
 

2.APS.NET Core的优点
ASP.NET Core是重新设计的ASP.NET 4.x,微软重构了整个ASP.NET
体系结构,形成了更精简的模块化框架,它具有以下优点:
(1) Web UI应用开发和Web API应用开发使用统一-的编程模型。
(2)支持针对可测试性进行构建。
(3) Razor Pages可以使页面的编码方式更简单高效。
(4)支持Blazor框架,Blazor 允许在浏览器中使用C#和JavaScript。
(5)能够在Windows、macOS和Linux上进行开发和运行。
(6)支持开放源代码和以社区为中心。
(7)集成新式客户端框架和开发工作流。
(8)支持使用gRPC协议远程过程调用。
(9)基于环境的云就绪配置系统。
(10)内置依赖项注入。
(11)支持轻型的高性能模块化HTTP请求管道。
(12)能够托管到Kestrel、IS、 HTTP.sys、 Nginx、 Apache和Docker等服务器或容器中
(13)支持并行版本控制。
(14)支持新式Web开发工具,如Visual Studio Code。

创建项目

 

3.创建ASP.NET Core项目
ASP.NET Core Web应用程序项目的目录结构跟以前的ASP .NET Web应用
程序项目有以下三点区别:
(1)在之前的ASP.NET Web应用程序项目中使用Web .config配置文件,在ASP.NET Core Web
应用程序项目中使用apsetigsison配置文件。
(2)首先,把之前的ASP.NET Web应用程序项目的JavaScript文件存放在Scripts文件夹中、
图片和样式表文件存放在Content文件夹中;其次,再将JavaScripl文件存放在ASP NET Core Web
应用程序项目中;最后JavaScript文件、 图片文件和样式表文件都存放在对应的子文件夹中。
(3) ASP.NET Core Web应用程序中的路由配置、中间件配置、依赖配置都在Startup.cs文件中
 

2.2 ASP.NET Core 中的应用启动

1.ASP.NET Core启动过程
ASP.NET Core应用程序本质上是一个独立的控制台应用程序,
它不是必须由1IS内部托管运行。ASP.NET Core应用程序拥有一个内
部的自托管( Self- Hosted )的Web服务器,由该服务器负责处理外
部请求,这个Web服务器称为Kestrel Web服务器,并且.NET Core
支持的所有平台和版本均支持Kestrel。


ASP.NET Core应用程序本质上是一个独立的控制台应用程序,
它不是必须由IIS内部托管运行。
ASP.NET Core应用程序的启动主要包含以下三个步骤:
(1)调用CreateHostBuilder(方法创建IWebHostBuilder实例。
(2)调用Build(方法,IWebHostBuilder实例负责 创建IWebHost实例对象。
(3)调用Run0)方法,启动IWebHost实例。
在CreateHostBuilder|方法中,先通过CreateDefaultBuilder|)方法创
建IWebHostBuilder实例,再通过ConfigureWebHostDefaults() 方法来使用
Startup类中所定义的环境、中间件和服务配置。
 

 2.Startup类
ASP.NET Core会在主程序集中搜索名为“Startup" 的类,开发
者也可以指定一个其他程序集用于检索, 只需要配置Hosting:Aplication
配置键。ASP.NET Core并不关心Startup类是否定义为public,如果
它符合命名规范,ASP.NET将继续加载它,如果有多个Startup类,
也不会触发异常,ASP.NET 将基于命名空间选择其中一个。

3.Configurel)方法
Configure()方法用于指定ASP.NET Core应用程序将如何响应每
个HTTP请求。简单来说,开发者可以配置每个请求都接收相同的响
应。更复杂的管道配置可以封装到中间件( Middleware)之中,并
通过扩展方法添加到IApplicationBuilder上。
Configurel)方法必须接受一个IApplicationBuilder 参数。Configure()
方法包含一-些额外服务, 比如实现IWebHostEnvironment或oggerFactory
接口的实例也可以指定,如在它们可用的情况下,这些服务将会被
服务器注入进来。

这个文件提供相关的配置

所有的样式文件以及接收文件都存放在wwwroot        

都是一些启动项(重要)

2.3 ASP.NET Core 中的跨域请求 

1.启用ASP.NET Core中的跨域请求
出于对客户访问安全的考虑,浏览器中的网页只能向本源网站
发送请求,也就是说,浏览器会阻止网页向其他网站(即其他区网
络域)发送请求,此限制称为相同源策略。
ASP.NET Core内置支持跨源资源共享(CORS)功能,实现跨越请
求处理的步骤是:
(1)在ConfigureServices(方法中调用AddCors0方法添加跨域策略。
(2)在Configure0方法中配置CORS中间件将CORS策略应用到所有应用终结点。
 

startup代码中

  public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }
        readonly string MyCorsPolicy = "CorsPolicy";

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddCors(options =>
            {
                options.AddPolicy(MyCorsPolicy, builder =>
                 {
                     builder.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod();
                 });
            });
            services.AddControllers();
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseHttpsRedirection();

            app.UseRouting();

            app.UseAuthorization();

            app.UseCors();
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers().RequireCors(MyCorsPolicy);
            });
        }
    }

Controllers中添加一个新的控制器


    [Route("api/[controller]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        [HttpGet]
        public List<string> Get() {
            List<string> list = new List<string>();
            list.Add("我是是是是1");
            list.Add("我是是是是2");
            list.Add("我是是是是3");
            list.Add("我是是是是4");
            return list;
        }

    }

解决方案下添加新的demo

 在view下的Home的index.cshtml视图中添加如下代码


<div id="app">
    <input type="text" class="form-control" placeholder="请输入关键字..." />
    <ul class="list-group">
        <li class="list-group-item" v-for="item in filterTraveIList" :key="item">{{item}}</li>
    </ul>
</div>
<script src="~/js/axios/dist/axios.min.js"></script>
<script src="~/js/vue/dist/vue.min.js"></script>
<script>
    var vm = new Vue({
        el: "#app",
        data: {
            key: "",
            traveIList: []
        },
        created: function () {
            var self = this;
            axios.get("https://localhost:44343/api/values")
                .then(function (res) {
                var result = res.data;
                self.traveIList = result;
                 })
                .catch(function (err) {
                    console.log(err)
                });
        },
        computed: {
            filterTraveIList: function () {
                var self = this;
                return this.traveIList.filter(function (item) {
                    return item.indexOf(self.key) != -1;
                });
            }
        }
    });

</script>

设置启动顺序

 

 确定

ctrl+F5运行

 两个页面

2.4依赖注入

Coreweb页面的Startup.cs中

services.AddTransient<接口定义, 接口的实实现>();

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值