我刚开始.net 开发的那几年,差不多每天坚持搜集实用的技巧和代码片断。几年下来也搜集了上千条。现在选出一些不太容易找或者自己有较多体会的,写在这里。内容太多,分两次发。

1.上传文件超过设置允许的最大值时,显示自定义出错页面。

这个帖子说得最好:https://stackoverflow.com/questions/2759193/display-custom-error-page-when-file-upload-exceeds-allowed-size-in-asp-net-mvc

自己的一点心得:这个帖子里引用了这个链接:https://www.thecodingforums.com/threads/how-to-handle-maximum-request-length-exceeded-exception.97027/ 实践发现,还需要在Application_Error里压制相应的exception。

在php里,不存在这个问题。如果上传文件超过设置允许的最大值,php不会象asp.net 那样抛出一个让人不知道发生什么的空页面。

2.检查当前用户是否属于某个数据库角色

ALTER PROCEDURE [dbo].[ssp_IsDbRole]
@RoleName VARCHAR(50)
AS DECLARE @IsMember BIT
, @CurrentUser VARCHAR(60)
, @UserLogin VARCHAR(60)
, @SIndex INT CREATE TABLE #tmp_Roles
(
RoleName VARCHAR(60)
, RoleID SMALLINT
, IsAppRole INT
) INSERT INTO #tmp_Roles
EXEC sp_helprole IF NOT EXISTS
(
SELECT NULL
FROM #tmp_Roles
WHERE RoleName = @RoleName
)
SET @IsMember = 0
ELSE
BEGIN
SET @CurrentUser = SYSTEM_USER
SET @SIndex = CHARINDEX('\', @CurrentUser)
IF @SIndex > 0
SET @UserLogin = SUBSTRING(@CurrentUser, @SIndex + 1, LEN(@CurrentUser) - @SIndex)
ELSE
SET @UserLogin = @CurrentUser CREATE TABLE #tmp_Members
(
DBRole VARCHAR(60)
, MemberName VARCHAR(60)
, MemberSID VARBINARY(85)
)
INSERT INTO #tmp_Members EXEC sp_helprolemember @RoleName
IF EXISTS
(
SELECT MemberSID
FROM #tmp_Members
WHERE MemberName IN (@CurrentUser, @UserLogin)
)
SET @IsMember = 1
ELSE
SET @IsMember = 0
DROP TABLE #tmp_Members
END
DROP TABLE #tmp_Roles
SELECT @IsMember AS IsMember

3. sql server 2005和2008 报表服务有不同的缺省web服务地址,一个检测到底是2005还是2008的方法是:向这个地址

http://<服务器地址>:<端口号>/reportserver/reportservice.asmx 发一个http请求,然后看返回的文本,如以<html开头就是2008,如以<?xml开始,就是2005。

4. 在报表服务器上创建新目录

string reportPath = "/foo/bar";
bool exists = true;
string parentPath = "/";
string[] reportPaths = reportPath.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
if (reportPaths.Length > )
{ SearchCondition[] conditions = new SearchCondition[];
SearchCondition condition = new SearchCondition();
condition.Condition = ConditionEnum.Equals;
condition.ConditionSpecified = true;
condition.Name = "Name"; for (int i = ; i < reportPaths.Length; i++)
{
condition.Value = reportPaths[i];
conditions[] = condition;
var result = myreportingServiceWebServiceClient.FindItems(parentPath, BooleanOperatorEnum.And, conditions);
if (result == null || result.Length == )
{
exists = false;
myreportingServiceWebServiceClient.CreateFolder(reportPaths[i], parentPath, null);
}
if (parentPath != "/")
{
parentPath += "/";
}
parentPath += reportPaths[i];
}
}

5. 以下sql

select abc from dbo.a left join dbo.b where b.t = 'a'

如果b.t是null就没有任何返回结果

应改成

select abc from dbo.a left join dbo.b on b.t = 'a'

6. asp.net应用,如果服务器和客户端使用不同的地理区域设置,可能会有不同的日期格式,在解析时要注意这个问题,一种方法是:

                DateTime dt = DateTime.MinValue;
string strDate = Request["Date"];
System.Globalization.CultureInfo[] cultures = System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.AllCultures);
foreach (var item in cultures)
{
if (DateTime.TryParse(strDate, item, System.Globalization.DateTimeStyles.None, out dt))
{//合法的日期
......
break;
}
}

7. asp.net应用里,检查Cache是否过期,最好是if (Cache["mykey"] == null || ((MyObj)Cache["mykey"]).MyProperty == null)

而不仅仅是if (Cache["mykey"] == null)

8. 通过连接服务器(linked server)执行存储过程时,触发了错误:

Server 'foo' is not configured for rpc.

如果打开Sql Server Management Studio,linker server properties -- server options -- RPC and RPC out,企图将值改成true,可能会触发错误:

Ad hoc updates to system catalogs are not allowed.

正确做法是执行:

exec sp_serveroption @server='foo', @optname='rpc', @optvalue='true'
exec sp_serveroption @server='foo', @optname='rpc out', @optvalue='true'

9. javascript:列出对象的所有属性名称和值:

function dumpProps(obj, parent) {
for (var i in obj) {
if (parent) {
var msg = parent + "." + i + "\n" + obj[i];
}
else {
var msg = i + "\n" + obj[i];
}
alert(msg);
if (typeof obj[i] === "object") {
if (parent) {
dumpProps(obj[i], parent + "." + i);
}
else {
dumpProps(obj[i], i);
}
}
} }

10. sql server: 在计算列(computed column)上建索引要小心,可能会触发错误:

INSERT failed because the following SET options have incorrect settings: 'ANSI_NULLS'. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or filtered indexes and/or query notifications and/or XML data type methods and/or spatial index operations.

解决办法是正确设置这些标志值:

SET NUMERIC_ROUNDABORT OFF
GO
SET ANSI_PADDING,ANSI_WARNINGS,CONCAT_NULL_YIELDS_NULL ,ARITHABORT,QUOTED_IDENTIFIER,ANSI_NULLS ON
GO

11. 使用windows的Task Scheduler,运行一个批处理文件(.bat)将文件拷贝到一个网络盘:

copy c:\temp\a.txt  q:\abc\

这不会成功,得用完整地址:

copy c:\temp\a.txt \\<域名>\\<机器名>\\abc

尽管这个路径已经映射为q:,可是Task Scheduler好像不知道这回事。

另一个方法就是在上面的copy命令前,先执行一条net use映射命令。

C#,js和sql实用技巧选1的更多相关文章

  1. C#,js和sql实用技巧选2

    1.为什么"foo".Equals()不是好做法?因为当正确的写法是"foo".Equals(obj.value),却写成了"foo".Eq ...

  2. js 处理URL实用技巧

    escape().encodeURI().encodeURIComponent()三种方法都能对一些影响URL完整性的特殊字符进行过滤.     但后两者是将字符串转换为UTF-8的方式来传输,解决了 ...

  3. SQL实用技巧:如何将表中某一列的部分数据合并到一行中

    select *,stuff(select ‘,’ + fieldname from table1 for xml path(”)),1,1,”)  as  field from table2 for ...

  4. SQL实用技巧:如何分割字符串

    create function f_split(@c varchar(2000),@split varchar(2)) returns @t table(col varchar(20)) as beg ...

  5. SQL实用技巧:如何判断一个值是否为数字的方法

    检测是不是数字型的数据, 两种方法 1. ISNUMERIC ( expression ) 2. PATINDEX ( ‘%pattern%‘ , expression ) 1. ISNUMERIC  ...

  6. js基础进阶--编码实用技巧(二)

    我的个人博客:http://www.xiaolongwu.cn 接上篇文章 js编码的实用技巧(一) 5.合理利用||运算符 使用||可以作为参数之外的默认值,当第一个参数返回值为false时,那么第 ...

  7. js基础进阶--编的实用技巧(一)

    我的个人博客:http://www.xiaolongwu.cn 在平时的开发中,编码技巧很重要,会让你少写很多代码,起到事倍功半的效果. 下面总结几种简单的技巧,大家共同学习一下 1. 利用+.-./ ...

  8. .NET Core实用技巧(一)如何将EF Core生成的SQL语句显示在控制台中

    目录 .NET Core实用技巧(一)如何将EF Core生成的SQL语句显示在控制台中 前言 笔者最近在开发和维护一个.NET Core项目,其中使用几个非常有意思的.NET Core相关的扩展,在 ...

  9. 【JavaScript实用技巧(二)】Js操作DOM(由问题引发的文章改版,新人大佬都可)

    [JavaScript实用技巧(二)]Js操作DOM(由问题引发的文章改版,新人大佬都可!) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人 ...

随机推荐

  1. 一起聊聊PHP的几个设计模式

    工厂模式 1.简单工厂模式 目的 简单工厂模式是一个精简版的工厂模式.   它与静态工厂模式最大的区别是它不是『静态』的.因为非静态,所以你可以拥有多个不同参数的工厂,你可以为其创建子类.甚至可以模拟 ...

  2. OFDM通信系统的MATLAB仿真(2)

    关于OFDM系统的MATLAB仿真实现的第二篇随笔,在第一篇中,我们讨论的是信号经过AWGN信道的情况,只用添加固定噪声功率的高斯白噪声就好了.但在实际无线信道中,信道干扰常常是加性噪声.多径衰落的结 ...

  3. python 中文乱码 list 乱码处理

    list 乱码 data_list = ["中文"] print str(data_list).decode("string_escape") mysql 获取 ...

  4. Jarvisoj-web phpinfo

    题目入口:http://web.jarvisoj.com:32784/ 一进来就看到源码 简单分析之后知道考点是反序列化,注意到了关键字session_start(),这个函数是用于创建会话.但具体如 ...

  5. python基础--迭代器、生成器

    (1)迭代器 可迭代对象和迭代器的解释如下: ''' 什么是对象?Python中一切皆对象,之前我们讲过的一个变量,一个列表,一个字符串,文件句柄,函数名等等都可称作一个对象,其实一个对象就是一个实例 ...

  6. Android:沉浸式状态栏(一)工具类

    参考自Android 沉浸式状态栏完美解决方案 基本功能 状态栏深色或浅色图标切换 自定义状态栏背景 设置沉浸式状态栏 先准备几个工具类 1.SystemBarTintManager package ...

  7. 做完这套面试题,你才敢说懂Excel

    下面的题目来自一份商品专员的面试题,其中有涉及到条件格式.自定义排序.数据验证制作下拉菜单.查找引用类函数.文本提取函数等等技能. 满满的干货技能可不是商品专员“专属”,如果你能熟练掌握,在平日工作中 ...

  8. 深度学习论文翻译解析(十一):OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks

    论文标题:OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks 标题翻译: ...

  9. LQB2013A02排它平方数

    这个题方向其实还算好找,就是枚举嘛 (这是一个填空题,所以六个for嵌套也无所谓,因为毕竟emmmm,不看时间) 这里是判断的代码: 需要把数字转化成字符串 void i2s(int x,string ...

  10. 恕我直言,我也是才知道ElasticSearch条件更新是这么玩的

    背景 ElasticSearch 的使用度越来越普及了,很多公司都在使用.有做日志搜索的,有做商品搜索的,有做订单搜索的. 大部分使用场景都是通过程序定期去导入数据到 ElasticSearch 中, ...