精华内容
下载资源
问答
  • 小旋风aspWebServer iis服务器 win7可用

    热门讨论 2012-05-07 15:26:42
    小旋风aspWebServer iis服务器 win7可用
  • 最新的Pro ASP.NET Web API HTTP Web Services in ASP.NET; 英文高清pdf; 2013年新书,学习ASP.NET Web API 现阶段最权威的一本专业教材; 前置技能:C#(掌握) , MVC(掌握或了解) ,数据库(掌握),HTML(掌握)...
  • ASP.NET Web API和ASP.NET Web API 2有什么区别?分别怎么创建呢?
  • Asp.net MVC 与 Asp.net Web API 区别

    千次阅读 2019-07-27 17:00:57
    Asp.net MVC 与 Asp.net Web API 区别 Asp.net MVC 与 Asp.net Web API 区别Asp.Net Web API VS Asp.Net MVC 在我们开发一些web应用时,我们一样可以在MVC Framework 中使用JsonResult 来返回JSON数据,同样也可以...

    Asp.net MVC 与 Asp.net Web API 区别

    1. Asp.net MVC 与 Asp.net Web API 区别Asp.Net Web API VS Asp.Net MVC

    在我们开发一些web应用时,我们一样可以在MVC Framework 中使用JsonResult 来返回JSON数据,同样也可以处理一下简单的AJAX请求,那么为何微软又推出Web API这么个东西呢?接下来我们来比较一下。二者(Asp.net MVC 与 Asp.net Web Api)何时用?

    Asp.Net Web API VS Asp.Net MVC

    1、Asp.net MVC 是用来创建返回视图(Views)与数据的Web应用,而Asp.net Web API是一种简单轻松地成熟的HTTP服务,它只返回数据,不返回视图(Views)。

    2、Asp.net Web API可以通过.Net Framework来帮助我们构建REST-ful服务,而且他支持内容协商(根据客户端能接受的格式要求,返回相应的JSON,XML,ATOM),同时Asp.net Web API支持自我宿主(self-hosting),而MVC并不支持(只能宿主在IIS中)。

    3、Asp.net Web API可以返回特定的数据类型,比如JSON,XML,或者其他在请求头中定义的数据格式。而MVC只能利用Json Result返回JSON数据类型。

    4、Asp.net Web API 根据HTTP 谓语动词来映射Action,但MVC只是映射 Action 名称。

    5、Asp.net Web API 一种全新的框架,它是Asp.net Framework 核心库的一部分。在Asp.net Web API 一些存在MVC中的特征(model binding、filters、路由)是存在System.Web.Http程序集中,而MVC是存在System.Web.Mvc中。因此,Web API 可以和Asp.net一起使用,也可以做独立的服务层。

    6、如果在一个项目中融合Web API和MVC controller,用于处理复杂AJAX请求,这些请求可能返回JSON,XML或者其他数据格式。这就是Web API 自我宿主(Web API self-hosting)。

    7、如果融合MVC和Web API 控制器(controller),而且需要集成认证,这时,需要创建两个过滤器(Filters),一个MVC的,另一个Web API的,因为他们两个是不相同的。

    8、总之,WebApi在提供数据方面,是比MVC更加轻量的架构。

    1. 简单的总结

    一.MVC主要用来构建网站,既关心数据也关心页面展示,而Web API只关注数据
    二.Web API支持格式协商,客户端可以通过Accept header通知服务器期望的格式
    三.Web API支持Self Host,MVC目前不支持
    四.b API通过不同的http verb表达不同的动作(CRUD),MVC则通过Action名字表达动作
    五.b API内建于ASP.NET System.Web.Http命名空间下,MVC位于System.Web.Mvc命名空间下,因此model binding/filter/routing等功能有所不同
    六.b API非常适合构建移动客户端服务

    展开全文
  • ASP.NET WEB介绍

    千次阅读 多人点赞 2019-03-22 14:30:13
    我的ASP.NET 第一讲 ASP.NET 入门 ASP.NET 是动态 网络 语言。那么运行 在服务器中,在这里我们始终离不开浏览器的角色,因此在学习网页开发先了解浏览器: 浏览器的介绍 一.五大浏览器:* 1.浏览器有哪些? ...

    我的ASP.NET 第一讲 ASP.NET 入门
    ASP.NET 是动态 网络 语言。那么运行 在服务器中,在这里我们始终离不开浏览器的角色,因此在学习网页开发先了解浏览器:
    浏览器的介绍
    一.五大浏览器:*
    1.浏览器有哪些?

    							 **Internet Explorer (IE), Trident内核:
    							 FireFox(火狐),  Gecko内核:
    							 Chrome(谷歌)  WebKit内核 和 Blink内核
    							 Opera(欧朋)Presto内核  和 Blink内核
    							 Safari(苹果) WebKit内核 和 Blink内核 13年后的**
    						
    				浏览器的核心就是内核:可大概译为"渲染引擎",不过我们一般习惯将之称为"浏览器内核"
    

    1.2 浏览器内核

    				1.Trident内核:代表产品IE,又称为IE内核。是微软开发的一种排版引擎。使用Trident渲染引擎的浏览器有:IE,遨游,世界之窗浏览器,腾讯TT等等。
    				2.Gecko内核:代表产品Mozilla FirefoxGecko是一套开源的,C++编写的排版引擎。使用它最著名的浏览器有Firefox,Netscape6至9。
    				3.WebKit内核:代表产品有Safari,主要用于Mac OS系统。使用它的浏览器是Safari和谷歌浏览器Chrome。
    				4.Presto内核:代表产品OperaPresto是由Opera Software开发的浏览器排版引擎,它是世界公认最快的渲染速度的引擎。在13年之后,Opera宣布加入谷歌阵营,弃用了。
    				5.Blink内核:由Google和Opera Software开发的浏览器排版引擎,2013年4月发布。现在Chrome和Opera内核是Blink。
    

    ·浏览器介绍完了后,我们就该清楚让同学们清楚,什么是WEB,其实WEB概念很抽象接下来我们来讲述一下吧:
    二. WEB 是什么?

    01.概念:Web它是一种基于 超文本 和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。

    											001.超文本:HTML
    											002.HTTP:通讯协议
    											003.动态交互:比如每天网站信息都时时更新
    											004.跨平台:可以在不同的操作系统上运行
    														00001.平台:平台就是操作系统
    														00002.当下的操作系统:
    																			Windows
    																			Linux
    																			Unix
    																			苹果MAC OS
    																			我们国家的深度
    														
    							是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,
    							其中的文档及超级链接将Internet上的信息节点组织成一个互为关联的网状结构, 是运行在互联网上的一种分布式系统。
    

    2.WEB的发展史程

    						Web1.0:开始于1994年,其主要特征是
    							大量使用静态的 HTML 网页来发布信息,
    							只解决了人对信息搜索、聚合的需求,
    							而没有解决人与人之间沟通、互动和参与的需求,
    							所以Web2.0应运而生。
    							传统的门户网站如新浪、搜狐、网易等是Web1.0的代表;
    
    					 Web2.0:始于2004,
    							更加注重交互性,可读可写,
    							体现出的方面是各种微博、相册,用户参与性更强。
    							博客中国、校内网、Facebook、YouTube等是Web2.0的代表;
    							
    					Web3.0:Web3.0是Intnet发展的必然趋势,是Web2.0的进一步发展和延伸。Web3.0在Web 2.0的基础上,
    							将杂乱的微内容进行最小单位的继续拆分,
    							同时进行词义标准化、结构化,实现微信息之间的互动和微内容间基于语义的链接;
    							提供更个性化、精准化搜索等人工智能服务、数据的自由整合与有效聚合、
    							适合多种终端平台等特点。
    							iGoogle、阔地网络等是Web3.0的代表。
    					
    

    3.Web资源包括静态、动态两种:

    								静态web资源:
    									指静态HTML页面的集合,页面中浏览的    数据始终是不变,
    									如早期的静态网站, Web页面中的内容无法动态更新,无法实现和用户的交互。
    									
    								动态web资源:
    									指web页面中浏览的数据是由服务器程序产生的,
    									动态WEB具有交互性,WEB的页面的内容可以动态更新。
    	002. 
    B/S:browser/server  浏览器/服务器模式
    		举例:京东商城
    C/S:client/server      客户端/浏览器模式
    
    
    两者的比较:  
    

    三、什么是CS和BS结构?

    		  1.C/S又称Client/Server或客户/服务器模式。
    						服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix或SQLServer。
    						客户端需要安装专用的客户端软件。
    
    		2.B/S是Brower/Server的缩写,客户机上只要安装一个浏览器(Browser),如Netscape Navigator或Internet Explorer,
    					服务器安装Oracle、Sybase、Informix或SQL Server等数据库。浏览器通过Web Server 同数据库进行数据交互。
    					
    		3.局域网和广域网
    				 Client/Server是建立在局域网的基础上的。
    							一个学校 、工厂、一个部门、一个机关
    				 Browser/Server是建立在广域网的基础上的.
    						 跨越物理范围比较大,几公里 几十公里 、几千公里、几大洲等等
    	 
    
    		4.硬件环境不同:
    					C/S 一般建立在专用的网络上, 小范围里的网络环境, 
    								局域网之间再通过专门服务器提供连接和数据交换服务.
    					B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行
    
    		5.对安全要求不同
    					C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强.一般高度机密的信息系统采用C/S 结构适宜. 可以通过B/S发布部分可公开信息.
    					B/S 建立在广域网之上, 对安全的控制能力相对弱, 面向是不可知的用户群.
    
    		6.对程序架构不同
    				C/S 程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑.
    				B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. 比C/S有更高的要求 B/S结构的程序架构是发展的趋势, 
    				从MS的.Net系列的BizTalk 2000 Exchange 2000等, 全面支持网络的构件搭建的系统. SUN 和IBM推的JavaBean 构件技术等,使 B/S更加成熟.
    
    		7.软件重用不同
    				C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好.
    				B/S 对的多重结构,要求构件相对独立的功能. 能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子
    
    		8.系统维护不同
    		系统维护是软件生存周期中,开销大, -------重要
    					C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级.升级难. 可能是再做一个全新的系统
    					B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就可以实现升级.
    
    		9.处理问题不同
    				C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是相同的系统。
    				B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的. 与操作系统平台关系最小
    
    		二、CS和BS结构各自的优、缺点
    		1.C/S的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。
    				缺点主要有以下几个:
    								只适用于局域网。       而随着互联网的飞速发展,移动办公和分布式办公越来越普及,这需要我们的系统具有扩展性。这种方式远程访问需要专门的技术,同时要对系统进行专门的设计来处理分布式的数据。
    								客户端需要安装专用的客户端软件。首先涉及到安装的工作量,
    								其次任何一台电脑出问题,如病毒、硬件损坏,都需要进行安装或维护。
    								特别是有很多分部或专卖店的情况,不是工作量的问题,而是路程的问题。
    								系统软件升级时,每一台客户机需要重新安装,其维护和升级成本非常高。
    								对客户端的操作系统一般也会有限制。可能适应于Win98, 但不能用于Win2000或WindowsXP。或者不适用于微软新的操作系统等等,更不用说Linux、Unix等。
    
    		2.B/S最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。
    							只要有一台能上网的电脑就能使用,客户端零维护。
    							系统的扩展非常容易,只要能上网,再由系统管理员分配一个用户名和密码,就可以使用了。
    							甚至可以在线申请,通过公司内部的安全认证(如CA证书)后,不需要人的参与,系统可以自动分配给用户一个账号进入系统。
    							
    				
    		3、动态网页技术
    							1,"交互性"即网页会根据用户的要求和选择而动态改变和响应,将浏览器作为客户端界面,这将是今后WEB发展的大势所趋.
    							2,"自动更新"即无须手动地更新HTML文档,便会自动生成新的页面,可以大大节省工作量.
    							3,"因时因人而变",即当不同的时间,不同的人访问同一网址时会产生不同的页面。
    

    四、URL(Uniform Resource Locator)

    1.统一资源定位符,

    		用于完整地描述Internet上网页和其他资源的地址的一种标识方法。
    

    2.示例:
    http://www.baidu.com:8080/course/java.html

    		    	  协议http
    
    			www   万维网服务
    
    			baidu.com   服务器域名
    
    			8080 端口 门牌号
    
    			Course  服务器的子目录
    
    			  Java.html   具体的文件
    				
    		总结的规律:组成:协议+服务器地址(端口)+具体资源路径
    
    Web应用需要安装web服务器,然后再在Web服务器中部署相应的web资源,供用户使用浏览器访问:
    

    五、常用Web服务器:

    				IIS:Windows产品自带的一种免费的Web服务器,安装配置简单,主要解析的是ASP程序代码。
    	
    				Apache:免费开源的Web服务器软件,它以跨平台、高效和稳定而闻名,是最流行的Web服务器端软件之一。
    	
    				Tomcat 服务器:Apache开源项目中的一个子项目,是一个小型、轻量级的支持JSP和Servlet 技术的Web应用服务器。
    	
    				Nginx :Nginx 服务器是一个高性能的 Web 和反向代理服务器。
    	
    				Nginx 在激烈的 Web 服务器竞争中依旧保持良好的发展势头,一度成为 Web 服务器市场的后起之秀。
    	
    				其它商业化的专业服务器:
    							WebSphere,IBM公司的产品。
    							WebLogic ,BEA公司的产品。
    

    六 、讲完HTTP协议

    (1)HTTP简介

    		1.HTTP协议,即超文本传输协议(Hypertext transfer protocol)。是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。
    		
    		2.HTTP协议作为TCP/IP模型中应用层的协议也不例外。HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。如下图:
    		![在这里插入图片描述](https://img-blog.csdnimg.cn/2019032213525230.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L015TG92ZUxpeWFuZw==,size_16,color_FFFFFF,t_70)
    		3.HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。
    		
    		4.HTTP默认的端口号为80,HTTPS的端口号为443。
    		
    		5.浏览网页是HTTP的主要应用,但是这并不代表HTTP就只能应用于网页的浏览。HTTP是一种协议,只要通信的双方都遵守这个协议,HTTP就能有用武之地。比如咱们常用的QQ,迅雷这些软件,都会使用HTTP协议(还包括其他的协议)。
    

    (2).HTTP特点

    1、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
    
    2、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
    
    3、HTTP 0.9和1.0使用非持续连接:限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。HTTP 1.1使用持续连接:不必为每个web对象创建一个新的连接,一个连接可以传送多个对象,采用这种方式可以节省传输时间。
    
    4、无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
    
    5、支持B/S及C/S模式。
    

    (3)HTTP的工作流程

    一次HTTP操作称为一个事务,其工作过程可分为四步:
    1.首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。
    2.建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
    3.服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
    4.客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。
      如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。
    

    (4).HTTP之请求消息Request

    					客户端发送一个HTTP请求到服务器的请求消息包括以下格式:
    					请求行、请求头部、空行和请求数据四个部分组成。
    			(1)Get请求例子
    			![在这里插入图片描述](https://img-blog.csdnimg.cn/20190322140029531.jpg)
    			第一部分:请求行,用来说明请求类型,要访问的资源以及所使用的HTTP版本.
    			GET说明请求类型为GET,[/562f25980001b1b106000338.jpg]为要访问的资源,该行的最后一部分说明使用的是HTTP1.1版本。
    			
    			第二部分:请求头部,紧接着请求行(即第一行)之后的部分,用来说明服务器要使用的附加信息
    			从第二行起为请求头部,HOST将指出请求的目的地.User-Agent,服务器端和客户端脚本都能访问它,它是浏览器类型检测逻辑的重要基础.该信息由你的浏览器来定义,并且在每个请求中自动发送等等
    			
    			第三部分:空行,请求头部后面的空行是必须的
    			即使第四部分的请求数据为空,也必须有空行。
    			
    			第四部分:请求数据也叫主体,可以添加任意的其他数据。
    			这个例子的请求数据为空。
    

    (5)、POST请求例子

    		![在这里插入图片描述](https://img-blog.csdnimg.cn/20190322140359586.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L015TG92ZUxpeWFuZw==,size_16,color_FFFFFF,t_70)
    		第一部分:请求行,第一行明了是post请求,以及http1.1版本。
    		第二部分:请求头部,第二行至第六行。
    		第三部分:空行,第七行的空行。
    		第四部分:请求数据,第八行。
    

    五.HTTP之响应消息Response

    	一般情况下,服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应消息。
    	
    	HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
    	![在这里插入图片描述](https://img-blog.csdnimg.cn/20190322140601761.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L015TG92ZUxpeWFuZw==,size_16,color_FFFFFF,t_70)
    	第一部分:状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。
    	第一行为状态行,(HTTP/1.1)表明HTTP版本为1.1版本,状态码为200,状态消息为(ok)
    	
    	第二部分:消息报头,用来说明客户端要使用的一些附加信息
    	第二行和第三行和第四行为消息报头,
    	Date:生成响应的日期和时间;Content-Type:指定了MIME类型的HTML(text/html),编码类型是ISO-8859-1
    	
    	第三部分:空行,消息报头后面的空行是必须的
    	第四部分:响应正文,服务器返回给客户端的文本信息。
    	空行后面的html部分为响应正文。
    

    (6).HTTP之状态码

    		状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:
    		1xx:指示信息--表示请求已接收,继续处理
    		2xx:成功--表示请求已被成功接收、理解、接受
    		3xx:重定向--要完成请求必须进行更进一步的操作
    		4xx:客户端错误--请求有语法错误或请求无法实现
    		5xx:服务器端错误--服务器未能实现合法的请求
    
    	常见状态码:
    	![在这里插入图片描述](https://img-blog.csdnimg.cn/20190322140826919.jpg)
    

    (7).HTTP请求方法

    	根据HTTP标准,HTTP请求可以使用多种请求方法。
    	HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
    	HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
    	![在这里插入图片描述](https://img-blog.csdnimg.cn/20190322141001849.jpg)
    

    (8).HTTP工作原理
    HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。
    以下是 HTTP 请求/响应的步骤:

    1、客户端连接到Web服务器
    一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.oakcms.cn。
    2、发送HTTP请求
    通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。
    3、服务器接受请求并返回HTTP响应
    Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。
    4、释放连接TCP连接
    若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;
    5、客户端浏览器解析HTML内容
    客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。
    

    (9).GET和POST的区别

         1、GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的Body中.
         2、GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.
         3、GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。
         4、GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.
    

    项目案例1:
    在这里插入图片描述
    在Form表单,我们的内容,其次的话第一行是ASP.NET类似,界面是ch1.aspx窗体,ch1.aspx.cs是逻辑代码,那么里面的结构如下:在这里插入图片描述
    案列2:业内传值:
    在这里插入图片描述
    在这里插入图片描述
    案例3模拟登陆

    在这里插入图片描述
    在这里插入图片描述
    谢谢观赏!

    展开全文
  • Asp.Net Web API 实例

    热门讨论 2014-06-24 17:37:07
    Asp.Net Web API 实例 包括了: 更改默认路由表 方法名字的HttpMethod以及ActionName的注解属性 基本的实体框架入门 调用API的Demo
  • using Advanced.SOA.Interface; using Advanced.SOA.Models; using Advanced.SOA.WebApi.Utility.Filter; using Newtonsoft.Json;
  • ASP.NET for WebApi

    千次阅读 2016-05-27 19:43:51
    WebApi,听说过吧?呵呵。感觉比WebService,WCF...用ASP.NET 编写 WebApi 的话,跟MVC差不多。生成的项目也有控制器,视图之类。只不过,其控制器继承的是ApiController。还有一个不同的是,是不用写action的,只有c

    WebApi,听说过吧?呵呵。

    感觉比WebService,WCF要强。尤其是那个啥WCF,啥鬼东西,真难懂。真难搞。真难用。


    其实,以上说法是不准确的。SOA(面向服务架构)是一种思想,WebService、ESB、远程调用等是实现SOA的具体技术。其中,WebService有两种风格,一种是采用SOAP,一种是采用HTTP的REST。
    2019-07-15


    说比WebService要强,是因为不用在本地先生成个代理。而且XML也显得过于庞大。

    用ASP.NET 编写 WebApi 的话,跟MVC差不多。生成的项目也有控制器,视图之类。只不过,其控制器继承的是ApiController。

    还有一个不同的是,是不用写action的,只有controller。当然,你硬是要写也可以。但根据RESTful原则,WebApi提供的API方法名称应该纯粹是名词,而没有动词,系统根据请求方式来判断请求者意图,并执行相应操作。什么意思呢?

    比如一个API 地址为

    http://192.168.0.1/api/book/108
    

    相应的方法为

        public class BookController : ApiController
        {
            public string Get(string id)
            {//读取book信息
                return "Get " + id;
            }
            public string Post([FromBody]object obj)
            {//新增book
                return "Post";
            }
            public string Put(int id,[FromBody]object obj)
            {//修改book
                return "Put " + id;
            }
            public string Delete(string id)
            {//删除book
                return "Delete " + id;
            }
        }
    

    当请求方式为GET时,执行的是方法Get(),Post时,执行的是方法Post()。API地址就一个:

    http://192.168.0.1/api/book/108
    

    108是ID值。

    而不必写成下面那么傻:

    http://192.168.0.1/api/GetBook/108
    http://192.168.0.1/api/DeleteBook/108
    

    当然,RESTful原则是这么推荐,但现实往往比较骨感。因为许多网络环境并不支持PUT和DELETE的请求方式,只支持GET和POST。怪不得我调试的时候,GET和POST都可以,到了PUT和DELETE,都报405错误:方法不被允许。错误代码为4开头,说明是浏览器不支持。

    幸而看了蒋金楠博客。解决方案如下:

    //我们定义了如下一个HttpMethodOverrideHandler类型,它继承自DelegatingHandler。我们在重写的SendAsync方法中实现了对“X-HTTP-Method-Override”报头的提取和对HTTP方法的重写,最后调用基类的同名方法将处理后的请求传递给后续的HttpMessageHandler。
            public class HttpMethodOverrideHandler : DelegatingHandler
            {
                protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
                {
                    IEnumerable<string> methodOverrideHeader;
                    if (request.Headers.TryGetValues("X-HTTP-Method-Override", out methodOverrideHeader))
                    {
                        request.Method = new HttpMethod(methodOverrideHeader.First());
                    }
                    return base.SendAsync(request, cancellationToken);
                }
            }
    

    在api项目的global.asax.cs里调用这个类:

        public class WebApiApplication : System.Web.HttpApplication
        {
            protected void Application_Start()
            {          
                AreaRegistration.RegisterAllAreas();
                GlobalConfiguration.Configure(WebApiConfig.Register);
                FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
                RouteConfig.RegisterRoutes(RouteTable.Routes);
    
    //调用基类的同名方法将处理后的请求传递给后续的HttpMessageHandler。
                GlobalConfiguration.Configuration.MessageHandlers.Add(new HttpMethodOverrideHandler());
            }
        }
    

    这样,请求过来时,读取这些额外设置的报头,系统就能知道请求者的意图了。

    前端调用方式如下:

    <script type="text/javascript">
        (function(){
            $.ajax({
                type: 'POST',//明地里用支持的HTTP请求方式
                url: 'http://192.168.0.1/api/GetBook/108',
                data: '{"name":"王小波文集"}',
                contentType: "application/json; charset=utf-8",
                dataType: 'json',
                beforeSend: function (xhr) {
                //暗地里写入额外的报头信息
                    xhr.setRequestHeader('X-HTTP-Method-Override', 'PUT');
                },
                success: function (results) {
                    alert(results);
                },
                error: function (ex) {
                    alert("错误:" + ex.statusText);
                }
            })
        })();
    </script>
    

    服务器端请求也可以,看俺的单元测试代码:

     [TestClass()]
        public class InterfaceControllerTests
        {
            string _baseurl = "http://192.168.0.1/api/GetBook/108";
            public InterfaceControllerTests()
            {
    
            }
    
            [TestMethod()]
            public void GetTest()
            {
                string url = _baseurl + "/1";
                string re;
    
                using (WebClient webClient = new WebClient())
                {
                    webClient.Encoding = Encoding.GetEncoding("utf-8");
                    webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");//采取POST方式必须加的header,如果改为GET方式的话就去掉这句话即可  
                    re = webClient.DownloadString(url);
                }
    
                Assert.AreEqual("\"Get 1\"", re);
            }
    
            [TestMethod()]
            public void PostTest()
            {
                string url = _baseurl;
                string postString = @"{""id"":108}";//这里即为传递的参数,可以用工具抓包分析,也可以自己分析,主要是form里面每一个name都要加进来  
                byte[] postData = Encoding.UTF8.GetBytes(postString);//编码,尤其是汉字,事先要看下抓取网页的编码方式  
                string re;
    
                using (WebClient webClient = new WebClient())
                {
                    webClient.Encoding = Encoding.GetEncoding("utf-8");
                    webClient.Headers.Add("Content-Type", "application/json");//采取POST方式必须加的header,如果改为GET方式的话就去掉这句话即可  
                    byte[] responseData = webClient.UploadData(url, "POST", postData);//得到返回字符流  
                    re = Encoding.UTF8.GetString(responseData);//解码  
                }
    
                Assert.AreNotEqual(-1, re.IndexOf("Post"));
            }
    
            [TestMethod()]
            public void PutTest()
            {
                string url = _baseurl + "/109";
                string postString = @"{""id"":109}";
                byte[] postData = Encoding.UTF8.GetBytes(postString);
                string re;
    
                using (WebClient webClient = new WebClient())
                {
                    webClient.Encoding = Encoding.GetEncoding("utf-8");
                    webClient.Headers.Add("Content-Type", "application/json");
                    webClient.Headers.Add("X-HTTP-Method-Override", "PUT");
                    byte[] responseData = webClient.UploadData(url, "POST", postData);
                    re = Encoding.UTF8.GetString(responseData);
                }
    
                Assert.AreNotEqual(-1, re.IndexOf("Put"));
            }
    
            [TestMethod()]
            public void DeleteTest()
            {
                string url = _baseurl + "/1";
                string re;
    
                using (WebClient webClient = new WebClient())
                {
                    webClient.Encoding = Encoding.GetEncoding("utf-8");
                    webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
                    webClient.Headers.Add("X-HTTP-Method-Override", "DELETE");
                    re = webClient.DownloadString(url);
                }
    
                Assert.AreNotEqual(-1, re.IndexOf("Delete"));
            }
        }
    

    //上面这些POST测试通过的前提,是要将数据传送方式改为json:

    
    public static class WebApiConfig  
    {  
        public static void Register(HttpConfiguration config)  
        {  
            // Web API 路由  
            config.MapHttpAttributeRoutes();  
      
            config.Routes.MapHttpRoute(  
                name: "DefaultApi",  
                routeTemplate: "api/{controller}/{action}/{id}",  
                defaults: new { id = RouteParameter.Optional }  
            );  
            config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));//改为JSON方式  
        }  
    }  
    

    参考文章:
    如果调用ASP.NET Web API不能发送PUT/DELETE请求怎么办?

    展开全文
  • asp.net web api

    千次阅读 2014-02-08 15:37:26
    官方的地址:http://www.asp.net/web-api里面的资料很全,是学习的第一选择.建议多参考此资料1.里面最简单直接的例子...

    官方的地址:

    http://www.asp.net/web-api

    里面的资料很全,是学习的第一选择.建议多参考此资料

    1.里面最简单直接的例子

    http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api

    ASP.NET Web API 2 (C#) 入门

    迈克华士信 |

    HTTP 不只是为了生成 web 页面。它也是一个强大的平台建设公开服务和数据的 Api。HTTP 是简单、 灵活和无处不在。您能想到的几乎任何平台有一个 HTTP 库,因此,HTTP 服务可以到达范围广泛的客户端,包括浏览器、移动设备和传统的桌面应用程序。

    ASP.NET Web API 是用于生成 web Api 在.NET 框架上的框架。在本教程中,您将使用 ASP.NET Web API 创建的 web API 返回的产品列表。前端的 web 页使用 jQuery 来显示结果。

    下载已完成的项目.

    要求

    本教程使用Visual Studio 2013.

    创建一个 Web API 项目

    启动 Visual Studio 时,从开始页中选择新的项目或者,从文件菜单中,选择新建,然后项目.

    模板窗格中,选择已安装的模板和展开Visual C#节点。Visual C#中,选择Web在项目模板的列表中,选择ASP.NET Web 应用程序名称"ProductsApp"项目,然后单击确定.

    新的 ASP.NET 项目对话框中,选择的模板。根据"添加文件夹和核心的参考文件",检查Web API单击确定.

    您还可以创建一个 Web API 项目,利用"Web API"模板。Web API 模板使用 ASP.NET MVC 提供 API 的帮助页。我使用的空模板在本教程中因为我想要显示无 MVC Web API。一般情况下,你不需要知道 ASP.NET MVC 中使用 Web API。

    添加模型

    模型是一个对象,表示您的应用程序中的数据。ASP.NET Web API 可以自动序列化您的模型到 JSON、 XML 或一些其他格式,然后将序列化的数据写入到 HTTP 响应消息的正文。只要客户端可以读取序列化格式,它可以反序列化该对象。大多数客户端可以解析 XML 或 JSON。此外,客户端可以表明哪一种格式它想要通过 HTTP 请求消息中设置的接受标头。

    让我们首先创建一个简单的模型,它代表一种产品。

    如果解决方案资源管理器已不可见,请单击视图菜单,然后选择解决方案资源管理器在解决方案资源管理器中,右键单击模型文件夹。从上下文菜单中,选择添加,然后选择.

    命名类"Product"。将以下属性添加到 Product类。

    namespace ProductsApp.Models
    {
        public class Product
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public string Category { get; set; }
            public decimal Price { get; set; }
        }
    }

    添加控制器

    在 Web API 中,控制器是处理 HTTP 请求的对象。我们将添加一个控制器,可以返回由 ID 指定的单个产品的列表

    请注意如果你使用了 ASP.NET MVC 中,您已熟悉控制器。Web API 控制器类似于 MVC 控制器,但是继承ApiController类,而不是控制器类。

    解决方案资源管理器中,右键单击控制器文件夹。选择添加,然后选择控制器.

    添加脚手架对话框中,选择Web API 控制器-空单击添加.

    添加控制器对话框中,名称"ProductsController"的控制器。单击添加.

    脚手架创建一个名为控制器文件夹中的 ProductsController.cs 文件。

    你不需要放入一个文件夹命名为控制器的您的控制器。只是方便的方式来组织您的源文件的文件夹名称。

    如果该文件尚未打开,请双击该文件以将其打开。此文件中的代码替换为以下内容:

    using ProductsApp.Models;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Web.Http;
    
    namespace ProductsApp.Controllers
    {
        public class ProductsController : ApiController
        {
            Product[] products = new Product[] 
            { 
                new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 }, 
                new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M }, 
                new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M } 
            };
    
            public IEnumerable<Product> GetAllProducts()
            {
                return products;
            }
    
            public IHttpActionResult GetProduct(int id)
            {
                var product = products.FirstOrDefault((p) => p.Id == id);
                if (product == null)
                {
                    return NotFound();
                }
                return Ok(product);
            }
        }
    }

    为保持示例简单,产品都存储在一个固定的数组,在控制器类的内部。当然,在实际的应用中,将从数据库中查询或使用一些其他外部数据源。

    控制器定义返回的产品的两种方法:

    • GetAllProducts 方法返回产品的完整列表作为 IEnumerable<Product> 类型。
    • GetProduct方法查找单个产品由其 id。

    就这么简单 !你有工作 web API。每个控制器上的方法对应于一个或多个 Uri:

    控制器的方法URI
    GetAllProducts/api/products
    GetProduct/api/products/id

    对于GetProduct的方法,URI 中的id是一个占位符。例如,若要获得具有 ID 为 5 的产品,URI 是api/products/5.

    有关 Web API 如何将 HTTP 请求路由到控制器方法的详细信息,请参见在 ASP.NET Web API 中的路由.

    调用与 Javascript 和 jQuery 的 Web API

    在本节中,我们将添加一个 HTML 页,使用 AJAX 调用 web API。我们会使用 jQuery,以使 AJAX 调用,并更新该页面的结果。

    在解决方案资源管理器中,右键单击该项目并选择添加,然后选择新项目.

    添加新项对话框中,选择下Visual C#中, Web节点,然后选择HTML 页面项目。命名"index.html"页。

    用以下内容替换此文件中的所有内容:

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
      <title>Product App</title>
    </head>
    <body>
    
      <div>
        <h2>All Products</h2>
        <ul id="products" />
      </div>
      <div>
        <h2>Search by ID</h2>
        <input type="text" id="prodId" size="5" />
        <input type="button" value="Search" onclick="find();" />
        <p id="product" />
      </div>
    
      <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.min.js"></script>
      <script>
        var uri = 'api/products';
    
        $(document).ready(function () {
          // Send an AJAX request
          $.getJSON(uri)
              .done(function (data) {
                // On success, 'data' contains a list of products.
                $.each(data, function (key, item) {
                  // Add a list item for the product.
                  $('<li>', { text: formatItem(item) }).appendTo($('#products'));
                });
              });
        });
    
        function formatItem(item) {
          return item.Name + ': $' + item.Price;
        }
    
        function find() {
          var id = $('#prodId').val();
          $.getJSON(uri + '/' + id)
              .done(function (data) {
                $('#product').text(formatItem(data));
              })
              .fail(function (jqXHR, textStatus, err) {
                $('#product').text('Error: ' + err);
              });
        }
      </script>
    </body>
    </html>

    有几种方法来获取 jQuery。在此示例中,使用Microsoft Ajax CDN您还可以下载它从http://jquery.com/和 ASP.NET"Web API"项目模板包括 jQuery 以及。

    获取产品的列表

    若要获取产品的列表,请向“api/products”发送一个 HTTP GET 请求。

    JQuery getJSON函数会发送一个 AJAX 请求。对于响应包含的 JSON 对象的数组。done函数指定如果请求成功,则调用的回调。在回调中,我们用的产品信息更新 DOM。

    $(document).ready(function () {
        // Send an AJAX request
        $.getJSON(apiUrl)
            .done(function (data) {
                // On success, 'data' contains a list of products.
                $.each(data, function (key, item) {
                    // Add a list item for the product.
                    $('<li>', { text: formatItem(item) }).appendTo($('#products'));
                });
            });
    });

    获得产品的 ID

    若要获取产品的 ID,发送 HTTP GET 请求到"/ api/产品id",其中id是产品 id。

    function find() {
        var id = $('#prodId').val();
        $.getJSON(apiUrl + '/' + id)
            .done(function (data) {
                $('#product').text(formatItem(data));
            })
            .fail(function (jqXHR, textStatus, err) {
                $('#product').text('Error: ' + err);
            });
    }

    我们仍然调用 getJSON 发送 AJAX 请求,但这次我们将 ID 放在请求 URI 中。来自此请求的响应是一个单一产品的 JSON 表示。

    运行应用程序

    按 F5 启动调试应用程序。在 web 页应如下所示:

    若要获取产品的 ID,输入了 ID 并单击搜索:

    如果您输入无效的 ID,则服务器返回 HTTP 错误:

    使用 f12 键以查看 HTTP 请求和响应

    当您正在使用 HTTP 服务时,它可以看到 HTTP 请求和请求消息非常有用。你可以通过互联网资源管理器中 9 中使用 F12 开发人员工具。从互联网资源管理器 9,按f12 键以打开工具。单击网络选项卡,然后按开始捕获现在回到 web 页,请按F5重新加载该 web 页。互联网资源管理器中将捕获浏览器和 web 服务器之间的 HTTP 通信。摘要视图显示页的所有网络通信:

    找到对应的条目相对 uri"api/产品 /"。选择此项,然后单击转到详细信息视图在详细信息视图中,有选项卡以查看请求和响应的邮件标题和正文。例如,如果您单击请求标头选项卡,您可以在接受标头中看到客户端请求的“application/json”。

    如果您单击响应正文选项卡,您可以看到如何产品列表中被序列化为 JSON。其他浏览器都有类似的功能。提琴手,web 调试代理是另一个有用的工具。你可以使用的提琴手以查看您的 HTTP 流量,并撰写 HTTP 请求,请求,为您提供在请求中的 HTTP 标头的完全控制。

    后续步骤


    展开全文
  • ASP.NET Web API上实现 Web Socket

    千次阅读 2019-03-18 08:11:35
    1. 什么是Web Socket Web Socket是Html5中引入的通信机制,它为浏览器与后台服务器之间提供了基于TCP的全双工的通信通道。用以替代以往的LongPooling等comet style的实时解决方案。基于它们之间的比较以及Web ...
  • Web API系列教程】1.1 — ASP.NET Web API入门

    万次阅读 多人点赞 2016-02-24 18:48:01
    前言HTTP不仅仅服务于web页面,同时也是构建暴露服务和数据的API的强大平台。...ASP.NET Web API是一个在.NET框架上构建web API的框架。在本教程中,你将使用ASP.NET Web API来创建一个返回产品列表的we
  • asp.net web应用的前端设计

    千次下载 热门讨论 2014-09-09 02:19:08
    asp.net web应用的前端设计
  • 知识点:理解 ASP.NET 的概念和优势、会创建 ASP.NET Web Form 程序、理解 ASP.NET Web Form 程序的执行阶段、会使用代码内嵌和代码后置两种方式进行编码。 1、网站开发基础了解 1.1 网站开发各环节组成 1.2 ...
  • Azure 部署 Asp.NET Core Web App

    千次阅读 2016-12-08 12:22:55
    本文通过Visual Studio创建一个Asp.net Core demo应用,然后把这个demo应用部署到Azure Web App。通过阅读本文,你将能了解到如何创建Asp.NET Core应用程序和如何在Azure上创建Web App并部署Asp.NET Core应用。
  • Asp.Net WEB服务器编程技术

    千人学习 2020-09-28 16:29:18
    主讲内容: 了解什么是ASP.NET技术和B/S开发模式,学习IIS的安装和配置,学习创建第一个Web程序 如果您想学ASP.NET动态网站开发,您选对了课程! 本课程由张老师原创开发和精心录制,是从基础到进阶学习ASP.NET网站...
  • ASP.NET Web API详解

    千次阅读 2014-02-23 10:52:13
    在这篇文章中我们将讨论Web API设计、概念、功能,和对比Web API与WCF。 1. 实现一个Web API项目 ...我们从一个简单的实例开始讨论。我们使用Visual Studio 2012做为开发...图1:基于Web API模板创建一个ASP.NET
  • 备注:如果你对ASP.NET MVC很熟悉,你会发现Web API路由和MVC路由非常相似。主要区别是Web API使用HTTP方法来选择动作(action),而不是URI路径。你也可以在Web API中使用MVC风格的路由。这篇文章不需要ASP.NET MVC...
  • 一、Web应用程序简介 1、网络应用程序开发体系结构: 1)C/S体系结构:Client/Server的缩写,即客户端/服务器端结构 举例:QQ 英雄联盟 word、excel不是,因为不需要联网、登录 2)B/S体系结构:Browser/Server的...
  • asp net web api 2框架解密 完整版

    热门讨论 2014-10-11 21:15:06
    asp net web api 2框架解密完整版
  • ASP.NET Web API 2框架揭秘

    热门讨论 2014-07-24 22:32:42
    我觉得大部分人都是“眼球动物“,他们关注的往往都是目光所及的东西。...微软意识到在一个“重量级”通信框架上通过扩展实现“轻量级”的通信,还不如重新构建一个通信平台,于是ASP.NET Web API应运而生。
  • ASP.NET Web API 2 入门教程

    千次阅读 2016-05-17 20:57:18
    译者:jiankunking 出处:http://blog.csdn.net/jiankunking 源码下载HTTP不仅提供web页面服务,在构建公开服务和数据api方面,它也是一个强大的平台。HTTP简单、灵活、无处不在。...ASP.NET Web API是一个基于.NE
  • ASP.NET Web API 接收文件上传

    热门讨论 2015-05-24 10:07:42
    ASP.NET Web API File Upload and Multipart MIME
  • asp.net webapi 重定向

    2017-04-01 08:54:07
    我在vs2015中新建一个WEB API的项目;现在有个需求,如果访问/home/index正常显示;如果使用HTTP GET方法请求/home/index的时候在HTTP HEAD里边额外添加一个自定义的header,例如command:order.index,这种情况下我...
  • asp.net webapi2 的最新书籍,喜欢的同学可以拿去看看。
  • ASP.NET Web API :Web宿主

    千次阅读 2014-03-16 13:53:54
    上一节描述了API的整个运行...此节讲其中一个宿主,WebHost 寄宿在asp.net 传统管道上。 Routing(路由) 在asp.net平台,路由是一般由RouteTables.Routes静态属性添加的,类型是RouteCollection,例如下面的MVC模
  • ASP.NET Web API使用示例

    万次阅读 多人点赞 2014-03-16 20:17:10
    还是一样引用上次的案例,用asp.net 提供的web api来进行IP地址归宿地查询接口的开发。由于我机器装的是win8企业版操作系统,VS版本是2012,因此我们选择使用VS自带的MVC4模版中的Web API来创建一个项目。点击确定后...
  • ASP.NET Web API 开篇示例介绍

    千次阅读 2014-08-04 08:41:43
    对于我这个初学者来说ASP.NET Web API这个框架很陌生又熟悉着。 陌生的是ASP.NET Web API是一个全新的框架,对于这个框架在一个项目中起到的作用我暂且还不是很清楚这里也就不妄下结论了,说实话不是我不想而是我...
  • 说说脚本启动ASP.NET Core Web项目 介绍两种方式: 第一种:定位到Web项目的编译地址下,就是bin文件夹下的.NET5文件夹,然后在当前文件夹下打开命令提示窗口;dotnet dll文件 —urls=http://ip地址:端口号 回车...
  • ASP.NET WebAPI开发实例

    万次阅读 多人点赞 2018-09-12 16:32:14
    文件 - 新建项目 - Visual C# - WebASP.NET MVC4 Web 应用程序 选择空项目组 项目右键 – 管理NuGet程序包 选择联机 – 搜索webapi – 安装webapi2.2 – 安装webapi2.2helppage ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 447,935
精华内容 179,174
关键字:

aspweb