C# MVC VS WebAPI】的更多相关文章

一.为什么需要路由优先级 大家都知道我们在Asp.Net MVC项目或WebApi项目中注册路由是没有优先级的,当项目比较大.或有多个区域.或多个Web项目.或采用插件式框架开发时,我们的路由注册很可能不是写在一个文件中的,而是分散在很多不同项目的文件中,这样一来,路由的优先级的问题就突显出来了. 比如: App_Start/RouteConfig.cs中 routes.MapRoute( name: "Default", url: "{controller}/{action…
前言:在两年前,项目组推出了基于Dapper,Mvc和WebApi的快速开发框架,随着后续Slickflow产品的实践和应用,今再次对SlickOne项目做以回顾和总结.其目的是精简,持续改进,保持重构,让开发人员了解到最新的变化,尤其是全栈开发人员做以参考. 两年之前的博客文章可以查阅: http://blog.csdn.net/besley/article/details/8479943 1. 新版本变化综述: 1) Dapper部分的变化: Dapper本身有支持对数据库底层接口,此次主要…
刚才在博客园看了篇文章,http://www.cnblogs.com/cmt/p/csharp_regex_timeout.html  突然联想到以前遇到的问题,w3wp进程吃光CPU都挂起IIS进程,即使网站或者服务出现了问题,导致CPU百分之百,但是有时候我们根本不知道具体哪里出了问题!公司曾经一个项目组遇到过WCF服务端莫名其妙就CPU占用百分之百的情况,但是具体有查不到原因.我总结了下,查不到原因是因为没有合理的方法,根本不知道从何开始查.如果当时对客户端或者服务端方法调用都加上日志,估…
关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案 作者:陈希章 时间:2014-7-3 问题描述 当跨域(cross domain)调用ASP.NET MVC或者ASP.NET Web API编写的服务时,会发生无法访问的情况. 重现方式 使用模板创建一个最简单的ASP.NET Web API项目,调试起来确认能正常工作 创建另外一个项目,仅仅包含一个HTML页面,发起AJAX的调用 在浏览器中打开这个网页,我们会发现如下的错误(405:Method Not All…
1.mvc 和WebApi: 区别: a.MVC是建立网站的一种框架,倾向于返回用户的页面请求:webApi倾向于返回用户数据请求 b.mvc直接继承system.mvc.controller:webapi继承的是system.web.http.ApiController c.mvc只能部署在iis上:webapi可以寄宿在不同的宿主上,如:Web Host.Self Host方式 d.接收参数方式不一样, e.mvc可以返回JsonResult,前端可以直接用:webapi要返回json数据,…
上一篇搭建了页面,这里写下功能. 这里我用WebApi实现数据的增删改查. 一.新建Controller 为了区分明确,我在Controller文件夹下建立一个WebApi文件夹存放. 选中文件夹右键单击=>添加=>控制器=>Web Api控制器 1.这样会自动生成一个控制器,继承ApiController类 namespace mvc.Controllers.WebApi { public class DepartmentController : ApiController { } }…
我们在项目中很早就开始使用autofac,也以为知道与mvc和webapi集成的做法. var builder = new ContainerBuilder(); // Mvc Register builder.RegisterControllers(Assembly.GetExecutingAssembly()).AsSelf().PropertiesAutowired(); builder.RegisterFilterProvider(); builder.RegisterType<User…
前言:在两年前(最初发布时间:2013年1月9日(csdn),当前文章时间2015年11月10日),项目组推出了基于Dapper,Mvc和WebApi的快速开发框架,随着后续Slickflow产品的实践和应用,今再次对SlickOne项目做以回顾和总结.其目的是精简,持续改进,保持重构,让开发人员了解到最新的变化,尤其是全栈开发人员做以参考. 两年之前的博客文章可以查阅(最初发布时间:2013年1月9日): http://blog.csdn.net/besley/article/details/…
路由方面的: 转载地址:http://www.jb51.net/article/73417.htm Author:lijiao 这是一个对Asp.Net Mvc的一个很小的功能拓展,小项目可能不太需要这个功能,但有时候项目大了注册的路由不生效时你应该要想到有可能是因为路由顺序的原因,这时这个路由优先级的功能有可能就会给你带来便利.   一.为什么需要路由优先级 大家都知道我们在Asp.Net MVC项目或WebApi项目中注册路由是没有优先级的,当项目比较大.或有多个区域.或多个Web项目.或采…
本文转自:http://www.cnblogs.com/Hai--D/p/5992573.html var builder = new ContainerBuilder(); // Mvc Register builder.RegisterControllers(Assembly.GetExecutingAssembly()).AsSelf().PropertiesAutowired(); builder.RegisterFilterProvider(); builder.RegisterTyp…
首先我们来看下 这两个ActionFilterAttribute 的命名空间区别的: 可以看出mvc 引用的是System.Web.Mvc,webapi 引用的是System.Web.Http.Filters ,不知道小伙伴们有看出来别的区别没有,对的,有的 ,虚方法传入类不同,这样导致传入构造与输出构造也将不同了. 这里看下这两个如何拦截的吧,先说下mvc 的: //OnActionExecuting在被拦截Action前执行 public override void OnActionExec…
AutoFac  mvc和WebAPI  注册Service (接口和实现) 1.准备组件版本:Autofac 3.5.0    Autofac.Integration.Mvc 3.3.0.0  (Install-package  Autofac.Mvc 相应版本)   Autofac.Integration.WebApi 4.0.0.0 (Install-package  Autofac.WebApi 相应版本) ***install-package autofac.webapi2 (注意:您…
1.MVC使用的路由 在MVC中,默认路由机制是通过解析url路径来匹配Action.比如:/User/GetList,这个url就表示匹配User控制器下的GetList方法,这是MVC路由的默认解析方式. 为什么默认的解析方式是这样子的呢?因为MVC定义了一个默认路由,路由代码放在App_Start文件夹下的RouteConfig.cs中,今后我们如果想要自定义路由规则,那自定义路由的代码也要写在RouteConfig.cs中. public static void RegisterRout…
问题描述 当跨域(cross domain)调用ASP.NET MVC或者ASP.NET Web API编写的服务时,会发生无法访问的情况. 重现方式 使用模板创建一个最简单的ASP.NET Web API项目,调试起来确认能正常工作 public class UserController : ApiController { public UserModel getInfo() { UserModel um = new UserModel(); um.Uid = 5; um.UserName =…
昨天<怎样操作WebAPI接口(显示数据)>http://www.cnblogs.com/insus/p/5670401.html 既有使用jQuery,也有使作HttpClient来从数据库获取数据,并显示在ASP.NET MVC的视图中. 今天Insus.NET想把例子全完成,就是把其余的添加,更新,删除功能对Web API进行POST,PUT和DELETE操作. 去控制器创建3个操作,即所谓的Action,它们分别是POST(添加),PUT(更新),DELETE(删除): 纵观访问Web…
1.引用 using Autofac; using Autofac.Integration.Mvc; using Autofac.Integration.WebApi; 2.在Global中的Application_Start方法中添加如下 // Get your HttpConfiguration. var config = GlobalConfiguration.Configuration; var builder = new ContainerBuilder(); //builder.Re…
1. Web API简单说明 近来很多大型的平台都公开了Web API.比如百度地图 Web API,做过地图相关的人都熟悉.公开服务这种方式可以使它易于与各种各样的设备和客户端平台集成功能,以及通过在浏览器中使用 JavaScript来创建更丰富的HTML体验.所以我相信Web API会越来越有它的用武之地. 说道Web API很多人都会想到Web服务,但是他们仍然有一定的区别:Web API服务是通过一般的 HTTP公开了,而不是通过更正式的服务合同 (如SOAP)  2. ASP.NET…
Windows Live Writer 有点问题,着色代码看起来不清晰,所以贴的图片,完整代码在最后. 1:MVC实现 大致思路就是实现一个JsonpResult,在ExecuteResult内实现支持Jsonp,如图 实际上这样就可以在Action内返回JsonpResult对象就可以了.但为了方便起见,也可以添加个拓展. 这样一来我们就可以这样写 前台用ajax调用如下 2:WebApi实现 这里有两种用法,一种是自定义实现一个 JsonpMediaTypeFormatter,另外一种即为F…
  作者:陈希章 时间:2014-7-3 问题描述 当跨域(cross domain)调用ASP.NET MVC或者ASP.NET Web API编写的服务时,会发生无法访问的情况. 重现方式 使用模板创建一个最简单的ASP.NET Web API项目,调试起来确认能正常工作 创建另外一个项目,仅仅包含一个HTML页面,发起AJAX的调用 在浏览器中打开这个网页,我们会发现如下的错误(405:Method Not Allowed)   [备注]同样的情况,也发生在ASP.NET MVC中.某些时…
// Controllers.cs namespace Microshaoft.WebApi.Controllers { using Microshaoft.WebApi.Models; using System; using System.Collections.Generic; using System.Web.Http; using System.Net.Http; using System.Net; using System.Linq; public class PersonsContr…
今天在研究WebApi的时候,用mvc端直接请求webapi接口,发现怎么也请求不了,自己搞了半天,猜测可能是webapi没有完全启动吧,解决办法是将解决方案属性改为多启动项目,具体方法如下: 直接运行即可进入断点…
在MVC项目或者webAPI项目发布之后有时会发生404错误.针对这种错误的解决办法: 解决办法1(不推荐):在webconfig中 <system.webServer> 节点下 添加 <Modules runAllManagedModulesForAllRequests="true" >的节点 <system.webServer> <modules runAllManagedModulesForAllRequests="true&q…
public class Messages { /// <summary> /// 返回包含是否成功以及消息字符结果 /// </summary> /// <param name="success">是否成功(True-成功,False-失败)</param> /// <param name="msg">消息字符</param> public Messages(bool success, str…
什么是MVC (模型 视图 控制器)? MVC是一个架构模式,它分离了表现与交互.它被分为三个核心部件:模型.视图.控制器.下面是每一个部件的分工: 视图是用户看到并与之交互的界面. 模型表示业务数据,并提供数据给视图. 控制器接受用户的输入并调用模型和视图去完成用户的需求. 图: MVC (模型.视图.控制器) 你能解释下MVC的完整流程吗? 下面是MVC(模型.视图.控制器)架构的控制流程: 所有的终端用户请求被发送到控制器. 控制器依赖请求去选择加载哪个模型,并把模型附加到对应的视图. 附…
一.MVC的异常过滤器   1.自定义MVC异常过滤器 创建一个类,继承HandleErrorAttribute即可,如果不需要作为特性使用直接实现IExceptionFilter接口即可, 注意,该接口在System.Web.Mvc 命名空间下   /// <summary> /// 自定义的MVC异常过滤器 /// 可以在Controller或Action上单独使用,也可直接注册为全局过滤器 /// </summary> publicclassMVCExceptionFilte…
获取路径: MVC:Server.MapPath("/Templates/vshop/default.json") WebAPI:System.Web.Hosting.HostingEnvironment.MapPath("/Templates/vshop/default.json")…
前言:此文为极简mvc式的api框架,只当做入门api的解析方式,并且这里也不算是mvc框架,因为没有view层,毕竟现在大部分都属于前后端分离,当然也可以提供view层,因为只是将view当做文本返回. 目标: 1.针对Home/default进行解析.2.提供简单的httpcontext处理.3.对mvc的框架有个最简单的了解.4.一步步通过好的框架风格,建立自己的框架风格 关键还有一点就是很多东西比你想的还简单,难得是里面可扩展可维护的实现方式以及面面俱到的安全验证.但是前人栽树后人乘凉,…
一. Core Mvc 1.传统路由 Core MVC中,默认会在 Startup类→Configure方法→UseMvc方法中,会有默认路由:routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}"); 等价于 app.UseMvcWithDefaultRoute(); (1). 参数解析说明 name代表:路由名称, template代表:路由模板,可以在上面直接赋默认值,defaul…
今天,我想在此记录下 WebApi 跨域调用 1. 什么叫跨域: 跨域问题简单理解就是JavaScript同源策略的限制,其根本原因是因为浏览器对于这种请求,所给予的权限是较低的,通常只允许调用本域中的资源,除非目标服务器明确地告知它允许跨域调用. 所以,跨域的问题虽然是由于浏览器的请求产生,但是却需要在服务端来进行解决,道理很简单,不可能要求所有客户端降低安全性. 照下图,再深入了解下什么跨域: http://www.a.com/a.jshttp://www.a.com/b.js 同一域名下…
webapi中post提交的数据必须是一个类,get提交的数量无所谓 多种参数get时,参数名不能相同: 在能通过c#的校验的前提下,参数名.参数数量不能全完相同 public string Get(int page, int pagesize) { return "test1"; } public string Get(int page) { return "test2"; } 这是没问题的 ) { return "test1"; } publ…