为了账号安全,请及时绑定邮箱和手机立即绑定

ASP.Net Core WebApi和ASP.Net WebApi有什么不一样嘛?

ASP.Net Core WebApi和ASP.Net WebApi有什么不一样嘛?

富国沪深 2018-07-31 11:10:29
如题:ASP.Net Core WebApi和ASP.Net WebApi有什么不一样嘛?约详细越好,谢谢求,大神指点一下,谢谢了
查看完整描述

1 回答

?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

应该有挺多地方不一样的,具体的话呢,我简单列了一下:

配置项

 以前是写在Global.asax.cs, 的这个方法里面 WebApiConfig.Register

using System;using System.Collections.Generic;using System.Linq;using System.Web.Http;namespace ProductsApp{    public static class WebApiConfig
    {        public static void Register(HttpConfiguration config)        {            // Web API configuration and services

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }
}

现在的话,写在 Startup.cs 里面了

using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using Microsoft.AspNetCore.Builder;using Microsoft.AspNetCore.Hosting;using Microsoft.Extensions.Configuration;using Microsoft.Extensions.DependencyInjection;using Microsoft.Extensions.Logging;namespace ProductsCore{    public class Startup
    {        public Startup(IHostingEnvironment env)        {            var builder = new ConfigurationBuilder()
                .SetBasePath(env.ContentRootPath)
                .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
                .AddEnvironmentVariables();
            Configuration = builder.Build();
        }        public IConfigurationRoot Configuration { get; }        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)        {            // Add framework services.
            services.AddMvc();
        }        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)        {
            loggerFactory.AddConsole(Configuration.GetSection("Logging"));
            loggerFactory.AddDebug();

            app.UseMvc();
        }
    }
}

Controller 中的变化

路由配置的变化(在 Startup 中)

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory){
    app.UseMvc(routes =>
    {
        routes.MapWebApiRoute("DefaultApi", "api/{controller}/{id?}");
    });
}

还有,原来的 Controller 是继承至 APIController 的,在. NET-Core 中并不是,
下面是一个.NET-Core 中Controller 的一个例子

using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using Microsoft.AspNetCore.Mvc;namespace ProductsCore.Controllers{
    [Route("api/[controller]")]    public class ValuesController : Controller
    {        // GET api/values
        [HttpGet]        public IEnumerable<string> Get()        {            return new string[] { "value1", "value2" };
        }        // GET api/values/5
        [HttpGet("{id}")]        public string Get(int id)        {            return "value";
        }        // POST api/values
        [HttpPost]        public void Post([FromBody]string value)        {
        }        // PUT api/values/5
        [HttpPut("{id}")]        public void Put(int id, [FromBody]string value)        {
        }        // DELETE api/values/5
        [HttpDelete("{id}")]        public void Delete(int id)        {
        }
    }
}


查看完整回答
反对 回复 2018-08-26
  • 1 回答
  • 0 关注
  • 2153 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信