![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ASP.NET
文章平均质量分 83
_学而时习之_
这个作者很懒,什么都没留下…
展开
-
FileUpload上传过大文件异常
在Asp.net中使用FileUpload上传文件,对于小文件一般是没有问题的,但是对于大的文件则会出问题。提示“未显示页面,因为请求实体过大”,网上找了资料,按照所说的方法来处理,都未能解决该问题。在web.config中的configuration/system.web节点中已经作了如下配置,但依旧异常。<httpRuntime targetFramework="4.5" ex...原创 2019-07-11 10:59:34 · 2138 阅读 · 0 评论 -
钉钉开发系列(八)二维码扫描登录的实现
钉钉PC版在登录的时候,需要使用手机版的来扫描,扫描之后会弹出一个确定的页面,确定之后PC端就会登录进去。基于此,我们也想实现相似的功能,为此我们需要先探讨其中的原理。查看钉钉PC版的二维码会发现是一个含有一个KEY的URL,钉钉扫描后会直接进入该URL的页面,在页面中确定之后,会向钉钉服务器发起一个请求,应该是写入了一串值,同时钉钉PC版检测到该值,匹配之后就登录成功了。下面是一个流程简图。原创 2016-07-22 17:15:26 · 24080 阅读 · 3 评论 -
钉钉开发系列(七)媒体文件的上传与下载
官方提供的接口说明和示例是基于java的,却没有对具体的header作出更详细的说明,导致很难使用C#语言转换,几经测试,总算找到了个不是太完整的解决方法,代码如下。/// ///POST文件 /// /// /// /// 比如钉钉上传媒体文件使用的是media,该值用于服务端接收到数据时读取该keyna原创 2016-07-21 15:55:48 · 17231 阅读 · 8 评论 -
基于C#和JS的阻止重定向攻击
There are different types of attacks that exist in web programming, like SQL Injection Attack, Cross Site Scripting Attack(XSS), Open Redirection Attack etc., and we need to take care of these attacks转载 2017-04-20 10:28:49 · 1239 阅读 · 0 评论 -
Nuget服务的搭建-打包-上传-删除
为了便于公共库的内部复用,我们可以架设自己的nuget服务。首先创建一个Asp.net的空项目NugetServer,其次使用nuget安装nuget.server包,如下图添加了nuget.server后,直接编译然后发布到IIS下,一个简单的nugetServer就搭建成功了。但是为了能更方便的操作,还需要加一些简单的功能,比如nuget包的上传和删除。在上传nuget包之前,原创 2017-03-31 16:04:51 · 5107 阅读 · 6 评论 -
配置文件的读写
System.ConfigurationManager类用于对配置文件的读取。其具有的成员如下:一、AppSettings AppSetting是最简单的配置节,读写非常简单。名称说明AppSettings获取当前应用程序默认配置的 AppSettingsSection 数据ConnectionStrings获取当前应用程序默认配转载 2017-03-02 11:55:51 · 421 阅读 · 0 评论 -
Ajax上传文件至MVC的controller
在前端与后端交互,ajax是最常用的方式,而后台的响应也有很多方式,在asp.net中有一般处理程序和MVC的Controller响应的方式。在使用controller来响应请求时,可以通过路由配置来定位到具体的方法,这样代码清晰,逻辑分明,但前端传到后端的参数一般是通过函数的参数来接收的,而对于文件这样较大的数据,不太方便接收,虽然有类似HttpPostedFileBase的类作为参数,但使用a原创 2017-03-01 09:48:07 · 6193 阅读 · 0 评论 -
EntityFramework存储过程的返回类型
使用EntityFramework可以很方便的与数据库打交道,但是对于存储过程,返回类型很让人纠结,默认只返回受影响的行数,而我们在使用存储过程时往往是会返回一串的数据或者一个表。那有没有什么方法呢?我们知道在SQL2008是支持表类型的,如果存储过程在执行完成后返回了一个表类型,在EF端再接收一下,那是不是就可以了呢?事实证明是可行的。我们需要分几个步骤。1.在数据库中建立一个表类型,比原创 2016-07-07 18:01:21 · 3864 阅读 · 0 评论 -
WebApi后端的List<String>前端如何发送?
WebApi作为RESTful的风格已经广为流行,在后端有时我们需要传入List类型的参数,那这时前端要如何发送数据呢?按以往ajax的经验,我们可能会选择post的方式,以formdata或者json数据来提效,比如$.post(url,{'list':data},function(success){...})或者$.ajax(type:"post",data:{"list":dat原创 2016-06-06 14:26:46 · 14355 阅读 · 0 评论 -
WebApiTestClient找不到TestApi按钮
WebApiTestClient是WebApi开发过程中的测试神器,具体的安装可以参照该文http://www.cnblogs.com/landeanfen/archive/2016/02/24/5210356.html。但是安装完成,跑起来后,会发现TestApi的按钮找不到了。网上找了很多资料,都指向的是要nuget安装的,但我就是nuget安装的。后来能过查找资料和对比,发现是Areas原创 2016-05-26 14:04:04 · 3840 阅读 · 0 评论 -
C#中WebApi接口传参不再困惑:传参详解
前言:还记得刚使用WebApi那会儿,被它的传参机制折腾了好久,查阅了半天资料。如今,使用WebApi也有段时间了,今天就记录下API接口传参的一些方式方法,算是一个笔记,也希望能帮初学者少走弯路。本篇针对初初使用WebApi的同学们,比较基础,有兴趣的且看看。本篇打算通过get、post、put、delete四种请求方式分别谈谈基础类型(包括int/string/datetime等)、实转载 2016-04-06 17:50:54 · 11437 阅读 · 1 评论 -
C#的百度地图开发(一)发起HTTP请求
百度地图的开发文档中给出了很多的事例,而当用到具体的语言来开发时,又会有些差异。我是使用C#来开发的。在获取相应的数据时,需要通过URL传值,然后获取相应的返回值(这一点很多平台的开发都是如此:比如微信的企业号)。所以我们第一步要解决的就是如何发起URL请求。如果是在前端,我们可以很轻易的发起URL请求,就是在浏览器的地址栏中输入URL即可,那么在C#的后台要如何发起请求呢?来看下面的代码:原创 2015-01-14 09:05:53 · 6418 阅读 · 6 评论 -
钉钉开发系列(九)SaltUI在VS中的开发
钉钉提供了SaltUI的组件,以利于界面的开发。SaltUI是基于React实现的,所以调用方式与React是一致的。具体的安装过程可以参照官方的说明文档。SaltUI基于React实现,在安装是基于nodejs的,nodejs一定要安装4.X版的,否则nowa会无法使用。在nowa安装好后,我们用VS2015新建一个项目SaltUIDemoSrc,然后开始初始化项目,为了方便后续的使用,做成了一原创 2016-08-10 10:56:40 · 10162 阅读 · 20 评论 -
钉钉开发系列(十)SaltUI与WebApi交互
Asp.net中常用的数据交互是WebApi的方式,对于请求者只是向一个url发起请求。对于SaltUI,官方推荐使用salt-fetch.js来进行数据交互,当然直接使用zepto.js或者jquery.js以ajax来交互也是可以的。接上一篇《钉钉开发系列(九)SaltUI在VS中的开发》,我们在项目SaltUIDemo中构造WebApi端,在项目中添加一个Global.asax和WebA原创 2016-08-10 12:06:44 · 7440 阅读 · 4 评论 -
钉钉开发系列(十一)钉钉网页扫码登录
在《钉钉开发系列(八)二维码扫描登录的实现》介绍了一种扫码登录的方式,该方式是自己产生二维码,二维码中的URL指到自身的服务器页面,在该页面中以JSSDK的方式来获取钉钉用户的信息。钉钉官方提供了另外两种扫码登录的方式,可以参见钉钉官网。先申请获取相应的appid和appsecret,然后架设一个服务端,比如有页面ddqrlogin.aspx,然后将该页面的URL使用URL编码,对应到http原创 2016-11-04 14:38:09 · 13307 阅读 · 11 评论 -
Asp.net+Vue+EmelentUI的实现(七)权限控制
基于业务的需求,每一个页面会有不同的功能,对不同的功能又需要进行权限管控,那基于Asp.net和Vue要如何实现权限管控呢?比如有增加、删除、修改的功能,需要控制对应的权限,如果这些功能的按钮在没有权限时不渲染出来,那就达到了目的。所以解决权限控制的关键,在前端就是控制是否渲染。基于这样的思考,于是有了这样的思路:使用vue的v-if来控制渲染,v-if的值由asp.net的后台代码来给定,示...原创 2019-05-31 10:12:13 · 2771 阅读 · 3 评论 -
Asp.net+Vue+EmelentUI的实现(六)扩展ElementUI的图标
ElementUI提供的图标数量有限,无法满足项目的要求,这时我们需要扩展图标。那要如何扩展呢?我们可以利用Iconfont来扩展。1.登录Iconfont,搜索到所要的图标,加入到购物车.2.点击右上角的购物车图标,可以看到刚刚加入到购物车的图标3.将图标【添加至项目】没有项目则新建一个项目,如下图假如项目名称为【TEST】,则确定后进入到项目中,如下图...原创 2019-05-10 11:36:50 · 4234 阅读 · 0 评论 -
Asp.net+Vue+EmelentUI的实现(五)全局组件的注册
Vue注册全局组件,只要直接注册即可,代码如下Vue.component('name', { props: [], template:' '})如果我们生成一个vue-comment.js的JS文件,并且通过PageBase的自动加载方式来加载,那么就可以实现自动载入了。在PageBase的载入默认JS的地方,加入载入vue-component.js的代码,新代码如下...原创 2019-05-10 09:29:42 · 3491 阅读 · 8 评论 -
Asp.net+Vue+EmelentUI的实现(四)菜单栏与页面的路由载入
基于vue和emelent ui来创建菜单栏,可以通过官方的demo来实现,而页面的载入,由于我们没有使用vue-route的路由式的载入,所以我们选用iframe来载入,实现的效果如下图default.aspx的页面代码如下<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="default.aspx.cs" In...原创 2019-05-06 15:48:35 · 2974 阅读 · 0 评论 -
Asp.net+Vue+EmelentUI的实现(三)JS和CSS的自动载入
在前面的文章中实现了框架的简单搭建、身份的验证,但每个页面都要引入vue和element等相关的js、css,这样相当繁琐,那有没有什么方式能够自动实现的呢?有的。这就要用到asp.net的机制。因为aspx的每一个页面都是通过后台请求来推送到前端的,所以可以在收到请求后,作出一定的处理,把需要加载的js、css直接赋进去。为此,我们增加了一个PageBase类,代码如下。/// <s...原创 2019-05-06 15:24:17 · 2730 阅读 · 0 评论 -
Asp.net+Vue+EmelentUI的实现(二)登录验证
在《Asp.net+Vue+EmelentUI的实现(一)框架搭建》一文中实现了简单的框架搭建,现在继续登录验证的实现。我们采用的是Asp.net来构建的,所以首选asp.net的验证机制。1.web.config的配置<?xml version="1.0" encoding="utf-8"?><!-- 有关如何配置 ASP.NET 应用程序的详细信息,请访问...原创 2019-05-06 14:55:34 · 8722 阅读 · 3 评论 -
Asp.net+Vue+EmelentUI的实现(一)框架搭建
vue对于web端的开发优势是很明显的,特别是单页应用,响应、数据等都很明显,而且开发效率也高,又有很多资料可查、有社区的支持。但vue对于开发较大的项目时,则会显得笨重,因为编译成了单页应用,非常臃肿,首次加载变的很慢。而且在使用VS来开发时,虽然VS可以创建vue的项目,但是基于node.js来编译的,不好操作,而且经常出现卡死现象,于是就考虑有没有其他的方式来应用vue。vue本质上是一...原创 2019-05-06 13:46:09 · 33159 阅读 · 18 评论 -
微信支付签名失败与回调无响应的坑
一、按微信官方的c#部分demo的代码,付款或退款时签名失败,总结了一下,大致以下几种可能。1.参数没有按官方的接口传输。2.参数正常,但转换成xml传输时,字符串放到CDATA内,没有放到XML节点中,实际上字符串放到CDATA和XML节点中都是可行的。官方的demo是放到CDATA中,而官方文档是放到XML节点中。所以严格来说,这个不算是坑。3.按官方demo的代码,在生成签名时m...原创 2019-03-13 09:43:31 · 3738 阅读 · 2 评论 -
WebApi的Swagger中实现area分级Controller
Asp.Net的WebApi中使用Swagger作为说明和测试的页面是非常不错的,比起WebApiTestClient来至少在界面上的很大的提升。但是使用Swagger时如果只是一般的控制器直接放到Controller下就可以了,而如果因不同的业务需求而需要分类或者有同名的类名时时则没办法很好的处理,有的人是在Controller下直接手动以不同的前缀或者后缀来区分,有的是只能改成其他的名字,总之...原创 2018-08-20 11:58:25 · 6442 阅读 · 3 评论 -
WebAPI中HttpResponseException返回JSON
在WebApi的开发中,通常会Global.asax中使用config.Filters.Add(new GlobalExceptionAttribute())来注册一个全局的异常GlobalExceptionAttribute来处理异常,比如UnauthorizedAccessException,ValidationException等,但这些异常只是直接抛回了html的页,在WebAPI的请求中...原创 2018-04-18 10:32:02 · 2707 阅读 · 0 评论 -
网络通信socket连接数上限
转载自http://blog.csdn.net/tgxallen/article/details/54947523http://www.cppblog.com/aa19870406/archive/2012/07/15/183595.htmlsocket accept()返回的socket描述符的端口和listen描述符端口是一样的吗?as you know,一个s转载 2017-09-21 10:38:01 · 9187 阅读 · 0 评论 -
基于OWIN的WEB API承载
使用VS2013可以直接创建web api,然后承载到IIS中就可以供外部访问。但这样必须依赖于IIS,如果采用OWIN,则不再依赖,仅仅是运行了一个执行程序而已。先来看看效果图。具体步骤如下1.新建一个空的web项目,然后使用nuget搜索安装Microsoft.AspNet.WebApi.OwinSelfHost.具体可以参见该文http://www.asp.net/web-a原创 2015-10-15 16:29:28 · 4192 阅读 · 0 评论 -
VS中实时获取SVN的版本号并写入到AssemblyInfo.cs中(C#)
在开发项目时,需要知道当前发布的到底是哪个版本,比较好的方式就是获取SVN的版本来作为项目的版本。项目版本一般由主版本、次版本、内部版本、修改版本四个部分组成,我们获取的SVN版本就作为修改版本即可。这里需要利用SVN的SubWCRev.exe来实现,一般安装了SVN后都会有的。SubWCRev.exe获取SVN版本并依据模板文件,更新到相应的目标文件中。下面是具体的步骤。1.将项目中Prop原创 2015-10-20 17:57:28 · 5326 阅读 · 0 评论 -
Asp.Net服务器控件开发的Grid实现(四)回发事件
在使用Grid的时候,会用到链接跳转。如果只是普通的链接跳转,那只要使用a标签的href就可以实现。但是有时,我们希望在链接跳转的时候,能够引发回发事件,在后台作出一定的处理,然后再跳转。这样要如何实现呢?我们可以定义一个原创 2014-11-13 09:26:15 · 1645 阅读 · 0 评论 -
Asp.Net服务器控件开发的Grid实现(二)Html标记渲染
我们先来实现Grid类,代码如下:Grid.csusing System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Thr原创 2014-10-29 17:31:05 · 1567 阅读 · 0 评论 -
Asp.Net服务器控件开发的Grid实现(一)UI调用
使用Asp.Net做Web开发时,系统提供的控件,有时难以达成所要的目的。这时,有多种方式可以解决,比如采用html+js的形式,在前端布局出所要的界面,然后再通过ajax等方式去获取数据,以达成目的。但这样做,很是费劲,特别是当布局出来的界面需要重用的时候,更加费劲。有人,会直接将该界面的代码进行拷贝,但这对后来的维护必然带来更大的问题。所以就考虑,有没有一种方式可以让布局得到重用,又便于维原创 2014-10-29 17:11:54 · 2432 阅读 · 0 评论 -
利用VS的预生成事件获取SVN版本作为项目内部版本号
VS中的Properties下的AssemblyInfo.cs可以设置相应的版本号。下面是AssemblyInfo.cs设置版本的方式。[assembly: AssemblyVersion("1.0.0.0")][assembly: AssemblyFileVersion("1.0.0.0")]但是,这个需要每次都设定,而且与SVN上的版本号并不一致,追塑起来不是很方便。所以就想着取SVN上原创 2014-08-08 08:11:55 · 3766 阅读 · 0 评论 -
.NET的装箱与拆箱内幕
装箱与拆箱是.NET中非常重要的概念。装箱是将值类型转换成引用类型,或者是实现了接口的值类型。装箱将数据存储的空间由Thread stack转存到了Managed Heap中。凡是在Managed Heap中开辟空间,都将触发GC(垃圾回收),在Thread statck将不会触发垃圾回收。拆箱就是将数据从Managed Heap中提取出来,并拷贝到Thread stack中。所以拆箱会形原创 2014-07-04 16:49:53 · 3332 阅读 · 0 评论 -
.NET中struct与class的区别
在.net中的struct与class有很多相似之处,比如可以直接new,对于成员可以直接XX.field,以至于有不少程序员在用时,将其混在一起,分不清有何区别。这两者有何区别呢?1.类型不同我们先来看一段代码 static void Main(string[] args) { TypeDemo();原创 2014-07-04 12:05:03 · 3130 阅读 · 0 评论 -
is和as在类型转换时的性能差异
is和as是.NET中常用的操作,两者都可以实现类型的安全转换,但两者却有所不同。如public class Employee{}public void Add(object obj)//写法一{ Employee e=null; if(obj is Employee) { e=(Employee)obj; //正常处理 }原创 2014-07-03 14:18:39 · 1794 阅读 · 0 评论 -
C#之自定义的implicit和explicit转换
在类型转换时常会遇到隐式转换和显式转换。那我们自定义的类型要如何去定义隐式转换和显式转换?我们来看一段代码public class Rational { private Int32 _inner_int = 0; public Rational() { } public Rational(Int32原创 2014-07-23 09:20:13 · 4261 阅读 · 0 评论 -
FineUI之动态增加列及修改列的实现
在FineUI的官方示例中有类似的实现。示例中实现了动态增加列,但有时我们可能需要动态修改列。先来看效果图下面是代码实现DynamicGrid.aspx原创 2014-07-02 09:50:10 · 6429 阅读 · 0 评论 -
ASP.NET之通过JS向服务端(后台)发出请求(__doPostBack is undefined)
ASP.NET回发数据是通过函数__doPostBack来实现的,该函数在添加了服务端控件,并将AutoPostBack设置为true之后,将自动生成,具体可以参看下面的图。同时还会生成隐藏控件,其ID为__EVENTTARGET和__EVENTARGUMENT,前一个是用于存放key的,后一个用于存放参数的。所以在后台通过Request.Form来获取所要原创 2014-05-26 17:28:43 · 3367 阅读 · 0 评论 -
FineUI之使用SQL脚本从数据库表中生成相应的输入控件
在WEB开发时,经常需要依据数据库表中的字段建立相应的输入控件,来获取输入的数据。每次都需要按字段来敲,显然太低效,而且容易出错。这里提供一个SQL脚本生成相应输入控件的方法。USE DBDemoDECLARE @TEMP_TABLE_NAME NVARCHAR(512)DECLARE @WIDTH NVARCHAR(50)SET @TEMP_TABLE_NAME='Stuff'SE原创 2014-07-16 14:52:31 · 1925 阅读 · 0 评论 -
Asp.Net服务器控件开发的Grid实现(三)列编辑器
下面是GridColumnsEditor的实现代码:GridColumnsEditor.csusing System;using System.Collections.Generic;using System.ComponentModel.Design;using System.Linq;using System.Text;using System.Threading.Tas原创 2014-10-29 17:46:30 · 1756 阅读 · 0 评论