webapi

net core WebApi——文件分片上传与跨域请求处理

£可爱£侵袭症+ 提交于 2019-11-28 07:39:44
目录 前言 开始 测试 跨域 小结 @ 前言 在之前整理完一套简单的后台基础工程后,因为业务需要鼓捣了文件上传跟下载,整理完后就迫不及待的想分享出来,希望有用到文件相关操作的朋友可以得到些帮助。 开始 我们依然用我们的基础工程,之前也提到过后续如果有测试功能之类的东西,会一直不断的更新这套代码(如果搞炸了之后那就…),首先我们需要理一下文件分片上传的思路: 后端 接收前端文件上传请求并处理回调 根据前端传递的钥匙判断,允许后开始接收文件流并保存到临时文件夹 前端最终上传完成后给予后端合并请求(也称作上传完成确认),后端合并文件后判断最终文件是否正确给予回调。 前端 读取文件相关信息(名称,扩展类型,大小等基本信息) 根据需要做片段划分以及文件的md5值(md5主要用于最终确认文件是否缺损) 请求后端获取钥匙 拿到钥匙后,我们根据划分的片段去循环上传文件,并根据每次回调判断是否上传成功,如失败则重新上传 最终循环完成后,给予后端合并请求(上传完成确认) ps:这里的钥匙就是个文件名,当然你可以来个token啊什么的根据自己业务需要。 这里还是想分享下敲代码的经验,在我们动手之前,最好把能考虑到的东西全都想好,思路理清也就是打好提纲后,敲代码的效率会高并且错误率也会低,行云流水不是天马行空,而是你的大脑中已经有了山水鸟兽。 OK,流程清楚之后,我们开始动手敲代码吧。 首先

WebAPI 和 webservice的区别

南笙酒味 提交于 2019-11-28 04:11:32
WebAPI 和 webservice的区别 转载: https://blog.csdn.net/mss359681091/article/details/53353258 webapi用的是http协议,webservice用的是soap协议 webapi无状态,相对webservice更轻量级。webapi支持如get,post等http操作 http soap关系 http:是一个客户端和服务器端请求和应答的标准(TCP)。http协议其目的是为了提供一种发布和接收htttp页面的方法 一http协议的客户端与服务器的交互:由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,比如”HTTP/1.1 200 OK”,和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。 soap 协议:它描述了一种在分散或分布式的环境中如何交换信息的轻量级协议。soap在http协议的基础上,一个基于XML的协议。 不同:都是底层的通信协议,请求包的格式不同而已,soap包是XML格式,http纯文本格式。 关系:SOAP是个通信协议, SOAP在HTTP协议的基础上,把编写成XML的REQUEST参数, 放在HTTP

webapi跨域,服务器上使用session

那年仲夏 提交于 2019-11-28 01:40:37
最近的项目,要求前后端分离,手机客户端使用的是微信小程序,服务器接口,使用webapi接口分离,pc端后台管理也分离。 这里要说的是,后台pc管理端和服务器的API之间,使用session验证是否登录;后台客户端管理使用的是vue全家桶+axios 1.首先需要开启服务器端的session,需要在Global.asax文件中添加一下代码: public override void Init() { this.AuthenticateRequest += WebApiApplication_AuthenticateRequest; base.Init(); } void WebApiApplication_AuthenticateRequest(object sender, EventArgs e) { //启用 webapi 支持session 会话 HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required); } 需要重新Init方法 2.需要开通跨域,这里使用的是,Cors插件跨域,在NuGet中下载Microsoft.AspNet.WebApi.Core 然后在App_Start--->WebApiConfig.cs下添加如下代码: var geduCors = new

WebApi - 路由

倖福魔咒の 提交于 2019-11-27 19:25:31
这段时间的博客打算和大家一起分享下webapi的使用和心得,主要原因是群里面有朋友说希望能有这方面的文章分享,随便自己也再回顾下;后面将会和大家分不同篇章来分享交流心得,希望各位多多扫码支持和点赞,谢谢,希望大家喜欢: . 使用vs创建webapi项目及项目结构介绍 . 默认路由模板介绍 . 属性 路由 标记的使用 下面一步一个脚印的来分享: . 使用vs创建webapi项目及项目结构介绍 首先,鼠标右键解决方案=》添加=》新建项目=》选择"Asp.net web应用程序"=》输入项目的名称,我这里是Stage.Api=》点击确定按钮,效果如: 然后会弹出一个界面,里面有三种模板选择,这里简单介绍下; 1. 选择"Empty模板"=》勾选"Web Api",如果不需要测试的话即可点击"确定"按钮就行了,然后解决方案中会生成一个很空的api项目,这里简单截图下选择的界面图: 2. 选择“MVC”=》勾选“Web API”=》点击“确定”,这个界面可以更改身份验证,如图: 3. 选择“Web API”=》直接点击“确定”(这里始终是选择mvc+webapi,其实就是上面的选择项),这里就不再截图了各位一尝试点击下试试; 我这里就选择webapi来创建项目,目录结构和说明如: 因为前面创建项目时候勾选了“MVC”与“Web API”,所以这个项目中包括了两者的初始文件

webapi 导入excel处理数据

与世无争的帅哥 提交于 2019-11-27 12:34:12
参考资料      https://blog.csdn.net/pan_junbiao/article/details/82935992       https://www.cnblogs.com/dansediao/p/5482467.html       https://www.cnblogs.com/shiyh/p/7478241.html excel转成datatable工具类 using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Reflection; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.SS.Util; using NPOI.XSSF.UserModel; namespace ELearning.Common.Extensions { public static class ExcelHelp { /// <summary> /// Id的列号 /// </summary> private const int EXCEL_COL_PLAT_FORM_INDUSTRY = 14; //获取列名委托方法 public delegate string

docker 发布netcore webapi

允我心安 提交于 2019-11-27 07:36:58
新建项目testapi 新建Dockerfile 文件 FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-nanoserver-1809 AS base WORKDIR /app EXPOSE 80 EXPOSE 443 FROM mcr.microsoft.com/dotnet/core/sdk:2.2-nanoserver-1809 AS build WORKDIR /src COPY ["testapi.csproj", ""] RUN dotnet restore "./testapi.csproj" COPY . . WORKDIR "/src/." RUN dotnet build "testapi.csproj" -c Release -o /app FROM build AS publish RUN dotnet publish "testapi.csproj" -c Release -o /app FROM base AS final WORKDIR /app COPY --from=publish /app . ENTRYPOINT ["dotnet", "testapi.dll"]   在项目目录 ctrl+shift 鼠标右键 选择 在此处打开PowrShell 新建容器: docker build -t

ASP.NET Core 奇淫技巧之动态WebApi

久未见 提交于 2019-11-27 04:50:46
一.前言 接触到动态WebApi(Dynamic Web API)这个词的已有几年,是从ABP框架里面接触到的,当时便对ABP的这个技术很好奇,后面分析了一波,也尝试过从ABP剥离一个出来作为独立组件来使用,可是后来因与ABP依赖太多而放弃。十几天前朋友 熊猫 将这部分代码(我和他在搞事情)成功的从 ABP 中剥离出来并做了一个简单Demo扔给我,经过这么久(实在是太懒^_^)终于经过一些修改、添加功能、封装,现在已经能作为一个独立组件使用,项目开源在Github( https://github.com/dotnetauth/Panda.DynamicWebApi ),希望觉得有用的朋友能给一个 Star 支持一下。 本文只讲使用,不讲原理,原理放到后面的文章中详细介绍。 二.介绍 不管是传统的三层架构、 DDD 经典四层架构(DDD Lite),亦或是其他具有应用逻辑层(业务逻辑层)的架构,在Web应用程序开发当中 ,我们的业务逻辑最终都需要经过 Web Api 来进行调用,这里我们可能会有一个重复的操作:编写业务逻辑->编写API调用业务逻辑,这种重复性的操作有没有解决办法呢,我们编写完业务逻辑以后便给我们自动生成WebApi,答案当然是有的。 这里介绍一下本文的主角: Panda.DynamicWebApi ( https://github.com/dotnetauth

ASP.NET CORE系列【五】webapi整理以及RESTful风格化

你。 提交于 2019-11-27 04:42:44
原文: ASP.NET CORE系列【五】webapi整理以及RESTful风格化 介绍 什么是RESTful? 这里不多做赘述,详情请百度! 哈哈,本来还想巴拉巴拉介绍一些webapi, RESTful的, 还是算了,咱们直接上干货!(原因是懒!哈哈) 使用 以前使用过mvc的人对webapi 应该都很熟悉,先看一段熟悉的代码 大伙发现了什么没?跟以往mvc大多数相同,但有些地方不同 ,我们来一起看看有何区别 1.首先SysUsersController上面有一段代码 [Produces("application/json")] //[Route("api/SysUsers")] [Route("api/[controller]/[action]")] public class SysUsersController : Controller { } 注释的部分先不管,首先我们接收的json格式内容,然后路由是 api/[controller]/[action] 这种情况我们只需要正常的ajax请求就能访问到了, $.ajax({ url:'/api/SysUsers/Login', type: 'POST', contentType: "application/json; charset=utf-8", data: {UserName:'shumin',Password:

mvc、webapi杂记

我的梦境 提交于 2019-11-26 21:04:15
//1、JsonSerializerSettings var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter; json.SerializerSettings = new Newtonsoft.Json.JsonSerializerSettings { DateFormatString = "yyyy-MM-dd HH:mm:ss",//用于WebAPI日期序列化 }; //2、禁用格式化器     // Remove the JSON formatter // 删除JSON格式化器 config.Formatters.Remove(config.Formatters.JsonFormatter); // or(或者) // Remove the XML formatter // 删除XML格式化器 config.Formatters.Remove(config.Formatters.XmlFormatter); //3、解决MvcJsonResult返回的Date格式化(/Date(1359522345000)/),以继承折方式重写即可。 //http://www.cnblogs.com/JerryWang1991/archive/2013/03/08/2950457.html //4

ASP.NET Core 2.2 WebApi 系列【六】泛型仓储模式

最后都变了- 提交于 2019-11-26 17:26:41
为什么要使用泛型仓储?好处是? 前两章在autofac注入的时候,用的User类作为例子,写了增删改查四个接口,也就是仓储的GRUD。 当我们再添加一个实体(比如Student)时,StudentRepository跟UserRepository代码几乎一样的代码,重复量很大,为了减少冗余、提高工作效率,使用泛型仓储最好不过了 好处: 减少代码冗余 提高了开发人员的工作效率 提高对数据库访问的维护 一、泛型仓储接口和泛型仓储实现类 泛型仓储接口 在类库项目上右键->添加->新建文件夹,命名为Repository,存放泛型仓储类。在Repository文件夹下面新建 泛型仓储接口类:IRepository,如下: using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using NetCoreWebApi.Repository.Dto; namespace NetCoreWebApi.Repository.Repository { public interface IRepository<T> where T : class { /// <summary> /// 添加实体(单个) /// </summary> /// <param name=