SpaceBuilder.Framework.dll
SpaceBuilder.Framework.dll
IIS5、IIS6、IIS7的ASP.net 请求处理过程比较
ASP.NET是一个非常强大的构建Web应用的平台,它提供了极大的灵活性和能力以致于可以用它来构建所有类型的Web应用。
绝大多数的人只熟悉高层的框架如: WebForms 和 WebServices --这些都在ASP.NET层次结构在最高层。
这篇文章的资料收集整理自各种微软公开的文档,通过比较 IIS5、IIS6、IIS7 这三代 IIS 对请求的处理过程, 让我们熟悉 ASP.NET的底层机制 并对请求(request)是怎么从Web服务器传送到ASP.NET运行时有所了解。通过对底层机制的了解,可以让我们对 ASP.net 有更深的理解。
...
SQLServer2005分解并导入xml文件[转]
测试环境SQL2005,windows2003
DECLARE @idoc int;
DECLARE @doc xml;
SELECT @doc=bulkcolumn FROM OPENROWSET(
BULK 'D: \test.xml',
SINGLE_BLOB) AS x
EXEC sp_xml_preparedocument @Idoc OUTPUT, @doc
SELECT * into #temp FROM OPENXML (@Idoc, '/Root/Item',2)
WITH (
[ID] varchar(10)
,[Name]varchar(10)
,[Caption]varchar(10)
)
select * from #temp
drop table #temp
/*--文件D: est.xml的文本内容
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<Item>
<ID>1</ID>
<Name>jinjazz</Name>
<Caption>剪刀</Caption>
</Item>
<Item>
<ID>2</ID>
<Name>zswang</Name>
<Caption>伴水</Caption>
</Item>
</Root>
*/
/*---查询结果
ID Name Caption
---------- ---------- ----------
1 jinjazz 剪刀
2 zswang 伴水
*/

C# 截取路径中的文件名
string fullPath="f:studyimages(002.jpg ";
int index=fullPath.LastIndexOf("");
string fileName=fullPath.SubString(index+1);//文件名
string fileExtensition=System.IO.Path.GetExtension(fullPath);//扩展名

string strFile = @"c:abce.jpg";
string strEx = System.IO.Path.GetExtension(strFile); // 返回 .jpg
string strName = System.IO.Path.GetFileName(strFile); //返回 e.jpg
string imgname = FileUpload1.PostedFile.FileName;
string imgType = imgname.Substring(imgname.LastIndexOf(".") + 1);
string quanname =DateTime.Now.ToString("yyyyMMddHHmmss")+imgname.LastIndexOf("\")+"."+imgType ;
if ("gif" != imgType && "jpg" != imgType && "GIF" != imgType && "JPG" != imgType)
{
Response.Write("<script>alert('请选择gif,jpg格式的文件!');</script>");
return;
}
string test="C:\Documents and Settings\Lenovo User\桌面\code.txt";
int i;
String FileName;
i=test.LastIndexOf("\");
FileName=test.Substring(i + 1);
让你的VS2005支持离线调试.Net Framework2.0
伴随着VS2008的发布,迫于开源的压力和帮助推广VS2008这两方面的原因,微软允许VS2008在debugging时,可以查看并调试Net Framework的一些源代码,前提是您的电脑必须是联网状态,而是只支持VS2008,却不支持已被广泛使用的VS2005,这两天看了一些牛人(国外的)的文章,发现国外的人就是牛,有两个家伙就开发了一个小工具(http://www.codeplex.com/NetMassDownloader),可以把.NET Framework的源码给下载下来。同时支持在VS2005上进行离线调试。早有朋友已经写过类似的文章,我就不多说了,我今天在这里主要把安装的步骤给写下来,希望对需要的朋友有所帮助。
第一步:下载.NET Mass Downloader.
第二步:下载.NET Framework3.5的安装文件,这是完整的可再发行组件包。有190多MB,下载完成后,安装它。
第三步:找到文件下载的目录。例如,我把文件放在的C盘的跟目录,文件的解压后的目录为C:\NetMassDownloader,然后我们运行cmd.exe,指向我刚才解压的目录:
第四步:对NetMassDownloader的参数进行设置,我是这样设置的。
这条命令我解释一下:
(1)-d C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727是我们安装.net2.0时,.net类库存放的文件夹。
(2)-output E:\NETFramework2.0是我们存放下载的.Net Framework的源代码的文件夹。这个目录你可以自定义,不一定非要和我写的一样。
(3)-vsver 8.0 表示我们要下载的源代码的版本是.net2.0
netmassdownloader.exe还有其他一些参数可以设置,大家输入netmassdownloader.exe /?就可以查看。在此就不罗嗦了。
参数配置好后,我们允许它,我们不要关闭它,.net framework的源代码大概有120多MB,我们耐心等待就行了,在运行的时候,可能会出现一些文件找不到的信息,我们不要管它。
第五步:源代码下载完成后,我们开始配置VS2005。
.net下的MD5加密应用
C#用法
/// <param name="sDataIn">需要加密的字符串</param>
/// <param name="move">偏移量</param>
/// <returns>sDataIn加密后的字符串</returns>
public string GetMD5(string sDataIn, string move)
{
System.Security.Cryptography.MD5CryptoServiceProvider md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] bytValue, bytHash;
bytValue = System.Text.Encoding.UTF8.GetBytes(move + sDataIn);
bytHash = md5.ComputeHash(bytValue);
md5.Clear();
string sTemp = "";
for (int i = 0; i < bytHash.Length; i++)
{
sTemp += bytHash[i].ToString("x").PadLeft(2, '0');
}
return sTemp;
}
textBox1.Text = this.GetMD5("123456","");
结果: e10adc3949ba59abbe56e057f20f883e
另类应用
C#用法
/// <param name="sDataIn">需要加密的字符串</param>
/// <param name="move">偏移量</param>
/// <returns>sDataIn加密后的字符串</returns>
public string GetMD5(string sDataIn, string move)
{
System.Security.Cryptography.MD5CryptoServiceProvider md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] bytValue, bytHash;
bytValue = System.Text.Encoding.UTF8.GetBytes(move + sDataIn);
bytHash = md5.ComputeHash(bytValue);
md5.Clear();
string sTemp = "";
for (int i = 0; i < bytHash.Length; i++)
{
sTemp += bytHash[i].ToString("x").PadLeft(2, '0');
}
return sTemp;
}
textBox1.Text = this.GetMD5("123456","");
结果: e10adc3949ba59abbe56e057f20f883e
...
Microsoft.NET Framework 全面开源
期待已久的.NET Framework终于在本周开源了,微软在MS-RL协议下终于公开了.NET Framework源代码,我们只可以自由查看,不允许直接进行修改。
第一批开放的源代码包括:
.NET基本类库:
System,System.CodeDom,System.Collections,System.ComponentModel, System.Diagnostics, System.Drawing, System.Globalization, System.IO, System.Net, System.Reflection, System.Runtime, System.Security, System.Text, System.Threading
ASP.NET:
System.Web, System.Web.Extensions
Windows Forms:
System.Windows.Forms
Windows Presentation Foundation:
System.Windows
ADO.NET和 XML:
System.Data
System.Xml
详情请访问ScottGu的文章:http://weblogs.asp.net/scottgu/archive/2008/01/16/net-framework-library-source-code-now-available.aspx
如何在Visual Studio 2008中进行配置请参考这篇文章:Configuring Visual Studio to Debug .NET Framework Source Code
为GridView每个单元格鼠标移上去显示div
我这里读的是xml,大家可以参照自己的读取方式将数据转换成表格.
gridview 的RowBound事件里面的内容
//鼠标经过时候显示div
function showdivByCs(table) {
// table=table.replace("&","&");
// table=table.replace(">",">");
// table=table.replace("<","<");
// table=table.replace(""",""");
// table=table.replace("'","'");
var x = window.event.x;
var y = window.event.y;
var show = document.getElementById("ShowInfo");
show.style.visibility = "visible";
show.style.top = y;
show.style.left = x;
show.style.background="#ffff00";
//读取xml
document.getElementById("sp").innerHTML=table;
//div跟随鼠标
document.onmousemove = moveToMouseLoc;
}
//鼠标移动时候div跟随
function moveToMouseLoc(e)
{
x = window.event.x;
y = window.event.y;
var show = document.getElementById("ShowInfo");
show.style.left = x;
show.style.top = y;
return true;
}javascript 里的内容
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
// DataSet ds = new DataSet();
for (int i = 0; i < e.Row.Cells.Count; i++)
{
string table = "<table cellspacing='0' rules='all' bordercolorlight='#b4b1b1' bordercolordark='#ffffff' border='1'><tr class='title'><td>数据来源</td><td>" + GridView1.Columns[i].HeaderText.ToString() + "</td></tr>";
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(LbHiddenGrid.Text);
//xmlDoc.SelectSingleNode("/Datas/notes[@id='" + i + "']/Source[@Desc='成考']/Data/Year");
//xmlDoc.SelectSingleNode("/Datas/notes[@id='" + i + "']/Source[@Desc='成考']/Data/Year").FirstChild.Value
foreach (XmlNode childnode in xmlDoc.SelectSingleNode("/Datas/notes[@id='" + e.Row.RowIndex.ToString() + "']"))
{
//XmlNode childnode = xmlDoc.SelectSingleNode("/Datas/notes[@id='" + e.Row.RowIndex.ToString() + "']");
//for (int j = 0; j < xmlDoc.SelectSingleNode("/Datas/notes[@id='" + e.Row.RowIndex.ToString() + "']").ChildNodes.Count; j++)
//{
table += "<tr><td>";
string name = childnode.Attributes.GetNamedItem("Desc").InnerText;
table += name + "</td><td>";
string value = childnode.SelectSingleNode("Data/" + ((BoundField)(GridView1.Columns[i])).DataField).InnerText;
table += value + "</td></tr>";
//childnode.SelectSingleNode("/Data/" );
//ds.ReadXml(XmlReader.Create(new System.IO.StringReader(childnode.FirstChild.OuterXml)));
//}
}
table += "</table>";
//string ss = Server.HtmlEncode(table);
e.Row.Cells[i].Attributes.Add("onmouseover", "showdivByCs("" + table + "")");
e.Row.Cells[i].Attributes.Add("onmouseout", "Remove()");
}
}
}
遍历Page的Controls集合[转]
{
Response.Write("<li>"+ctl.ToString());
}
上述代码并不显示包含在页面内的所有控件列表,它只显示Page类的直接子控件,而不再显示这些子控件的任何子控件。如果要显示页面内的所有控件,就可以递归地遍历每个控件的Controls集合,如:
#region 清空指定页面上所有的控件内容,public static void ClearAllContent()
/// <summary>
/// 清空指定页面上所有的控件内容,包括TextBox,CheckBox,CheckBoxList,RadioButton,RadioButtonList。但是不清
/// 除如ListBox,DropDownList,因为这样的控件值对当前页面来说还可以用,一般这些控件里都是保存的字典数据。
/// </summary>
/// <param name="page"> 指定的页面</param>
public static void ClearAllContent(System.Web.UI.Control page)
{
int nPageControls = page.Controls.Count;
for (int i = 0; i < nPageControls; i++)
{
foreach (System.Web.UI.Control control in page.Controls[i].Controls)
{
if (control.HasControls())
{
ClearAllText(control);
}
else
{
if (control is TextBox)
(control as TextBox).Text = "";
if (control is CheckBox)
(control as CheckBox).Checked = false;
if (control is RadioButtonList)
(control as RadioButtonList).SelectedIndex = -1;
if (control is RadioButton)
(control as RadioButton).Checked = false;
if (control is CheckBoxList)
{
foreach (ListItem item in (control as CheckBoxList).Items)
{
item.Selected = false;
}
}
}//if..else
}//foreach
}//for
}
#endregion
[C#]获取某年指定周的开始日期和结束日期的通用方法
/**//// <summary>
/// 获取一年中指定的一周的开始日期和结束日期。开始日期遵循ISO 8601即星期一。
/// </summary>
/// <remarks>Write by vrhero</remarks>
/// <param name="year">年(1 到 9999)</param>
/// <param name="weeks">周(1 到 53)</param>
/// <param name="weekrule">确定首周的规则</param>
/// <param name="first">当此方法返回时,则包含参数 year 和 weeks 指定的周的开始日期的 System.DateTime 值;如果失败,则为 System.DateTime.MinValue。如果参数 year 或 weeks 超出有效范围,则操作失败。该参数未经初始化即被传递。</param>
/// <param name="last">当此方法返回时,则包含参数 year 和 weeks 指定的周的结束日期的 System.DateTime 值;如果失败,则为 System.DateTime.MinValue。如果参数 year 或 weeks 超出有效范围,则操作失败。该参数未经初始化即被传递。</param>
/// <returns>成功返回 true,否则为 false。</returns>
public static bool GetDaysOfWeeks(int year, int weeks, CalendarWeekRule weekrule, out DateTime first, out DateTime last)
{
//初始化 out 参数
first = DateTime.MinValue;
last = DateTime.MinValue;
//不用解释了吧
if (year < 1 | year > 9999)
return false;
//一年最多53周地球人都知道
if (weeks < 1 | weeks > 53)
return false;
//取当年首日为基准为什么?容易得呗
DateTime firstCurr = new DateTime(year, 1, 1);
//取下一年首日用于计算
DateTime firstNext = new DateTime(year + 1, 1, 1);
//将当年首日星期几转换为数字星期日特别处理ISO 8601 标准
int dayOfWeekFirst = (int)firstCurr.DayOfWeek;
if (dayOfWeekFirst == 0) dayOfWeekFirst = 7;
//得到未经验证的周首日
first = firstCurr.AddDays((weeks - 1) * 7 - dayOfWeekFirst + 1);
//周首日是上一年日期的情况
if (first.Year < year)
{
switch (weekrule)
{
case CalendarWeekRule.FirstDay:
//不用解释了吧
first = firstCurr;
break;
case CalendarWeekRule.FirstFullWeek:
//顺延一周
first = first.AddDays(7);
break;
case CalendarWeekRule.FirstFourDayWeek:
//周首日距年首日不足4天则顺延一周
if (firstCurr.Subtract(first).Days > 3)
{
first = first.AddDays(7);
}
break;
default:
break;
}
}
//得到未经验证的周末日
last = first.AddDays(7).AddSeconds(-1);
//周末日是下一年日期的情况
if (last.Year > year)
{
switch (weekrule)
{
case CalendarWeekRule.FirstDay:
last = firstNext.AddSeconds(-1);
break;
case CalendarWeekRule.FirstFullWeek:
//不用处理
break;
case CalendarWeekRule.FirstFourDayWeek:
//周末日距下一年首日不足4天则提前一周
if (firstNext.Subtract(first).Days < 4)
{
first = first.AddDays(-7);
last = last.AddDays(-7);
}
break;
default:
break;
}
}
return true;
}

