一切福田,不離方寸,從心而覓,感無不通。

Category Archives: Asp.net

ASP.NET Web API实现简单的文件下载与上传

ASP.NET Web API实现简单的文件下载与上传。首先创建一个ASP.NET Web API项目,然后在项目下创建FileRoot目录并在该目录下创建ReportTemplate.xlsx文件,用于下面示例的使用。 1、文件下载 示例:实现报表模板文件下载功能。 1.1 后端代码

  1.2 前端代码

2、文件上传 示例:实现上传报表文件功能。 2.1 后端代码

  2.2 前端代码

  from:https://blog.csdn.net/pan_junbiao/article/details/84065952

龙生   21 Apr 2020
View Details

DapperExtensions的基本用法

介绍下使用Dapper-Extensions的基本语法 //实体类 DemoEntity entity = new DemoEntity(); //根据实体主键删除 this.Delete<DemoEntity>(entity); //根据主键ID删除 this.Delete<DemoEntity>(1); //增加 this.Insert<DemoEntity>(entity); //更新 bool result = this.Update<DemoEntity>(entity); //根据主键返回实体 entity = this.GetById<DemoEntity>(1); //返回 行数 this.Count<DemoEntity>(new { ID = 1 }); //查询所有 IEnumerable<DemoEntity> list = this.GetAll<DemoEntity>(); IList<ISort> sort = new List<ISort>(); sort.Add(new Sort { PropertyName = "ID", Ascending = false }); //条件查询 list = this.GetList<DemoEntity>(new { ID = 1, Name = "123" }, sort); //orm 拼接条件 查询 IList<IPredicate> predList = new List<IPredicate>(); predList.Add(Predicates.Field<DemoEntity>(p => p.Name, Operator.Like, "不知道%")); predList.Add(Predicates.Field<DemoEntity>(p => p.ID, Operator.Eq, 1)); IPredicateGroup predGroup = Predicates.Group(GroupOperator.And, predList.ToArray());   list […]

龙生   17 Apr 2020
View Details

Asp.Net WebApi一个简单的Token验证

1、前言 WebAPI主要开放数据给手机APP,Pad,其他需要得知数据的系统,或者软件应用。Web 用户的身份验证,及页面操作权限验证是B/S系统的基础功能。我上次写的《Asp.Net MVC WebAPI的创建与前台Jquery ajax后台HttpClient调用详解》这种跟明显安全性不是那么好,于是乎这个就来了 ,用户需要访问的API都必须带有票据过来,说白了就是登陆之后含有用户信息的Token。开始撸… 2、新建一个WebApi项目 在App_Start文件夹下面新建一个BaseApiController控制器,这是基础的Api控制器,后面有要验证的接口都继承这个控制器:

这个构造函数里主动加一个header头信息 ,因为每次访问的时候都要执行构造函数,在那边验证的时候都要从Header中取出来,计算出用户名 是否跟Session缓存的一致这样判断的 3、在建一个TokenCheckFilter.cs 继承AuthorizeAttribute重写基类的验证方式,重写HandleUnauthorizedRequest

  4、在WebApiConfig.cs配置文件里面修改一下路由加上/{action},这样就能调用到具体的哪一个了       Webapi默认是不支持Session的,所以我们需要在Global加载时候添加对Session的支持,在Global.asax里面重写Application_PostAuthorizeRequest,不然运行调用会直接异常

    5、现在来写一个登陆 新建一个控制器LoginController继承BaseApiController 里面写一个登陆的方法Login 登陆页面就直接在Home的index里面写一个简单的就行了这个控制器访问就不受限制了加上注解

  登陆页面 简单而粗暴  

        登陆这个我是写了链接数据库的自己练习可以最易更改一个固定的值 现在应该可以看到返回的Token数据了       6、现在就可以写Api 都继承BaseApiController这个控制器的方法上面需要验证的都要加上验证的注解,我是整个控制都要就直接写在类上面了,随便写一个举举例子,就比如全国省市县的查询

    记录一个EF随意取数据库条数信息是这么写的 var data = db.CnblogsList.OrderBy(p => Guid.NewGuid()).Take(100); 现在看效果图      没有登陆的时候是进不去的 postman上面的效果也看一下     效果都是一样的,如果登录了就可以直接访问 了 不用加参数 ,只有方法需要参数的就可以加             这里贴一个调用的代码:

  7、总结 1)、总体思路,如果是合法的Http请求,在Http请求头中会有用户身份的票据信息,服务端会读取票据信息,并校验票据信息是否完整有效,如果满足校验要求,则进行业务数据的处理,并返回给请求发起方; 2) 如果没有票据信息,或者票据信息不是合法的,则返回“未授权的访问”异常消息给前端,由前端处理此异常。 3)、登录的时候判断用户名跟密码对不对,对了就生成用户信息的Token,Session保存一个Token,BaseApiController里面的登录名跟Token也赋值了。保存这些票据信息。 4)、当用户有权限操作页面或页面元素时,跳转到页面,并由页面Controller提交业务数据处理请求到api服务器; 如果用户没有权限访问该页面或页面元素时,则显示“未授权的访问操作”,跳转到系统异常处理页面。 5)、 api业务服务处理业务逻辑,并将结果以Json 数据返回,返回渲染后的页面给浏览器前端,并呈现业务数据到页面; 8、测试地址 http://www.yijianlan.com:8001/   ———————->先登录,用户名 test密码 […]

龙生   17 Apr 2020
View Details

C#WebAPI返回json去掉双引号前面的反斜杠

  from:https://www.cnblogs.com/taozihua/articles/8716362.html

龙生   17 Apr 2020
View Details

asp.net+mysql解决Incorrect string value: '\xF0\x9F\x98\xAD

ALTER DATABASE 数据库 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; ALTER TABLE 表 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; 数据库连接字符串加上:charset=utf8mb4    

龙生   13 Apr 2020
View Details

解决mysql报错误 0x80004005 Incorrect string value: '\xF0\xA0\x83\x8A2\xE4…' for column

最近遇到一个mysql生产问题,一直报:报错误 0x80004005  Incorrect string value: '\xF0\xA0\x83\x8A2\xE4…' for column 经过排查原来数据库和表都是默认utf8编码,老司机都知道,mysql中的utf8编码有一个大坑,不是真正的utf8。当遇到特殊字符就会插入失败报下面的错误: MySql.Data.MySqlClient.MySqlException (0x80004005): Incorrect string value: '\xF0\xA0\x83\x8A2\xE4…' for column 使用环境: 1、asp.net core 2.2 2、dapper 3、mysql8 通过下面步骤完美解决: 一、首先查看当前数据库编码 1 show variables like 'character%' 最后必须要达到下面的设置: 二、更改数据库编码 1 ALTER DATABASE 数据库名称  DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; 三、更改所有表和列编码 先生成所有表的更改语句,这样可以批量mysql所有表和列编码为utf8mb4 1 2 3 4 5 6 7 8 9 10 SELECT     CONCAT(         'ALTER TABLE ',         TABLE_NAME,         ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;'     ) FROM     information_schema.TABLES WHERE     TABLE_SCHEMA =’数据库名称'; 把上面查询结果导出,执行就行了。 四、更改数据库配置 数据库配置my.ini或my.cnf,你的配置可能不叫这个句子。 修改为如下配置: 1 2 3 4 5 6 7 [client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 [mysqld] collation-server = utf8mb4_general_ci character-set-server = utf8mb4 更改之后重启mysql 五、修改数据库连接 经过上面4步骤,以为就万事大吉了。 注意:一定要修改程序的数据库连接,不然照样报错。 如下: 1 Host=localhost;Port=3306;Database=lanhu;Uid=www.lanhusoft.com;pwd=lanhusoft;Charset=utf8mb4; 之前我们写成utf8都不行,一定要写成utf8mb4   from:https://lesg.cn/Article-53016.html

龙生   10 Apr 2020
View Details

解析利用wsdl.exe生成webservice代理类的详解

利用wsdl.exe生成webservice代理类: 根据提供的wsdl生成webservice代理类 1、开始->程序->Visual Studio 2010 命令提示 2、输入如下红色标记部分 D:/Program Files/Microsoft Visual Studio 8/VC>wsdl /language:c# /n:TestDemo /out:d:/Temp/TestService.cs D:/Temp/TestService.wsdl 在d:/Temp下就会产生一个TestService.cs 文件 注意:D:/Temp/TestService.wsdl 是wsdl路径,可以是url路径:http://localhost/Temp/Test.asmx?wsdl   wsdl参数说明: wsdl.exe <选项> <URL 或路径> <URL 或路径> … – 选项 – <URL 或路径> – 指向 WSDL 协定、XSD 架构或 .discomap 文档的 URL 或路径。 /nologo 取消显示版权标志。 /language:<language> 用于生成的代理类的语言。请从“CS”、“VB”、“JS”、“VJS”、 “CPP”中选择,或者为实现 System.CodeDom.Compiler.CodeDomProvider 的类提供一个完全限定的名称。默认语言为“CS”(CSharp)。 缩写形式为“/l:”。 /sharetypes     打开类型共享功能。此功能针对不同服务之间共享 的相同类型(命名空间、名称和网络签名必须相同) 创建一个具有单一类型定义的代码文件。 请使用 http:// URLs 作为命令行参数来引用 服务,或为本地文件创建一个 discomap 文档。 /verbose     指定 /sharetypes 开关时显示额外信息。 缩写形式为“/v”。 /fields     生成字段而非属性。缩写形式为“/f”。 /order     为粒子成员生成显式顺序标识符。 /enableDataBinding     在所有生成的类型上实现 INotifyPropertyChanged 接口, 以启用数据绑定。缩写形式为“/edb”。 /namespace:<namespace>     生成的代理或模板的命名空间。默认命名空间 为全局命名空间。缩写形式为“/n:”。 /out:<fileName|directoryPath>     生成的代理代码的文件名或目录路径。默认文件名是从 […]

龙生   20 Mar 2020
View Details

GDI+中发生一般性错误的解决办法

前言: 今天在做二维码需求的时候,代码运行的时候报的:GDI+中发生一般性错误的解决办法这个错误,这个错误也是第一次遇到,不知道怎么解决,以为是生成二维码的代码错了。最后通过对代码的检查以及查资料进行解决了,原来是少了一个保存二维码图片的文件夹。 这个错误也常在在后台生成图片以及验证码中出现。基本上都是采用下面的几种解决办法 代码中没有物理的文件夹的解决办法: 在调用 Save 方法之前,先判断保存图片的文件夹是否存在,若不存在,则创建,当然也可以手动添加一个

  有保存图片的物理文件夹的解决办法: 给相应的文件夹赋予 NETWORK SERVICE 帐户以写权限 保存的文件已存在并因某种原因被锁定的解决办法: 重启IIS,解除锁定。并在代码中使用 using 语句,确保释放 Image 对象所使用的所有资源 ———————————————— 版权声明:本文为CSDN博主「小灰灰城堡」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/GreyCastle/article/details/88411697

龙生   18 Mar 2020
View Details

在asp.net 中应用POST传递和接收XML文件以及参数.(转)

  from:https://www.cnblogs.com/shenyixin/p/4630698.html

龙生   28 Feb 2020
View Details
1 6 7 8 48