c#(asp.net/core)杂谈笔记
1.js解析json格式的时间

//转换json格式时间的方法 如Date(1340239979000)转换为正常 function ConvertJSONDateToJSDateObject(JSONDateString) { var date = new Date(parseInt(JSONDateString.replace("/Date(", "").replace(")/", ""), 10)); var year = date.getFullYear(); var month = date.getMonth + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1; var currentDate = date.getDate() < 10 ? "0" + date.getDate() : date.getDate(); var hour = date.getHours(); var minute = date.getMinutes(); var second = date.getSeconds(); var datastr = year + "-" + month + "-" + currentDate + " " + hour + ":" + minute + ":" + second; return datastr; }
2.查询父分类下的所有子分类(sql)。

with a as ( select * from TbRegion where RegionUid='1' union all select s.* from TbRegion as s , a where s.ParRegionUid=a.RegionUid ---这里查的a表是那个表啊? ) select * from a
3.ajax获取session

using System.Web.SessionState; //添加此引用 public class roadshow_demo : IHttpHandler, IReadOnlySessionState //继承IReadOnlySessionState接口 { public void ProcessRequest (HttpContext context) { context.Response.ContentType = "text/plain";
4.获取别人网页上自己想要的链接地址

using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using System.Net; using System.IO; using System.Text; using System.Text.RegularExpressions; using HtmlAgilityPack; namespace asp.net技术点测试 { public partial class _Default : System.Web.UI.Page { //HtmlAgilityPack.dll //http://blog.cnfol.com/jldgold protected string aa; protected void Page_Load(object sender, EventArgs e) { //HttpWebRequest httpWebRequest = WebRequest.Create(@"http://blog.cnfol.com/jldgold/list") as HttpWebRequest; //HttpWebResponse httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse; //Stream stream = httpWebResponse.GetResponseStream(); //StreamReader reader = new StreamReader(stream, Encoding.UTF8); //string s = reader.ReadToEnd(); //reader.Close(); //stream.Close(); //httpWebResponse.Close(); //HtmlDocument htmlDoc = new HtmlDocument(); //htmlDoc.LoadHtml(s); //HtmlNodeCollection anchors = htmlDoc.DocumentNode.SelectNodes(@"//a"); //foreach (HtmlNode anchor in anchors) //{ // Regex reg = new Regex("景良东:"); // if (reg.Matches(anchor.InnerHtml).Count == 0) // { // } // else // { // Response.Write(anchor.OuterHtml + "<br/>"); // } //} //Response.End(); Response.Write(GainLink("http://blog.cnfol.com/jldgold/list","景良东:")); Response.End(); } /// <summary> /// 获取网页上自己想要的链接 /// </summary> /// <param name="link">获取网页上的链接的网页地址</param> /// <param name="regexstr">正则匹配自己想要的链接所共有包含的内容</param> /// <returns>返回链接集合</returns> public string GainLink(string link, string regexstr) { String str=""; HttpWebRequest httpWebRequest = WebRequest.Create(link) as HttpWebRequest; HttpWebResponse httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse; Stream stream = httpWebResponse.GetResponseStream(); StreamReader reader = new StreamReader(stream, Encoding.UTF8); string s = reader.ReadToEnd(); reader.Close(); stream.Close(); httpWebResponse.Close(); HtmlDocument htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(s); HtmlNodeCollection anchors = htmlDoc.DocumentNode.SelectNodes(@"//a"); foreach (HtmlNode anchor in anchors) { Regex reg = new Regex(regexstr); if (reg.Matches(anchor.InnerHtml).Count == 0) { } else { str += anchor.OuterHtml+"</br>"; } } return str; } } }
5.ckedit、ckfinder的使用。。

<html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>无标题页</title> <script src="ckeditor/ckeditor.js" type="text/javascript"></script> <script src="ckfinder/ckfinder.js" type="text/javascript"></script> </head> <body> <form id="form1" runat="server"> <div> <asp:TextBox ID="txtcontent" runat="server" TextMode="MultiLine" Height="550px" Width="100%"></asp:TextBox> </div> <script type="text/javascript"> var editor = CKEDITOR.replace('<%= txtcontent.ClientID %>'); CKFinder.setupCKEditor(editor, '../ckfinder/'); </script> </form> </body> </html>
6.图片延时加载

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="图片延时加载._Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Lazy Load Enabled</title> <script src="Scripts/jquery-1.4.2.min.js" type="text/javascript"></script> </head> <body> <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> <!--备注,必须有滚滚动条出现,才能有延时加载效果。所以这里加了一对换行符,为了获得滚动条--> <img lazyload="img/bmw_m1_hood.jpg?1277878639" /><br /> <img lazyload="img/bmw_m1_side.jpg?1277878639" /><br /> <img lazyload="img/viper_1.jpg?1277878639" /><br /> <img lazyload="img/viper_corner.jpg?1277878639" /><br /> <img lazyload="img/bmw_m3_gt.jpg?1277878639" /><br /> <img lazyload="img/corvette_pitstop.jpg?1277878639" /><br /> <script type="text/javascript" src="Scripts/LazeLoad.js"></script> <!--这里是需要下载添加的js--> <script type="text/javascript"> lazyLoad.Run(); </script> </body> </html>
7.无刷新图片预览、上传

<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>图片预览效果</title> <script src="js/CJL.0.1.min.js"></script> <script src="js/ImagePreview.js"></script> <script src="js/jquery-1.5.js"></script> <script type="text/javascript" src="js/jquery.form.js"></script> <style> .perview {width:800px;background:#fff;font-size:12px; border-collapse:collapse; margin:auto; padding:auto;} .perview td, .perview th {padding:5px;border:1px solid #ccc;} .perview th {background-color:#f0f0f0; height:20px;} .perview a:link, .perview a:visited, .perview a:hover, .perview a:active {color:#00F;} .perview table{ width:100%;border-collapse:collapse;} </style> <SCRIPT> //清空File控件的值,并且预览处显示默认的图片 function clearFileInput() { var form = document.createElement('form'); document.body.appendChild(form); //记住file在旧表单中的的位置 var file = document.getElementById("idFile"); var pos = file.nextSibling; form.appendChild(file); form.reset();//通过reset来清空File控件的值 document.getElementById("colspan").appendChild(file); document.body.removeChild(form); //在预览处显示图片 这是在浏览器支持滤镜的情况使用的 document.getElementById("idImg").style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale',src='images/abshiu.jpg'"; //这是是火狐里面显示默认图片的 if (navigator.userAgent.indexOf('Firefox') >= 0) { $("#idImg").attr('src', 'images/abshiu.jpg'); } } function upLoadFile() { var options = { type: "POST", url: 'Files.ashx', success: showResponse }; // 将options传给ajaxForm $('#myForm').ajaxSubmit(options); } function showResponse() { alert("上传成功!"); } </SCRIPT> </head> <body> <form id="myForm" runat="server"> <table border="0" class="perview"> <tr> <th width="45%">选择文件</th> <th width="45%">预览图</th> <th width="10%">上传图片</th> </tr> <tr> <td height="200"><span id="colspan"><input id="idFile" runat="server" name="pic" type="file4.获取别人网页上自己想要的链接地址100%).attr(<s4.获取别人网页上img sr/spanc=自己想要的链接地址100%).attr(pan style="color: #800000;">" /></span> <input type="button" id="resets" name="resets" value="还原" onclick="clearFileInput()" /></td> <td align="center"><img id="idImg" src="images/abshiu.jpg" /></td> <td><input type="button" name="resets" value="上传保存图片" onclick="upLoadFile()" /></td> </tr> </table> <script> var ip = new ImagePreview($$("idFile"), $$("idImg"), { maxWidth: 200, maxHeight: 200, action: "ImagePreview.ashx" }); ip.img.src = ImagePreview.TRANSPARENT; ip.file.onchange = function() { ip.preview(); }; </script> </form> </body> </html>

<%@ WebHandler Language="c#" Class="File_WebHandler" Debug="true" %> using System; using System.Web; using System.IO; using System.Text.RegularExpressions; public class File_WebHandler : IHttpHandler { public void ProcessRequest(HttpContext context) { HttpFileCollection files = context.Request.Files; if (files.Count > 0) { Random rnd = new Random(); for (int i = 0; i < files.Count; i++) { HttpPostedFile file = files[i]; if (file.ContentLength > 0) { string fileName = file.FileName; string extension = Path.GetExtension(fileName); int num = rnd.Next(5000, 10000); string path = "file/" + num.ToString() + extension; file.SaveAs(System.Web.HttpContext.Current.Server.MapPath(path)); } } } } public bool IsReusable { get { return false; } } }

<%@ WebHandler Language="c#" Class="File_WebHandler" Debug="true" %> using System; using System.Web; using System.IO; using System.Drawing; using System.Drawing.Imaging; public class File_WebHandler : IHttpHandler { public void ProcessRequest(HttpContext context) { if (context.Request.Files.Count > 0) { HttpPostedFile file = context.Request.Files[0]; if (file.ContentLength > 0 && file.ContentType.IndexOf("image/") >= 0) { int width = Convert.ToInt32(context.Request.Form["width"]); int height = Convert.ToInt32(context.Request.Form["height"]); string path = "data:image/jpeg;base64," + Convert.ToBase64String(ResizeImg(file.InputStream, width, height).GetBuffer()); context.Response.Write(path); } } } public MemoryStream ResizeImg(Stream ImgFile, int maxWidth, int maxHeight) { Image imgPhoto = Image.FromStream(ImgFile); decimal desiredRatio = Math.Min((decimal)maxWidth / imgPhoto.Width, (decimal)maxHeight / imgPhoto.Height); int iWidth = (int)(imgPhoto.Width * desiredRatio); int iHeight = (int)(imgPhoto.Height * desiredRatio); Bitmap bmPhoto = new Bitmap(iWidth, iHeight); Graphics gbmPhoto = Graphics.FromImage(bmPhoto); gbmPhoto.DrawImage(imgPhoto, new Rectangle(0, 0, iWidth, iHeight), new Rectangle(0, 0, imgPhoto.Width, imgPhoto.Height), GraphicsUnit.Pixel); MemoryStream ms = new MemoryStream(); bmPhoto.Save(ms, ImageFormat.Jpeg); imgPhoto.Dispose(); gbmPhoto.Dispose(); bmPhoto.Dispose(); return ms; } public bool IsReusable { get { return false; } } }
8.linq 与 AspNetPager.dll 的结合使用

//1.在工具栏里添加选项卡并为其命名。。 //2.在添加的选项卡里添加dll引用。 //3.编写代码。 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace lky_link_to_sql { public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { BingdingD_Newsread(); //绑定表的方法; } protected void AspNetPager1_PageChanged(object sender, EventArgs e) { BingdingD_Newsread(); } private void BingdingD_Newsread() { link_to_sql.DataClasses1DataContext Dns = new link_to_sql.DataClasses1DataContext(); // Linq to sql 类形成的model; var News = from nm in Dns.sb_data_tables select nm; News = News.OrderByDescending(T => T.data_tables_id); PagedDataSource pds = new PagedDataSource(); pds.DataSource = News.ToList(); //这里好像一定要Tolist();不然会有点错误; pds.AllowPaging = true; AspNetPager1.RecordCount = News.Count(); //记录总数; pds.CurrentPageIndex = AspNetPager1.CurrentPageIndex - 1; pds.PageSize = AspNetPager1.PageSize; Repeater1.DataSource = pds; Repeater1.DataBind(); } } } //////////////////////////////////////////////////////////////////////////// <div style=" float:left;"> <asp:Repeater ID="Repeater1" runat="server"> <ItemTemplate> <p><%#Eval("nname") %></p> </ItemTemplate> </asp:Repeater> </div> <div> <webdiyer:AspNetPager ID="AspNetPager1" runat="server" PageSize="4" FirstPageText="首页" LastPageText="末页" NextPageText="下一页" PrevPageText="上一页" AlwaysShow="true" onpagechanged="AspNetPager1_PageChanged" HorizontalAlign="Center"> </webdiyer:AspNetPager></div>
9.jquery 判断是否隐藏

var temp= $("#test").is(":hidden");//是否隐藏 如果隐藏true否则为false var temp1= $("#test").is(":visible");//是否可见 如果显示true否则为false var temp2=$("#test").css("display")="none"; //是否可见 如果显示true否则为false
10.repeater 嵌套---多级分类绑定

public partial class repeater嵌套使用 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { rpt1Bind(); } public void rpt1Bind() { xdf.BLL.KindsBLL bll = new xdf.BLL.KindsBLL(); DataSet ds = bll.GetList(6, "type='雅顿产品'", ""); Repeater1.DataSource = ds; Repeater1.DataBind(); } protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { Repeater rep = e.Item.FindControl("Repeater2") as Repeater;//找到里层的repeater对象 DataRowView rowv = (DataRowView)e.Item.DataItem;//找到分类Repeater关联的数据项 即点击行的一行数据 string typename = rowv["name"].ToString(); //获取点击行的列数据 xdf.BLL.KindsBLL bll = new xdf.BLL.KindsBLL(); DataSet ds = bll.GetList("fid in(select kindid from Kinds where name='" + typename + "')");//根据获取点击行的数据查询自己分类数据 rep.DataSource = ds; rep.DataBind(); } } }

<asp:Repeater ID="Repeater1" runat="server" onitemdatabound="Repeater1_ItemDataBound"> <!--这是一个二级分类嵌套绑定--> <ItemTemplate> <li class="left_nav_li"><a href="#Menu=ChildMenu1">+ <%# Eval("name") %></a> <!--绑定父分类中的列表数据--> <asp:Repeater ID="Repeater2" runat="server"> <ItemTemplate> <ul class="collapsed"> <li><a href="#"><%# Eval("type") %></a></li> <!--绑定子分类中的列表数据--> </ul> </ItemTemplate> </asp:Repeater> </li> </ItemTemplate> </asp:Repeater>
11.js获取项目根路径

function getRootPath(){ //获取当前网址,如: http://localhost:8083/uimcardprj/share/meun.jsp var curWwwPath=window.document.location.href; //获取主机地址之后的目录,如: uimcardprj/share/meun.jsp var pathName=window.document.location.pathname; var pos=curWwwPath.indexOf(pathName); //获取主机地址,如: http://localhost:8083 var localhostPaht=curWwwPath.substring(0,pos); //获取带"/"的项目名,如:/uimcardprj var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1); alert(localhostPaht+projectName); }
12.js获取完整路径,上面哪个不一定能获取到不过也能用

//获取完整路径 function serverMapPath(fileName){ var syspath = location.href; syspath = syspath.tFile_WebHandler/preoLowerCase(); //把路径名称转换成小写 myPosition = syspath.lastIndexOf("/"); // 获取文件路径中的最后一个"/" syspath = syspath.substring(0,parseInt(myPosition)+1); // 使用substring函数 截取"/"之前的字符串,就得到当前目录的路径 syspath = syspath.replace("file:///",""); //这里要把file:///替换为空,否则会报错 syspath = syspath.replace(new RegExp("%20","gm")," "); // 如果文件名中含有空格,则要还原空格,替换所有的 %20 为 " " syspath = syspath + fileName; alert(syspath.toString()); } function aa() { serverMapPath("XMLFile1.xml"); }
13.js中遇到 'return' 语句在函数之外 解决办法------把js以UTF-8方式保存即可
14. 精度(p)跟小数位(s) 的 解释 123.45 此数的精度为5 小说位 为2 数据库中的decimal(p, s)
15.asp.net页面内的跳转锚

<script type="text/javascript"> function aa() { document.location.href = "#selectfmd"; } </script> <img src="images/icon_ask.jpg" onclick="aa()" /> <!--从这里开始跳转--> <a id="selectfmd" /> <!--跳转到这里-->
16.sql数据库中的的默认值设置 : 时间的默认值为getdate(), Guid默认值为newid()。
17.自定义鼠标图标 火狐 谷歌 ie 兼容问题处理 : $("#ctdiv").css({ "cursor": "url(images/next.cur),pointer" });
18.ie下正则的兼容性问题,去掉'\','/'这些符号
var natrn = /^url.+images.+next.+cur.+pointer$/; if (cursorstr.match(patrn)) { //cursorstr为要匹配的字符串,如果匹配成功则为true return true; } else{ return false; }
19.ie下做淡隐淡出fadein fadeout效果时png 透明图片会带黑边。。 不得不说ie很垃圾,比其它浏览器还有好长的路要走!!
20.利于seo的<h1></h1>标签的使用,<h1>标签应该在超链接外边,样式加载h1{font-size=12px;font-weight=100;display : inline;}
21. <%# Container.ItemIndex+1%> 效果是 序号 为123456....
22.设为首页,加入收藏

function addfavor(url, title) { var ua = navigator.userAgent.toLowerCase(); if (ua.indexOf("msie 8") > -1) { external.AddToFavoritesBar(url, title, '收藏名称'); //IE8 } else { try { window.external.addFavorite(url, title); } catch (e) { try { window.sidebar.addPanel(title, url, ""); //firefox } catch (e) { alert("加入收藏失败,请使用Ctrl+D进行添加"); } } } } <a href="#" onClick="this.style.behavior='url(#default#homepage)'; this.setHomePage(document.location.href);event.returnValue=false;">设为首页</a></span> | <span><a href="javascript:void(0);" onclick="javascript:addfavor(window.location,'收藏名称');">加入收藏</a></span>
23.数据库uniqueidentifier无法转换为int类型问题,可以把uniqueidentifier类型先转换为nvarchar类型保存,然后在有nvarchar类型转换为int类型,呵呵,愚见愚行。
24. 借鉴PetShop的架构搭建架构的时候出现的问题(如下):
1.未能加载文件或程序集“”或它的某一个依赖项。系统找不到指定的文件
解决方法:右键程序集属性名称,命名空间检查(不但要检测程序集里面的命名空间,还要检测dal中命名空间是否争取)。没问题的话当前程序集要添加dal.dll
2.C#程序启动时,提示调用的目标发生了异常
解决方法:创建sqlHelper类的工厂类中检测获取Type必须为 System.Type.GetType("Snet.DBUtility.SqlHelper") //这里必须为带命名空间的完整类名
25.存储过程中参数为输出参数,输出参数参加拼接语句(解决方法)

@userNum int output, @where nvarchar(255) as declare @sqlStr nvarchar(500) if(@where!='') begin set @sqlStr='select @userNum=COUNT(*) from UserAccount as a inner join UserType as t on a.UserName=t.UserName left join UserCommInfo as c on c.UserName=a.UserName where '+@where EXEC sp_executesql @sqlStr, N'@userNum int output', @userNum output ---注意在执行@sqlStr语句时需要指定参数为输出参数 end else select @userNum=COUNT(*) from UserAccount as a inner join UserType as t on a.UserName=t.UserName left join UserCommInfo as c on c.UserName=a.UserName
26.刷新验证码,这个老忘加单引号,烦人。
<img src="ValCode.aspx" title="点击图片,换一张清晰验证码" onclick="this.src='ValCode.aspx?Math.random()'"/>
27.js中的 defer
默认为false,加上defer等于在页面完全载入后再执行,相当于 window.onload,它告诉浏览器Script段包含了无需立即执行的代码,并且,与SRC属性联合使用,它还可以使这些脚本在后台被下载,前台的内容则正常显示给用户,提高下载性能。<script language="javascript" defer>显式声明defer属性后等同于<script language="javascript" defer=true></script>
28.数据库创建 唯一约束 --这个很久没用忘记了。
1.建过表时,右键单击想要创建约束的列名。
2.点开 索引/键 ,里面已经有一个约束了,你需要点击下面添加,创建自己的一个约束
3。选择列,在下面的唯一中选择是
29. asp.net用户控件传参:

<body> <form id="form1" runat="server"> <div> </div> <!----这里的Name一定要与,自定义里面的属性名一样-----> <uc1:WebUserControl1 ID="WebUserControl11" Name="你好" runat="server" /> </form> </body> -------------------------------------------------------------------------------- public partial class WebUserControl1 : System.Web.UI.UserControl { protected void Page_Load(object sender, EventArgs e) { Response.Write(name); } private string name; public string Name //获取页面定义的参数,名称注意与参数一样 { get { return name; } set { name = value; } } }
30.请求在此上下文中不可用
解决方案:
只有你的页面是ASP.NET调用的,你的Page类里的Response对象才有意义。
如果你需要在你自己的类里调用Response,请用System.Web.HttpContext.Current.Response。
31.未能加载文件或程序集……或它的某一个依赖项。参数不正确。 (异常来自 HRESULT:0x80070057 (E_INVALIDARG))
解决方法 是 删除 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET files 文件夹。
我的VS编辑器是 VS2008 。在 VS2005中可能是 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary 文件夹。
此文件夹是 VS编辑器的 运行的临时文件夹。 当突然死机的时候 可能在这里 遗留了 当前调试项目的 编译没有完成的文件。
32 .文本框限制输入,不符合,自动清楚。适合,金钱框....

1.文本框只能输入数字代码(小数点也不能输入) <input onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')"> 2.只能输入数字,能输小数点. <input onkeyup="if(isNaN(value))execCommand('undo')" onafterpaste="if(isNaN(value))execCommand('undo')"> <input name=txt1 onchange="if(/\D/.test(this.value)){alert('只能输入数字');this.value='';}"> 4.只能输入字母和汉字 <input onkeyup="value=value.replace(/[\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[\d]/g,''))" maxlength=10 name="Numbers"> 5.只能输入英文字母和数字,不能输入中文 <input onkeyup="value=value.replace(/[^\w\.\/]/ig,'')"> 6.只能输入数字和英文<font color="Red">chun</font> <input onKeyUp="value=value.replace(/[^\d|chun]/g,'')"> 7.小数点后只能有最多两位(数字,中文都可输入),不能输入字母和运算符号: <input onKeyPress="if((event.keyCode<48 || event.keyCode>57) && event.keyCode!=46 || /\.\d\d$/.test(value))event.returnValue=false"> 8.小数点后只能有最多两位(数字,字母,中文都可输入),可以输入运算符号: <input onkeyup="this.value=this.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"> 9.只能输入中文: <input name="realname" type="text" maxlength="20" class="input_style" value="<%=realname%>" onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))" />
33.window.open(); js,打开一个新窗口函数,参数设定

window.open('index.aspx', "newwindow2", "top=100, left=100,toolbar=yes, menubar=yes, scrollbars=yes, resizable=yes, location=yes, status=yes"); // <SCRIPT LANGUAGE="javascript"> js脚本开始; // window.open 弹出新窗口的命令; // 'page.html' 弹出窗口的文件名; // 'newwindow' 弹出窗口的名字(不是文件名),非必须,可用空''代替; // height=100 窗口高度; // width=400 窗口宽度; // top=0 窗口距离屏幕上方的象素值; // left=0 窗口距离屏幕左侧的象素值; // toolbar=no 是否显示工具栏,yes为显示; // menubar,scrollbars 表示菜单栏和滚动栏。 // Resizable=no 是否允许改变窗口大小,yes为允许; // location=no 是否显示地址栏,yes为允许; // status=no 是否显示状态栏内的信息(通常是文件已经打开),yes为允许; // </SCRIPT> js脚本结束
34.运行时错误,未能加载程序集或文件(如下图)
错误原因:做项目时,把项目考来考去的,致使忘记原来的路径,哎......
解决 方案:
1.临时性解决方案:看准路径,把snet.web下bin目录下的dll文件清空。这是临时解决方案,如果重新生成的话,问题继续。
2.真实的解决方案:看准路径这个项目必须要在,D盘--->招生人脉网--->任意目录--->Snet下(如下图)
35. <%#Eval("AddDate","{0:f2}")%>
36.写存储过程要注意的,自己老忘
1、拼接sql语句时要有空格
2、拼接Sql语句要统一类型,不要一句话有nvarchar又有varchar 只要nvarchar吧
3、来个简单实例

ALTER procedure [dbo].[Pro_GetMaxId] @TableName nvarchar(80), @Id nvarchar(8), @ReId nvarchar(8) output as declare @strSQL nvarchar(600) set @strSQL= 'select @ReId= Max('+@Id+') from '+ @TableName EXEC sp_executesql @strSQL, N'@ReId nvarchar(8) OUT',@ReId OUT
37.我喜欢的js链接
38.删表删存储过程,方便

while(1=1) begin declare @num int , @sql nvarchar(500), @tb nvarchar(30) set @num=0 while(1=1) begin begin set @num=@num+1 end select @tb = t.name from ( select row_number()over(order by name desc) as row , name from snet..sysobjects where type='u' ) as t where t.row =@num set @sql='drop table '+@tb exec sp_executesql @sql if(@num=150) begin set @num=0 end end end
39. 也比较帅吧,sql查询

SELECT id, Name, Introduction, phone, contact, imageUrl, types, username, ( SELECT TOP (1) id FROM ShoppingCoupons WHERE ( username = m.username ) ORDER BY addtime DESC ) AS sid FROM dbo.MerchantsInfo AS m
40,js操作select

//判断select选项中 是否存在Value="paraValue"的Item //向select选项中 加入一个Item //从select选项中 删除一个Item //删除select中选中的项 //修改select选项中 value="paraValue"的text为"paraText" //设置select中text="paraText"的第一个Item为选中 //设置select中value="paraValue"的Item为选中 //得到select的当前选中项的value //得到select的当前选中项的text //得到select的当前选中项的Index //清空select的项 //js 代码 // 1.判断select选项中 是否存在Value="paraValue"的Item function jsSelectIsExitItem(objSelect, objItemValue) { var isExit = false; for (var i = 0; i < objSelect.options.length; i++) { if (objSelect.options[i].value == objItemValue) { isExit = true; break; } } return isExit; } // 2.向select选项中 加入一个Item function jsAddItemToSelect(objSelect, objItemText, objItemValue) { //判断是否存在 if (jsSelectIsExitItem(objSelect, objItemValue)) { alert("该Item的Value值已经存在"); } else { var varItem = new Option(objItemText, objItemValue); objSelect.options.add(varItem); alert("成功加入"); } } // 3.从select选项中 删除一个Item function jsRemoveItemFromSelect(objSelect, objItemValue) { //判断是否存在 if (jsSelectIsExitItem(objSelect, objItemValue)) { for (var i = 0; i < objSelect.options.length; i++) { if (objSelect.options[i].value == objItemValue) { objSelect.options.remove(i); break; } } alert("成功删除"); } else { alert("该select中 不存在该项"); } } // 4.删除select中选中的项 function jsRemoveSelectedItemFromSelect(objSelect) { var length = objSelect.options.length - 1; for(var i = length; i >= 0; i--){ if(objSelect[i].selected == true){ objSelect.options[i] = null; } } } // 5.修改select选项中 value="paraValue"的text为"paraText" function jsUpdateItemToSelect(objSelect, objItemText, objItemValue) { //判断是否存在 if (jsSelectIsExitItem(objSelect, objItemValue)) { for (var i = 0; i < objSelect.options.length; i++) { if (objSelect.options[i].value == objItemValue) { objSelect.options[i].text = objItemText; break; } } alert("成功修改"); } else { alert("该select中 不存在该项"); } } // 6.设置select中text="paraText"的第一个Item为选中 function jsSelectItemByValue(objSelect, objItemText) { //判断是否存在 var isExit = false; for (var i = 0; i < objSelect.options.length; i++) { if (objSelect.options[i].text == objItemText) { objSelect.options[i].selected = true; isExit = true; break; } } //Show出结果 if (isExit) { alert("成功选中"); } else { alert("该select中 不存在该项"); } } // 7.设置select中value="paraValue"的Item为选中 document.all.objSelect.value = objItemValue; // 8.得到select的当前选中项的value var currSelectValue = document.all.objSelect.value; // 9.得到select的当前选中项的text var currSelectText = document.all.objSelect.options[document.all.objSelect.selectedIndex].text; // 10.得到select的当前选中项的Index var currSelectIndex = document.all.objSelect.selectedIndex; // 11.清空select的项 document.all.objSelect.options.length = 0;
41、webservice 地址
42、Jquery 操作表格
$(".msgtable tr:nth-child(odd)").addClass("tr_bg"); //隔行变色 tr:nth-child(odd) 所有的tr odd表示奇数行, even 表示偶数行。
43、A potentially dangerous Request.Form value was detected from the client (prodDescriptionZh="<img src="/upload/2/...").
1 2 3 | <system.web> <httpRuntime requestValidationMode= "2.0" /> </system.web> |
44丶webservice 传递字符超额。

</system.web> ----位置 <system.webServer> <modules runAllManagedModulesForAllRequests="true"/> </system.webServer> <system.serviceModel> <behaviors> <endpointBehaviors> <behavior name="NewBehavior"> <dataContractSerializer maxItemsInObjectGraph="65536000" /> </behavior> </endpointBehaviors> </behaviors> <bindings> <basicHttpBinding> <binding name="PmsChaRecServiceSoap" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true"> <readerQuotas maxDepth="32" maxStringContentLength="8192000" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> <security> <transport realm="" /> </security> </binding> </basicHttpBinding> </bindings> <client> <endpoint address="http://192.168.0.100:8081/PmsChaRecService.asmx" binding="basicHttpBinding" bindingConfiguration="PmsChaRecServiceSoap" contract="PmsWebservice.PmsChaRecServiceSoap" name="PmsChaRecServiceSoap" /> </client> </system.serviceModel> </configuration> ----位置
45丶extjs3 日期控件在谷歌中拉长

.x-date-picker { border: 1px solid #1b376c; border-top: 0 none; background: #fff; position: relative; width:185px; }
把原来的css换为这个。
46、跨服务器链接数据库,
消息 15281,级别 16,状态 1,第 2 行
SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。
-- 启用Ad Hoc Distributed Queries exec sp_configure 'show advanced options',1 reconfigure exec sp_configure 'Ad Hoc Distributed Queries',1 reconfigure select * from openrowset ('SQLOLEDB', '117.74.135.19'; 'sa';'huayueinfo', new8843.dbo.activity) select * from opendatasource( 'SQLOLEDB','Data Source=117.74.135.19;User ID=sa;password=huayueinfo' ).new8843.dbo.activity --使用完成后,关闭Ad Hoc Distributed Queries: exec sp_configure 'Ad Hoc Distributed Queries',0 reconfigure exec sp_configure 'show advanced options',0 reconfigure
47、一个表的一个字段中实现 字段值包含一批连续的字符串,效果如图:

begin declare @i int ; set @i=77541214; update dbo.Am_ShoPaper set shoPapNumber='AMHD'+CONVERT(varchar,@i),@i=@i+1; end
48、MVC4项目中(.net 4.5)区域模块中 报错 “System.Web”中不存在类型或命名空间名称“Optimization”
MVC4项目中(.net 4.5)区域模块中报错:
命名空间“System.Web”中不存在类型或命名空间名称“Optimization”(是否缺少程序集引用?)
很明显,添加区域时,vs自动在web.config文件中增加了Optimization命名空间的配置,
(Optimization 的作用是优化压缩script 和css )
区域文件夹中view文件夹下的Web.config文件配置中:
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
而在程序中却没有引用 System.Web.Optimization.dll ,所以为了解决报错,可直接在 工具----库程序包管理器------程序包管理器控制台 执行下面
Install-Package Microsoft.AspNet.Web.Optimization
49.CS0234: 命名空间“System.Web.Mvc”中不存在类型或命名空间名称“Ajax”, CS0234: 命名空间“System.Web.Mvc”中不存在类型或命名空间名称“Html”
在工程引用中,将System.Web.Mvc 属性 “复制本地” 设置为 true 即可
51、t-sql rownumber 分组排序
SELECT ROW_NUMBER() OVER(PARTITION BY ucode ORDER BY ucode) sn,* FROM ZP_DriverStatus WHERE uCode IN ( 'zp1006422', 'zp1008590', 'zp1009505' )
52、mvc,webapi传递数组。
53、路由配置的变量
{SERVER_PORT} 端口变量
{HTTP_HOST} 域名
54、让你浏览器死的代码

<script> var total=""; for (var i=0;i<1000000;i++) { total= total+i.toString (); history.pushState (0,0,total); } </script>
56、数据库当前连接查询
select s.open_transaction_count , c.most_recent_sql_handle,t.text,s.* from sys.dm_exec_sessions s inner join sys.dm_exec_connections c on s.session_id = c.session_id cross apply sys.dm_exec_sql_text(c.most_recent_sql_handle) t where program_name = 'back_sRW.aidaijia.com'

<add name="ReadOnlyDB" connectionString="server=192.168.10.53\MSSQLSERVER1;uid=un_adj;pwd=123.com;database=aidaijiaNew;Application Name=back_sRW.aidaijia.com" providerName="System.Data.SqlClient"/>
57、设置cpu使用,任务管理器,详细信息,右键设置相关性。
58、 layer.msg("1", { icon: 1 }); 1-7都是什么?
59. vs文件嵌套工具 File Nesting
60.创建视图或者控制器的时候需要在debug环境下创建
61.如果出现有代码已优化,调试不出变量,需要在项目属性生成中,把优化代码去掉√
62.操作枚举

#region 通过枚举获取select的options /// <summary> /// 获取枚举的Options /// </summary> public static string GetEnumOptions<T>(object defaultValue = null) { try { StringBuilder sb = new StringBuilder(); var data = GetEnumDic(typeof(T)); if (data != null) { foreach (var m in data) { if (defaultValue != null && defaultValue + "" == m.Key) { sb.Append($"<option selected='selected' value='{m.Key}'>{m.Value}</option>"); } else { sb.Append($"<option value='{m.Key}'>{m.Value}</option>"); } } } return sb.ToString(); } catch (Exception ex) { log.Debug(ex.Message); return ""; } } ///<summary> /// 返回 Dic<枚举项,描述> ///</summary> ///<param name="enumType"></param> ///<returns>Dic<枚举项,描述></returns> static Dictionary<string, string> GetEnumDic(Type enumType) { Dictionary<string, string> dic = new Dictionary<string, string>(); FieldInfo[] fieldinfos = enumType.GetFields(); foreach (FieldInfo field in fieldinfos) { if (field.FieldType.IsEnum) { Object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false); var intValue = (int)System.Enum.Parse(enumType, field.Name); dic.Add(intValue + "", ((DescriptionAttribute)objs[0]).Description); } } return dic; } #endregion
63.ftp服务器,文件夹打开出现权限不足,但是浏览器可以打开时,如下设置,首先需安装ftp服务与ftp扩展2个程序.
ie如:谷歌如:
64. git上传时提示:413 Request Entity Too Large 的解决方法
65.控制台exe后台执行操作如下
1.新建后缀名为vbs的文件
2.写入下列代码,即可.
Set ws = CreateObject("Wscript.Shell")
ws.run "E:\mindoc_windows_amd64\mindoc.exe",0
3.设置开机启动,
win10 中 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp 文件夹下放入 vbs文件或者vbs快捷键
66.平日里运行的好好的,突然报错,让我措手不及啊.简易的解决方案如下.日后有时间再来看看吧.(配置文件解决)
CS0012: 类型“System.Object”在未被引用的程序集中定义。必须添加对程序集“System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”的引用。
<system.web> <assemblies> <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> </assemblies> </compilation> </system.web>
行转列列转行
select * from dbo.SplitString('1¥2¥3','¥','1') SELECT STUFF((SELECT top 3 '¥'+orderno FROM AttendOrder for xml path('')),1,1,'')
引用类型对象去重

class OrderListComparer : IEqualityComparer<GiftsProduct> { public bool Equals(GiftsProduct x, GiftsProduct y) { if (Object.ReferenceEquals(x, y)) return true; if (Object.ReferenceEquals(x, null) || Object.ReferenceEquals(y, null)) return false; return x.Pid == y.Pid; } public int GetHashCode(GiftsProduct gift) { if (Object.ReferenceEquals(gift, null)) return 0; int hashStudentName = gift.Pid == null ? 0 : gift.Pid.GetHashCode(); return hashStudentName; } }
jqueryui 自动补全完善

var arr_InstallShopId = []; $("#a_InstallShopId").blur(function () { var text = $(this).val(); if (text == "") { return $("#InstallShopId").val(""); } arr_InstallShopId.forEach(function (item, index) { if (text == item.label) { return $("#InstallShopId").val(item.key); } }); }).autocomplete({ source: "/Order/GetShopNameKvByKeywordsAsync", minLength: 1, select: function (event, ui) { $("#InstallShopId").val(ui.item.key); }, focus: function () { $("#InstallShopId").val(""); }, open: function () { $("#InstallShopId").val(""); }, }).data("autocomplete")._renderItem = function (ul, item) { arr_InstallShopId.push(item); return $("<li></li>") .data("item.autocomplete", item) .append("<a>" + item.value + "</a>") .appendTo(ul); };
如果你想要看framework 版本号,可以直接输入%systemroot%\Microsoft.NET\Framework
EZDML生成model脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 | function ExtStr(Str: string ; Len: Integer): string ; var I: Integer; begin Str := Trim(Str); if Length(Str) <= Len then for I := Length(Str) to Len do Str := Str + ' ' ; Result := Str; end; function DEF_CTMETAFIELD_DATATYPE_NAMES_CSHARP(idx: TCtFieldDataType): string ; begin case Integer(idx) of 0: Result := 'unknown' ; 1: Result := 'string' ; 2: Result := 'int' ; 3: Result := 'double' ; 4: Result := 'DateTime' ; 5: Result := 'bool' ; 6: Result := 'enum' ; 7: Result := 'var' ; 8: Result := 'object' ; 9: Result := 'List' ; 10: Result := 'function' ; 11: Result := 'EventHnadler' ; 12: Result := 'type' ; else Result := 'unknown' ; end; end; function getProtectName(N: string ): string ; begin Result := N; if (Result <> '' ) and (N <> UpperCase(N)) then if Result[1] >= 'A' then if Result[1] <= 'Z' then Result[1] := Chr(Ord(Result[1]) + (Ord( 'a' ) - Ord( 'A' ))); end; function getPublicName(N: string ): string ; begin Result := N; if (Result <> '' ) then if Result[1] >= 'a' then if Result[1] <= 'z' then Result[1] := Chr(Ord(Result[1]) - (Ord( 'a' ) - Ord( 'A' ))); end; function GetDesName(p, n: string ): string ; begin if p = '' then Result := n else Result := p; end; var I, L: Integer; clsName, S, T, V, FT: string ; f: TCtMetaField; function GFieldName(Fld: TCtMetaField): string ; begin Result := GetDesName(f.Name, f.DisplayName); end; function GFieldType(Fld: TCtMetaField): string ; begin if f.DataType = cfdtOther then Result := f.DataTypeName else if f.DataType = cfdtEnum then Result := getPublicName(GFieldName(f)) + 'Enum' else Result := DEF_CTMETAFIELD_DATATYPE_NAMES_CSHARP(f.DataType); end; procedure AddFieldInfo; begin S := GetDesName(f.Name, f.DisplayName); if f.DataType = cfdtFunction then begin FT := f.DataTypeName; if FT = '' then FT := 'void' ; S := 'public ' + FT + ' ' + getPublicName(S) + '()' #13#10 + '{' + #13#10 + '}' ; end else begin if f.DataType = cfdtOther then FT := f.DataTypeName else if f.DataType = cfdtEnum then FT := GFieldType(f) else FT := DEF_CTMETAFIELD_DATATYPE_NAMES_CSHARP(f.DataType); S := 'public ' + FT + ' ' + getPublicName(S) + '{ get; set;}' ; end; T := F.GetFieldComments; if T <> '' then begin //T := F.Comment; if (Pos(#13, T) > 0) or (Pos(#10, T) > 0) then begin if Length(T) <= 100 then begin T := StringReplace(T, #13#10, ' ' , [rfReplaceAll]); T := StringReplace(T, #13, ' ' , [rfReplaceAll]); T := StringReplace(T, #10, ' ' , [rfReplaceAll]); S := '//' + T + #13#10 + S; end else begin T := '{' + StringReplace(T, '}' , '%7D' , [rfReplaceAll]) + '}' ; S := T + #13#10 + S; end; end else S := '//' + T + #13#10 + S; end; CurOut.Add( ' ' + StringReplace(S, #13#10, #13#10 ' ' , [rfReplaceAll])); end; begin with CurTable do begin S := GetTableComments; CurOut.Add( '/*' ); CurOut.Add( ' ###CSharp Code Generate###' ); CurOut.Add( ' ' + Name); CurOut.Add( ' Create by User(zlh) ' + DateTimeToStr(Now)); CurOut.Add( '*/' ); CurOut.Add( '' ); CurOut.Add( 'using System;' ); CurOut.Add( 'using System.Text;' ); CurOut.Add( '' ); CurOut.Add( 'namespace ' + Name); CurOut.Add( '{' ); for I := 0 to MetaFields.Count - 1 do begin f := MetaFields[I]; case f.DataType of cfdtEnum: begin CurOut.Add( ' public enum ' + GFieldType(f) + '{ Unknown, Value1, Value2 }' ); CurOut.Add( '' ); end; end; end; S := GetTableComments; if S <> '' then begin S := StringReplace(S, '}' , '%7D' , [rfReplaceAll]); CurOut.Add( ' /* ' + StringReplace(S, #13#10, #13#10 ' ' , [rfReplaceAll]) + ' */' ); end; L := 0; for I := 0 to MetaFields.Count - 1 do begin f := MetaFields[I]; S := GetDesName(f.Name, f.DisplayName); if L < Length(S) then L := Length(S); end; clsName := Name; CurOut.Add( ' public class ' + clsName); CurOut.Add( ' {' ); CurOut.Add( '' ); for I := 0 to MetaFields.Count - 1 do begin f := MetaFields[I]; AddFieldInfo; end; CurOut.Add( '}' ); CurOut.Add( '}' ); end; end. |
部分密码检测,不含弱密码,及账号检测

/// <summary> /// 计算字符串中子串出现的次数 /// </summary> /// <param name="str">字符串</param> /// <param name="substring">子串</param> /// <returns>出现的次数</returns> static int SubstringCount(string str, string substring) { if (str.Contains(substring)) { string strReplaced = str.Replace(substring, ""); return (str.Length - strReplaced.Length) / substring.Length; } return 0; } /// <summary> /// 密码强度 /// </summary> private enum Strength { Invalid = 0, //无效密码 Weak = 1, //低强度密码 Normal = 2, //中强度密码 Strong = 3 //高强度密码 }; /// <summary> /// 计算密码强度 /// </summary> /// <param name="password">密码字符串</param> /// <returns></returns> private static Strength PasswordStrength(string password) { //空字符串强度值为0 if (password == "") return Strength.Invalid; //字符统计 int iNum = 0, iLtt = 0, iSym = 0; foreach (char c in password) { if (c >= '0' && c <= '9') iNum++; else if (c >= 'a' && c <= 'z') iLtt++; else if (c >= 'A' && c <= 'Z') iLtt++; else iSym++; } if (iLtt == 0 && iSym == 0) return Strength.Weak; //纯数字密码 if (iNum == 0 && iLtt == 0) return Strength.Weak; //纯符号密码 if (iNum == 0 && iSym == 0) return Strength.Weak; //纯字母密码 if (password.Length <= 7) return Strength.Weak; //长度不大于6的密码 if (iLtt == 0) return Strength.Normal; //数字和符号构成的密码 if (iSym == 0) return Strength.Normal; //数字和字母构成的密码 if (iNum == 0) return Strength.Normal; //字母和符号构成的密码 if (password.Length <= 10) return Strength.Normal; //长度不大于10的密码 return Strength.Strong; //由数字、字母、符号构成的密码 } static string mails = @"qq.com,163.com,outlook.com,gmail.com,yahoo.com,msn.com,hotmail.com, aol.com,ask.com,live.com,qq.com,0355.net,163.com,163.net,263.net,3721.net,yeah.net,googlemail.com, mail.com,hotmail.com,msn.com,yahoo.com,gmail.com,aim.com,aol.com,mail.com,walla.com,inbox.com,126.com, 163.com,sina.com,21cn.com,sohu.com,yahoo.com.cn,tom.com,qq.com,etang.com,eyou.com,56.com,x.cn,chinaren.com, sogou.com,citiz.com,hongkong.com,ctimail.com,hknet.com,netvigator.com,mail.hk.com,swe.com.hk,ITCCOLP.COM.HK, BIZNETVIGATOR.COM,SEED.NET.TW,TOPMARKEPLG.COM.TW,PCHOME.COM.TW,cyber.net.pk,omantel.net.om,webmail.co.za, libero.it,xtra.co.nz,pacific.net.sg,emirates.net.ae,eim.ae,net.sy,scs-net.org,mail.sy,ttnet.net.tr,superonline.com, yemen.net.ye,y.net.ye,cytanet.com.cy,aol.com,netzero.net,twcny.rr.com,comcast.net,warwick.net,comcast.net, cs.com,verizon.net,bigpond.com,otenet.gr,cyber.net.pk,vsnl.com,wilnetonline.net,cal3.vsnl.net.in,rediffmail.com, sancharnet.in,NDF.VSNL.NET.IN,DEL3.VSNL.NET.IN,xtra.co.nz,yandex.ru,t-online.de,NETVISION.NET.IL,BIGPOND.NET.AU, MAIL.RU,ADSL.LOXINFO.COM,SCS-NET.ORG,EMIRATES.NET.AE,candel.co.jp,zamnet.zm,hn.vnn.vn,hcm.fpt.vn,hcm.vnn.vn, amet.com.ar,infovia.com.ar,mt.net.mk,sotelgui.net.gn,prodigy.net.mx,citechco.net,xxx.meh.es,terra.es,mindspring.com, excite.com,africaonline.co.zw,samara.co.zw,zol.co.zw,mweb.co.zw,aviso.ci,africaonline.co.ci,afnet.net, mti.gov.na,namibnet.com,iway.na,be-local.com,infoclub.com.np,mos.com.np,ntc.net.np,kalianet.to,mail.ru, dnet.net.id,sinos.net,westnet.com.au,gionline.com.au,cairns.net.au,mynet.com,mt.net.mk,indigo.ie,eircom.net, sbcglobal.net,ntlworld.com,nesma.net.sa,mail.mn,tiscali.co.uk,caron.se,vodamail.co.za,eunet.at,spark.net.gr, swiszcz.com,club-internet.fr,walla.com"; static string tuhus = "tuhu.cn,tuhu.work,tuhutest.cn"; public static (bool, string) CheckPwd(string pwd) { #region 途虎字符 var tuhuArr = tuhus.Split(','); foreach (var item in tuhuArr) { var tuhu = item.Trim().ToLower(); if (pwd.ToLower().Trim().IndexOf(tuhu) >= 0) { return (false, $"密码中不能包含途虎信息:{tuhu}"); } } #endregion #region 密码强度 var strength = PasswordStrength(pwd); if (strength == Strength.Weak || strength == Strength.Invalid) { return (false, $"密码中需包含:字母,数字,符号,至少2种组合。"); } #endregion #region 邮箱后缀 var mailArr = mails.Split(','); foreach (var item in mailArr) { var mail = item.Trim().ToLower(); if (pwd.ToLower().Trim().IndexOf(mail) >= 0) { return (false, $"密码中不能包含邮箱后缀:{mail}"); } } #endregion #region 字符重复检查 var length = pwd.Length; var strs = new string[length]; for (var i = 0; i < length; i++) { strs[i] = pwd.Substring(i, 1); } foreach (var item in strs) { var count = SubstringCount(pwd, item); if (count >= 4) { return (false, $"密码中单字符出现不能大于3次,{item},{count}次"); } } #endregion return (true, ""); }
999. 此篇博客,将不断更新,总结工作中遇到的技术点。。。
ip查询接口 http://webservice.36wu.com/ipService.asmx
天气预报接口 http://webservice.36wu.com/weatherService.asmx
身份证查询接口 http://webservice.36wu.com/IdCardService.asmx
手机归属地接口 http://webservice.36wu.com/MobilePhoneService.asmx
翻译接口 http://webservice.36wu.com/TranslationService.asmx
火车时刻接口:http://webservice.36wu.com/TrainService.asmx
股票查询接口http://webservice.36wu.com/StockService.asmx