| David's profileprowyh's spaceBlogLists | Help |
|
April 10 关于UTF-8的一点注记First of all, CLR via C#! I've got it! Thanks soooooooooooooooooo much!
如下两个文件,a.htm和a.js。
a.htm
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<script type="text/javascript" src="a.js"></script>
</head>
<body>
<div id="info"></div>
</body>
</html>
a.js
function showMessage()
{
var info = document.getElementById("info");
if (info)
{
info.innerHTML = "信息提示...";
}
}
则a.js必须明确存为UTF-8格式,showMessage()才能正确显示中文,如果a.js默认保存为ANSI格式,则showMessage()显示乱码。 April 05 GUIDUUID是分布式计算环境中用于标识对象的唯一标识符(Universally Unique IDentifier),后来Microsoft在COM中为了唯一标识Class, Interface, Object, etc.而引入了GUID(Globally Unique IDentifier)并提供了API来创建GUID:
1、SQL Server
SQL Server提供了NEWID()函数用于生成GUID。
可以用GUID来作为记录的唯一标识符:
CREATE TABLE myTable (
id uniqueidentifier NOT NULL,
...
)
ALTER TABLE myTable ADD DEFAULT (NEWID()) FOR id
2、Visual C++
COM中提供了CoCreateGuid()方法用于创建GUID:
STDMETHODIMP CGuidObject::GetGUID(BSTR* bstrGUID)
{ HRESULT hr = S_OK; GUID guid; hr = CoCreateGuid(&guid);
if (hr == S_OK) { OLECHAR szGUID[256]; StringFromGUID2(guid, szGUID, sizeof(szGUID)); *bstrGUID = SysAllocString(szGUID); } return hr; } 3、C#
.NET在System中提供了Guid结构,其NewGuid()方法可以用于创建GUID:
using System;
public class myGuid
{ public static void Main() { Guid myGuid = Guid.NewGuid(); Console.WriteLine("GUID:{0}", myGuid.ToString()); } } 注记:
1、如果Table中的id字段为uniqueidentifier类型,则通过下面的代码取到id的值:
SqlDataReader rdr = cmd.ExecuteReader();
if (rdr.Read())
{
string sGUID = ((System.Guid)rdr["id"]).ToString();
}
2、SQL Server中的NEWID()函数和C#中的System.Guid.NewGuid()方法有两点区别:
1) NEWID()返回的格式是大写形式,NewGuid()返回的格式是小写形式;
2) NEWID()带有大括号"{}",NewGuid()则没有。
具体而言,NEWID()的格式是"{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}",NewGuid()的格式是"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"。
SQL Server在将varchar格式的“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”字符串转换为uniqueidentifier类型时,自动转换为NEWID()的格式。
3、有人报告了一个“匪夷所思”的问题:在获取类型为uniqueidentifier的参数返回值(cmd.Parameters["@valueID"].Value)时,如果该值为Null(DbNull),则cmd.Parameters["@valueID"].Value的类型为System.Guid,如果该值不为Null,则其类型为SqlGuid!
我没试过,不知道是否真的如此。录在这里,仅做参考。 Puzzled by WebServices在BMP系统中,针对Web环境中用户认证的非安全性,设计了一种基于CHAP(Challenge Handshake Authentication Protocol)协议的用户认证模型,但在用WebServices实现身份验证时,发现在WebServices中,HttpContext.Current.Session为Null!而ASP.NET的其它对象如Application、Server、Request、Response却都可访问!
为什么没有Session对象呢?在折腾了一天之后,发现问题出在WebMethodAttribute。WebMethodAttribute的EnableSession属性在默认情况下为false,只要将EnableSession设置为true,就可以访问Session对象了。
[WebMethod Description="This is a service method which used to return the value of a session variable.", EnableSession=true]
public string GetSessionValue()
{
string sValue = (string)HttpContext.Current.Session["aVariable"];
return sValue;
}
MSDN上说,如果不需要用到Session,则应将EnableSession设置为false,这样可以提高性能。所以其初始值为false。如果需要用到Session,则需要将其设置为true,否则Session对象在WebServices中不可访问。 |
|
|