webapi

【转】适用于WebApi的SQL注入过滤器

梦想与她 提交于 2020-03-15 11:31:31
原地址:https://www.cnblogs.com/yechangzhong-826217795/p/10450581.html 开发工具:Visual Studio 2017 C#版本:C#7.1 最有效的防止SQL注入的方式是调用数据库时使用参数化查询。 但是如果是接手一个旧的WebApi项目,不想改繁多的数据库访问层的代码,应该如何做。 我的解决方案是加一个过滤器。 先写过滤方法,上代码 using System; using System.Collections.Generic; using System.Web; namespace Test { /// <summary> /// 防止SQL注入 /// </summary> public class AntiSqlInject { public static AntiSqlInject Instance = new AntiSqlInject(); /// <summary> /// 初始化过滤方法 /// </summary> static AntiSqlInject() { SqlKeywordsArray.AddRange(SqlSeparatKeywords.Split('|')); SqlKeywordsArray.AddRange(Array.ConvertAll(SqlCommandKeywords

如何新建WebAPI,生成注释,TestAPI的项目

不羁的心 提交于 2020-03-15 02:02:18
一、新建WebAPI的项目 1. 在Web下,ASP.NET Web 应用程序,点击确定 2. 点击确定 3. 如图所示, 新建Controller 4 . 运行项目 二、注释 1. 在生成中,勾选xml文档文件(生成注释文件) 2. 修改HelpPageCofig,添加项目的APl.xml的配置 config.SetDocumentationProvider(new XmlDocumentationProvider(HttpContext.Current.Server.MapPath(@"bin/RFD.Railway.Tool.xml"))); 3. 如图所示,写API内容,运行项目 4. 配置Global.asax,XPO注册信息 5. 如图所示,API页面,生成注释 三、Test API 1. 添加WebApiTestClient的dll 2. 更新dll 3. 如图所示,再Api.cshtml中,添加一行代码 @Html.DisplayForModel("TestClientDialogs") @section Scripts{ <link href="~/Areas/HelpPage.css" rel="stylesheet" /> @Html.DisplayForModel("TestClientReferences") } 4. 如图所示,已生成TestAPI按钮

ASP.NET WebAPI框架解析第一篇

安稳与你 提交于 2020-03-14 18:54:35
ASP.NET WebAPI有两种寄宿模式,一种是WebHost,一种是SelfHost,为什么可以有两种模式的原因在于WebAPI有一个相对独立的消息处理管道,只要给这个消息管道传递一个封装好的对象,便可以得到处理好的结果。而怎么去封装这个对象,如何得到这个对象就不是WebAPI所关心的了。在WebHost模式下,这个对象是由IIS+ASP.NET框架共同完成的,在SelfHost模式下,可以是任何可以完成HTTP消息响应和接收的应用程序,比如Console、Winform、Windows Server等。宿主只需要完成HTTP消息的接受和响应,处理过程交给WebAPI即可。我们先来看下在WebHost模式下一个HTTP报文的大概处理过程,首先有个总体把握,然后再按需去学习是个不错的学习方法。 首先客户端发出一个HTTP请求形成HTTP请求报文被IIS捕捉,IIS解析原始报文并作出相应处理,比如,如果请求的是一些静态资源(*.CSS、*.Html……),此时IIS可以直接返回相应资源给客户端,当然如果需要托管代码处理也是可以的,配置Web.config即可。如果IIS不处理,或者需要进一步处理,则交由ASP.NET托管代码处理,在这个处理过程中,可以自定义一些HttpModule,并在Web.confg的System.WebServer(IIS模式在集成模式下才有效)注册

【WebAPI】.NET 4.5.2 从客户端(:)中检测到有潜在危险的 Request.Path 值。

夙愿已清 提交于 2020-03-12 13:40:04
问题 WebAPI 2.0在传递日期参数,比如2020-03-12 11:24:01这样的参数,出现了冒号(:) 分析 从.net4.0开始,微软加入了对特殊字符的限制。默认的是7个特殊字符:requestPathInvalidCharacters = “<,>,*,%,&,:,\” 一旦有这7个特殊字符,则asp.net直接报有潜在危险的Request.Path,Request.Form,Request.QueryString等这样的错误 解决 关闭校验 .NET 4.5.2的与.NET 4.0的解决方法不同 我用的是.NET 4.5.2的,之前搜索的一直是4.0的解决方法,也解决不了 下面是4.5.2的解决方法 在Web.config文件的system.web的httpRuntime中添加requestPathInvalidCharacters="" 即是 <system.web> <compilation debug="true" targetFramework="4.5.2" /> <httpRuntime targetFramework="4.5.2" requestPathInvalidCharacters="" /> </system.web> 来源: CSDN 作者: GreAmbWang 链接: https://blog.csdn.net/weixin

webapi日志记录(TXT存储)

痞子三分冷 提交于 2020-03-10 19:46:05
记录webapi日志我使用了两种办法,一种是存储TXT的log文档,但我发现使用使用了我接口的日志都会存储到我电脑上。后面改用数据库存储log。数据库存储log信息这种方法个人比较推荐。之前花费了一些时间来写TXT存储还是想记录下来。 转载自:https://blog.csdn.net/lordwish/article/details/72353851 1、引用NLog类库 打开项目的NuGet包管理器,搜索NLog,为项目添加程序包引用。 2、修改项目配置文件 在webAPI项目的Web.config中进行NLog的配置。首先在节点configuration>configSections下添加节点: 此处name必需为nlog,否则配置信息将不能被读取。 然后在configuration节点下添加节点nlog: 这里定义了日志文件的保存路径、命名格式以及日志记录类型和监听级别。 注意:<configSections>必须要紧跟在<configuration>下方 <configuration> <configSections> <section name="nlog" type="NLog.Config.ConfigSectionHandler,NLog" /> </configSections> <nlog xmlns:xsi="http://www.w3.org/2001

.net core 3.1 WebApi项目---Swagger支持二级目录

半世苍凉 提交于 2020-03-08 10:25:53
1、swagger的二级目录问题 .net core 3.1环境下,我们采用的是引入 Swashbuckle.AspNetCore包产生swagger的json文件,以及swagger ui。配置相对简单,估计百度上有很多了,这里也可以参考如下: 这里集成了jwt的授权头设定 。 public void ConfigureServices(IServiceCollection services) { services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Version = "v1", Title = "后台API接口文档", Description = "API", }); //Set the comments path for the swagger json and ui. var basePath = PlatformServices.Default.Application.ApplicationBasePath; var xmlPath = Path.Combine(basePath, "XXX.Apis.xml"); var dtolXmlPath = Path.Combine(basePath, "XXX.Service.xml"); c.IncludeXmlComments(xmlPath

WebAPI-处理架构

孤街醉人 提交于 2020-03-05 00:52:41
带着问题去思考,大家好! 问题1:HTTP请求和返回相应的HTTP响应信息之间发生了什么? 1:首先是最底层,托管层,位于WebAPI和底层HTTP栈之间 2:其次是 消息处理程序管道层,这里比如日志和缓存。OWIN的引用是将消息处理程序管道的一些功能下移到栈下端的OWIN中间件了。 3:控制器处理,HTTP响应,参数的验证和绑定。 托管层 首先是人生三大哲学问题; 1:是WebAPI和底层HTTP基础结构的接口,分三类(Windows进程,[服务啊,控制台啊]&Web托管[Web hosting,IIS]&OWIN的兼容服务器[Katana]) 2:它在架构最底层,托管层,位于WebAPI和底层HTTP栈之间 3:它的职责是负责API托管 比如:ASP.NET管道。HttpListener( HTTP 协议侦听器, https://docs.microsoft.com/zh-cn/dotnet/api/system.net.httplistener?redirectedfrom=MSDN&view=netframework-4.7.2 ).OWIN宿主。 负责创建HttpRquestMessage,返回HttpResponseMessage.转换为底层网络栈处理。 上面第二类,Web托管说下流程,托管层---HttControllerHandler---WebAPI管道

发布 .Net Core WebAPI 应用程序到 Docker

放肆的年华 提交于 2020-03-02 08:45:55
目录 1. 创建 .net core webapi 项目 2. 编译应用 3. 创建 Dockerfile 文件 4. 上传文件到服务器 5. 生成Docker Image 6. 在Docker Container中运行 Web API应用 7. 测试 源代码 参考 本文创建一个简单的 .net core webapi 项目,并通过 Docker 运行起来。涉及到 Dockerfile 编写,生成镜像,并运行镜像到容器里。 1. 创建 .net core webapi 项目 创建基于 .net core 2.0 的 webapi 项目,命名为 GetMachNameWebAPI。 并修改 ValuesController 的 Get() 方法返回当前机器的机器名或其他操作。 // GET api/values [HttpGet] public IEnumerable<string> Get() { return new string[] { Environment.MachineName, Environment.OSVersion.Platform.ToString() }; } 2. 编译应用 在项目根目录使用 dotnet publish 命令发布应用程序,发布后的资源被保存在目录 \bin\Debug\netcoreapp2.0\publish 下面。 3. 创建

微服务统计,分析,图表,监控一体化的HttpReports项目在.Net Core 中的使用

我只是一个虾纸丫 提交于 2020-03-01 09:08:25
微服务统计,分析,图表,监控一体化的HttpReports项目在.Net Core 中的使用 简单介绍 HttpReports 是 .Net Core 下的一个Web项目, 适用于WebAPI,Ocelot网关应用,MVC项目,非常适合针对微服务应用使用,通过中间件的形式集成到您的项目中,可以让开发人员快速的搭建出一个 数据统计,分析,图表,监控 一体化的 Web站点。 主要模块 主要包含HttpReports 中间件 和 HttpReports.Web的MVC项目; 项目地址: HttpReports: https://github.com/SpringLeee/HttpReports HttpReports.Web: https://github.com/SpringLeee/HttpReports 在线预览: http://175.102.11.117:8801 账号 admin 密码 123456 支持项目类型 😂 单个WebAPI应用 😆 多个独立WebAPI应用 😊 Ocelot 网关应用 😛 单个MVC项目 😃 多个MVC项目 如何使用 1.添加 HttpReports 中间件 Nuget 包安装 HttpReports, 打开Startup.cs, 修改 ConfigureServices(IServiceCollection services) 方法,添加以下代码