目录
1、SQL Server使用“like”关键字模糊查询时,特殊字符需要转义
2、.net调用java的WebService时,输入参数无法传递值始终为null的问题
3、.net中MVC项目数据库迁移命令
4、WinForm中DataGridView不显示横向滚动条
5、CSS改变窗体大小div没有水平平铺导致出现白色背景问题
SQL Server执行sql时,如果使用“like”关键字进行模糊查询,则一些特殊字符需要转义,如:“[”、“_”、“%”、“'”
select * from Student where Number like '高新校区[2021]001号' --错误
select * from Student where Number like '高新校区[[]2021]001号' --正确
#region SQL参数处理
public static string ConvertLikeParam(string param)
{
param = param.Replace("[", "[[]");
param = param.Replace("_", "[_]");
param = param.Replace("%", "[%]");
param = param.Replace("'", "''");
return param;
}
#endregion
.net调用java的webservice时,如果传递的对象参数中包含非基本数据类型,如包含Long或Double,则服务端接收到的会是null,这是因为生成的webservice对象的字段会多一个xxxSpecified属性,需要设置成true,才会在序列化的时候包含进去;
解决方法:将字段类型改为基本数据类型,即long、string、int(小写)等,这样在生成webservice时就不会产生xxxSpecified属性;
java提供webservice时,如果接口文件和返回的自定义对象文件不在同一个命名空间,会导致.net调用该webservice时,返回的对象字段全部为null,原因是命名空间不一致导致.net无法序列化对象;
数据库迁移
enable-Migrations -force
update-database -force -Verbose
DataGridView设置有些列固定宽度,某一列占用剩余的宽度,使所有列充满整个空间而不显示横向滚动条:
(1)在窗体构造函数中先把自动生成列设置为false,如:dgvMember.AutoGenerateColumns = false;
(2)设置“确定可见列的自动调整大小模式(AutoSizeColumnsMode)”为“None”;
(3)编辑列,先设置需要固定宽度的列,所有固定大小列设置完后,设置自动大小列,将该列的AutoSizeMode属性设置为“Fill”,这时所有列会完全充满整个控件而不产生横向滚动条;
当改变窗体大小时,页面存在div没有水平平铺出现白色背景
解决方法:添加样式“min-width: 1200px;”宽度要超过想要显示区域的宽度;
本地笔记本电脑win7系统,参考地址(Windows Server2012 64位安装OpenSSH服务_liinux-Talk is cheap,show me the code.-CSDN博客)安装OpenSSH之后,无法创建SFTP连接,提示权限不足,也已经创建系统账号,用账号密码登录,死活不成功
最后又重新创建一个账号、密码才登录成功。
MIT许可协议的约束相对较小,可用于商业用途,但要列出LICENSE文件。
8、IIS假死
参考文章:
今上午遇到IIS假死,多种排查,已解决_-咖啡-的博客-CSDN博客_iis假死
问题仍未解决,通过日志查找IIS崩溃具体原因:
IIS崩溃时自动抓取Dump - 虎头 - 博客园
9、数据库设计规范
(1)数据类型尽量贴合字段属性,可以int不用char,可以bit不用int;
(2)表字段非特殊情况都设置为“不允许为null”,如字段确实无值可设置为一个缺省值,避免表查询时为null导致索引不起作用;
(3)如果业务是层层递进,前后关联,表设计时要在流程后面的表中包含流程前面表中的字段,避免数据量大时,关联查询非常耗时导致影响系统性能;
(4)如果表字段涉及金额,要使用decimal类型,避免使用double,double类型在运算时可能会导致精度缺失;
(5)表字段中对于可以根据两个字段的值得到另一个值的情况,也要给该值新增字段,可以通过SQL直接查询到结果,避免在SQL中进行运算操作,如:不含税金额、税率、含税金额之间的运算;
10、REST接口规范理解
11、Windows server 2012服务器重启及开始菜单打开方式:
1、鼠标光标放到窗体左下角,待开始菜单弹出后即可点击进入开始菜单;
2、鼠标光标放到窗体右下角,待显示搜索、开始、设置侧边栏后,点击设置,可重启服务器
12、.Net未获取到CAS认证时信息CasAuthentication.CurrentPrincipal时,跳转至登录页
if (CasAuthentication.CurrentPrincipal == null)
{
string casLoginUrl = DotNetCasClient.CasAuthentication.CasServerLoginUrl;
string redirectUrl = string.Format("{0}?service={1}", casLoginUrl, Common.UrlEscape(Request.Url.AbsoluteUri));
string tipInfo = string.Format("if(confirm('未获取到当前用户的认证信息,将跳转至认证页面。')) window.location.href='{0}';", redirectUrl);
Response.Write("");
// DotNetCasClient.CasAuthentication.RedirectToLoginPage(); // 没有提示,直接跳转
return;
}
(Common.UrlEscape方法为笔记13中的Url特殊字符转义的方法)
13、HTML转义字符 & Url中特殊字符转义处理(Url中特殊字符编码与解码)
参考:HTML转义字符&url编码表 - Junsec - 博客园
#region Url中特殊字符编码
///
/// Url中特殊字符编码
///
/// url字符串
/// 编码后的Url字符串
public static string UrlEscape(string url)
{
// 避免和转义后的%冲突,第一个转义%
url = url.Replace("%", "%25")
.Replace(" ", "%20").Replace("\"", "%22").Replace("#", "%23")
.Replace("&", "%26").Replace("(", "%28").Replace(")", "%29")
.Replace("+", "%2B").Replace(",", "%2C").Replace("/", "%2F")
.Replace(":", "%3A").Replace(";", "%3B").Replace("<", "%3C")
.Replace("=", "%3D").Replace(">", "%3E").Replace("?", "%3F")
.Replace("@", "%40").Replace("[", "%5B").Replace("\\", "%5C")
.Replace("]", "%5D").Replace("^", "%5E").Replace("_", "%5F")
.Replace("`", "%60").Replace("{", "%7B").Replace("|", "%7C")
.Replace("}", "%7D").Replace("~", "%7E");
return url;
}
#endregion
#region Url中特殊字符解码
///
/// Url中特殊字符解码
///
/// url字符串
/// 解码后的Url字符串
public static string UrlDecode(string url)
{
url = url.Replace("%20", " ").Replace("%22", "\"").Replace("%23", "#")
.Replace("%26", "&").Replace("%28", "(").Replace("%29", ")")
.Replace("%2B", "+").Replace("%2C", ",").Replace("%2F", "/")
.Replace("%3A", ":").Replace("%3B", ";").Replace("%3C", "<")
.Replace("%3D", "=").Replace("%3E", ">").Replace("%3F", "?")
.Replace("%40", "@").Replace("%5B", "[").Replace("%5C", "\\")
.Replace("%5D", "]").Replace("%5E", "^").Replace("%5F", "_")
.Replace("%60", "`").Replace("%7B", "{").Replace("%7C", "|")
.Replace("%7D", "}").Replace("%7E", "~")
.Replace("%25", "%"); // 避免和转义后的%冲突,最后一个转义%
return url;
}
#endregion
14、.Net里的Global文件中Application_AcquireRequestState方法的生命周期理解
请求页面时,该方法会调用多次,来获取页面中的静态资源(经测试,第一次的时候会调用多次,后面再请求页面,会少执行很多次,这是因为浏览器从缓存中取了静态资源)
在该方法中请求静态资源时,访问Session会报异常(“会话状态在此上下文中不可用。”)。
诸如aspx、ashx这类的动态资源Session就可以访问到。