
WebApi系列
文章平均质量分 94
sinolover
完成项目,就要软硬兼施
展开
-
【转】在ASP.NET Web API 2中使用Owin基于Token令牌的身份验证
基于令牌的身份验证基于令牌的身份验证主要区别于以前常用的基于cookie的身份验证,基于cookie的身份验证在B/S架构中使用比较多,但是在Web Api中因其特殊性,基于cookie的身份验证已经不适合了,因为并不是每一个调用api的客户端都是从浏览器发起,我们面临的客户端可能是手机、平板、或者app。使用基于Token令牌的身份验证有一些好处:服务器的可伸缩性:发送到服务器的令牌是自包含的,不依赖于共享会话存储 松散耦合:前端应用程序位于特定的身份验证机制耦合,令牌是从服务器生成的,并且原创 2021-01-27 16:26:19 · 1994 阅读 · 0 评论 -
【转】使用FiddlerCore来测试WebAPI
大家在调试Web相关的API时,经常会用Fiddler来查看相关的请求,以及返回结果。当然你也可以尝试修改或者重复发送你的请求信息。本文主要介绍如何使用代码来实现fiddler的功能。Fiddler Core APIFiddler Core几乎实现了你能用fiddler做的所有功能。直接在NuGet上搜索FiddlerCore即可下载FiddlerCore的.Net API。开启Fiddler Application使用下面的代码来开启FiddlerApplicationFiddle原创 2021-01-18 10:41:08 · 698 阅读 · 0 评论 -
【转】C# HttpWebRequest 异常时获取 HttpWebResponse 数据
使用C#的HttpWebRequest请求接口如果接口返回了401则会抛出异常,而401其实也有可能返回正常的响应数据,如何获取异常时的响应流?解决方案捕获WebException异常,通过ex.Response获取HttpWebResponse主要代码如下:private string Request(string url, string method, byte[] body, string contentType){ HttpWebRequest ...原创 2020-12-24 17:28:06 · 3197 阅读 · 1 评论 -
【转】WebAPI ASP.Net 发布部署中常见的两个错误未能找到 CodeDom未能加载System.Web.WebPages.Razor
未能加载文件或程序集“System.Web.WebPages.Razor, Version=3.0.0.0, Culture=ne未能找到 CodeDom 提供程序类型“Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft...在包管理器中异常安装包MVC5 及 CodeDom,重新编译部署即可(二者皆为Xcopy,会在部署时自动拷贝至Web服务器)网上说的解决方案有两个,第一:什么删原创 2020-12-17 13:19:29 · 845 阅读 · 0 评论 -
【转】一个ASP.NET MVC中ajax调用WebApi返回500 Internal Server Error的调错方法。
ASP.NET MVC 引入的WebApi自然且较好地满足了ajax的交互需求,但使用jQuery ajax调用WebApi返回500 Internal Server Error时却不太好查找错误。在一个实际项目中,WebApi方法全部使用了try-catch捕获异常,并返回定制的错误消息,想当然认为有错误就能捕获。但最近网站运行时却总是有500错误,花了一番功夫才发现问题所在。 经过多次调试,确定这个错误应该是WebApi方法之外引发的(方法内部应该被try-catch捕获)...原创 2020-12-10 09:45:46 · 1300 阅读 · 0 评论 -
【转】C# WebAPI中为自定义模型设置JSonConverter
我的WebAPI应用程序中有一个模型,用.NET 4.0编写,含有一个System.Net.Mime.ContentType类型的属性,如下所示:[Serializable]public class FileData{ private ContentType contentType; private long size; private string name; public ContentType ContentType { get.原创 2020-12-10 09:01:50 · 1108 阅读 · 0 评论 -
【转】Web API项目中使用Area对业务进行分类管理
在之前开发的很多Web API项目中,为了方便以及快速开发,往往把整个Web API的控制器放在基目录的Controllers目录中,但随着业务越来越复杂,这样Controllers目录中的文件就增加很快,难以管理,而且如果有不同业务模块有重复的控制器名的话,还需要尽量避免。引入Area的作用就是把控制器按照不同的业务模块进行区分,方便管理,而且控制器名称可以重名。1、Web API项目引入Area进行分类Area在项目中可以称之为区域,每个Area代表应用程序的不同功能模块,Area 使每个功能模原创 2020-12-10 08:32:22 · 888 阅读 · 2 评论 -
【转】C# WebAPI: Set default JSON serializer to NewtonSoft JSON
Question:I am developing a very simply WebAPI in .Net 4.6. WebAPI, by default use JSON.Net as JSON serializer. For this application, I am willing to set default JSON serializer to NewtonSoft JSON.Please help me how I can do this.Answer:var formatt原创 2020-12-09 14:24:07 · 213 阅读 · 0 评论 -
【转】WebApi 身份认证解决方案:Basic基础认证
参考路径:https://www.cnblogs.com/landeanfen/p/5287064.html前言:最近,讨论到数据库安全的问题,于是就引出了WebApi服务没有加任何验证的问题。也就是说,任何人只要知道了接口的url,都能够模拟http请求去访问我们的服务接口,从而去增删改查数据库,这后果想想都恐怖。经过一番折腾,总算是加上了接口的身份认证,在此记录下,也给需要做身份认证的园友们提供参考。一、为什么需要身份认证在前言里面,我们说了,如果没有启用身份认证,那么任何匿名用户只要.原创 2020-11-20 17:45:32 · 792 阅读 · 1 评论 -
【转】.net异步性能测试(包括ASP.NET MVC WebAPI异步方法)
很久没有写博客了,今年做的产品公司这两天刚刚开了发布会,稍微清闲下来,想想我们做的产品还有没有性能优化空间,于是想到了.Net的异步可以优化性能,但到底能够提升多大的比例呢?恰好有一个朋友正在做各种语言的异步性能测试(有关异步和同步的问题,请参考客《AIO与BIO接口性能对比》),于是我今天写了一个C#的测试程序。首先,建一个 ASP.NET MVC WebAPI项目,在默认的控制器 values里面,增加两个方法: // GET api/values?sleepTime=10原创 2020-11-19 13:10:10 · 569 阅读 · 1 评论 -
第十五节:Asp.Net Core MVC和WebApi路由规则的总结和对比-第二十节
一. Core Mvc1.传统路由 Core MVC中,默认会在 Startup类→Configure方法→UseMvc方法中,会有默认路由:routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");等价于 app.UseMvcWithDefaultRoute();(1). 参数解析说明 name...原创 2020-02-28 12:00:35 · 1498 阅读 · 0 评论 -
第十四节:Asp.Net Core WebApi生成在线文档-第十九节
一. 基本概念1.背景 使用 Web API 时,了解其各种方法对开发人员来说可能是一项挑战。 Swagger 也称为OpenAPI,解决了为 Web API 生成有用文档和帮助页的问题。 它具有诸如交互式文档、客户端 SDK生成和 API 可发现性等优点,目前有两种实现方式:(1).Swashbuckle.AspNetCore: 是一个开源项目,用于生成 ASP.NET Core...原创 2020-02-28 12:00:30 · 392 阅读 · 0 评论 -
第十三节:Asp.Net Core WebApi基础总结和请求方式-第十八节
一. 基础总结1.Restful服务改造 Core下的WebApi默认也是Restful格式服务,即通过请求方式(Get,post,put,delete)来区分请求哪个方法,请求的URL中不需要写方法名。但是我们不喜欢这种方式,所以我们将默认的路由规则 [Route("api/[controller]")] 改为: [Route("api/[controller]/[action]")...原创 2020-02-28 12:00:24 · 1027 阅读 · 0 评论 -
第十二节:WebApi自动生成在线Api文档的两种方式
一. WebApi自带生成api文档1. 说明 通过观察,发现WebApi项目中Area文件夹下有一个HelpPage文件夹,如下图,该文件夹就是WebApi自带的生成Api的方式,如果该文件夹没了,可以通过Nuget安装:Microsoft.AspNet.WebApi.HelpPage ,你就会发现下图这一坨代码又回来了。 使用:http://localhost:213...原创 2020-02-28 12:00:18 · 656 阅读 · 0 评论 -
第十一节:WebApi的版本管理的几种方式
一. 背景和方案1. 多版本管理的概念 Android 、IOS等 App 存在着多版本客户端共存的问题:App 最新版已经升级到了5.0 了,但是有的用户手机上还运行着 4.8、3.9 甚至2.2 版本的 App,由于早期没有内置升级机制、用户不会升级、用户拒绝升级等原因,造成这些旧版本 App 也在运行。开发新版本 App 的时候,要给接口增加新的功能或者修改以前接口的规范,会造成旧...原创 2020-02-28 12:00:13 · 555 阅读 · 0 评论 -
第十节:进一步扩展两种安全校验方式
一. 简介简介:上一节中,主要介绍了JWT校验,它是无状态的,是基于Token校验的一种升级,它适用的范围很广泛,APP、JS前端、后台等等客户端调用服务器端的校验。本节补充几种后台接口的校验方式,它主要适用于后台代码的调用,不适合JS、APP等客户端直接调用。 PS:在一些对接一些银行接口或者一些支付接口,通常会提到这么几个名词: (1). 根据参数名正序排序、根据参数名的A...原创 2020-02-28 12:00:06 · 417 阅读 · 0 评论 -
第九节:JWT简介和以JS+WebApi为例基于JWT的安全校验
一. 简介1. 背景 传统的基于Session的校验存在诸多问题,比如:Session过期、服务器开销过大、不能分布式部署、不适合前后端分离的项目。 传统的基于Token的校验需要存储Key-Value信息,存在Session或数据库中都有弊端,如果按照一定规律采用对称加密算法生成token,虽然能解决上面问题,但是一旦对称加密算法泄露,很容被反编译;所以在此基础上继续升级,利用user...原创 2020-02-22 17:59:37 · 583 阅读 · 1 评论 -
第八节:常见安全隐患和传统的基于Session和Token的安全校验
一. 常见的安全隐患1. SQL注入常见的案例:String query = "SELECT * FROM T_User WHERE userID='" + Request["userID"] + "';这个时候,只需要在传递过来的userID后面加上个: or 1=1,即可以获取T_User表中的所有数据了。解决方案:参数化查询。2. 跨站脚本攻击(Cross-Si...原创 2020-02-15 15:47:45 · 752 阅读 · 0 评论 -
第七节:WebApi与Unity整合进行依赖注入和AOP的实现
一. IOC和DI1. 通过Nuget引入Unity程序集。 PS:【版本:5.8.6】2. 新建DIFactory类,用来读取Unity的配置文件并创建Unity容器,需要注意的是DIFactory类需要声明成单例。PS:这里采用静态构造函数(必须是无参的)的形式来实现单例,MVC框架的那个框架采用的是 双if+lock锁的形式实现的单例,结果都一样。代码分享:...原创 2020-02-15 15:47:12 · 508 阅读 · 0 评论 -
第六节:WebApi的部署方式(自托管)
一. 简单说明 开篇就介绍过WebApi和MVC相比,其中优势之一就是WebApi可以不依赖于IIS部署,可以自托管,当然这里指的是 .Net FrameWork 下的 WebApi 和 MVC 相比较,在.Net Core下,当然就另行别论。 下面我们重点介绍的就是WebApi基于控制台程序进行部署。1. 安装程序集 通过Nuget添加程序集:Microsoft.AspN...原创 2020-02-15 15:46:26 · 1606 阅读 · 0 评论 -
第五节:WebApi的三大过滤器
一. 基本说明1. 简介: WebApi下的过滤器和MVC下的过滤器有一些区别,首先我们要注意的是通常建WebApi项目时,会自动把MVC的程序集也引入进来,所以我们在使用WebApi下的过滤器的时候,要引入“ System.Web.Http”这个程序集,而不是MVC的“System.Web.MVC”。PS:关于WebApi下的过滤器在的作用位置和使用方法以及执行顺序,均和MVC...原创 2020-02-15 15:45:34 · 1157 阅读 · 1 评论 -
第三节:总结.Net下后端的几种请求方式(WebClient、WebRequest、HttpClient)
一. 前言 前端调用有Form表单提交,ajax提交,ajax一般是用Jquery的简化写法,在这里不再过多介绍;后端调用大约有这些:WebCient、WebRequest、Httpclient、WebapiClient,重点探讨Get和Post请求,Put和Delete请求用较少。下面排着介绍Get和Post的基本写法,最后再封装一下,便于调用。PS:其中Post请求有两种,分别...原创 2020-02-15 15:44:05 · 807 阅读 · 0 评论 -
第二节:如何正确使用WebApi和使用过程中的一些坑
一. 基本调用规则1. 前提 WebApi的默认路由规则为:routeTemplate: "api/{controller}/{id}", 下面为我们统一将它改为 routeTemplate: "api/{controller}/{action}/{id}",这样我们在调用的时候,还是通过拼接方法名来识别,不用考虑上面的坑别的规则了,这里我单纯的来探讨WebApi的传参和调用。2....原创 2020-02-15 15:43:15 · 433 阅读 · 0 评论 -
第一节:WebApi的纯原生态的RestFul风格接口和路由规则介绍
一. 原生态接口1. 从默认路由开始分析 在WebApiConfig.cs类中的Register方法中,我们可以看到默认路由如下:分析:请求地址在 controller 前面需要加上 api/,controller后面没有action,最后有一个参数{id},webapi默认的路由规则就是一种RestFul风格的接口调用规则。2. WebApi的默认调用规则(1). 方法名...原创 2020-02-15 15:40:57 · 761 阅读 · 0 评论 -
WebApi系列(从.Net 到 .Net Core)【更新】
一. 简介1. 什么是WebApi? WebApi是一个很广泛的概念,在这里我们特指.Net平台下的Asp.Net WebApi框架,它是针对各种客户端(浏览器、APP等)来构建Http服务的一个框架,它是一种RestFul风格的开发接口的技术,它比WebService更省流量,比WCF更简单。下图表示WebApi在.Net平台下的地位。 简单分析:WebForms、MVC...原创 2020-02-15 15:39:43 · 854 阅读 · 0 评论