2010年12月16日 星期四

ASP.NET Web Form vs MVC

ASP.NET MVC
RAD方式以拖曳開發
使用Server Control產生HTML使用code或HTML來產生HTML
支援事件驅動
有ViewState
有POSTBACK
不易寫測試程式測試容易測試

2010年12月8日 星期三

非同步WCF服務

為效能考量WCF服務端也可以寫成非同步模型,例如

Step 1.


Step 2.服務需提供兩個方法,BeginXXX 與EndXXX

Step 3.加Console Client
Step 4.Client ,Add Service Reference
Step 5.檢視Client的Proxy,只會有GetData方法
Step 6.Client的Main
Step 7.設同時執行兩專案
Step 8.Run

2010年11月21日 星期日

煩人的SQL Server Express User Instance權限問題

IIS7+ SQL Server 2008 Express + User Instance + ASP.NET Membership 服務
1.今在IIS 7 新增一個Application Pools,叫mypool


2.在IIS7 Default Web Site下建立一個ASP.NET 4 Web Site,設定其Application Pool為 mypool
3.網站中包含一個login.aspx網頁,其中有一個Login Control

4.網站連接字串,與machine.config檔案SQL Express的連接字串都一樣,貼一個代表,都是啟用Integrated Security與User Instance
5.但是就是無法Login....權限會不夠...

6. 試了很久,發現,居然錯在NTFS授權....使用Web Site範本建立的mdf與dbf檔案沒有試當授權...於是手動授權給Network Service帳號...

7.log檔案也要....
這樣就正常了...

結論,若Application Pool改用其它帳號的話就要授權給那個帳號,如使用Local System執行時,要手動作6,7
但不能用權限太小的帳號,例如設Local Service帳號是沒用的

2010年9月9日 星期四

.NET 4 - BigInteger

BigInteger就是很大很大的整數.....

  • 使用前專案要加入參考

  • 加入命名空間
using System.Numerics;

  • 範例
//設為1
BigInteger i = BigInteger.One;
Console.WriteLine( i.ToString());



//值是否為1, True
Console.WriteLine( i.IsOne);

//是否為偶數 False
Console.WriteLine( i.IsEven);



//一旦設定值,BigInteger是不可變的,
//以下變動值的動作將產生新的BigInteger物件
i++;



string s = "1111111111111111111111111111111111111111111111111111111111";
//string轉換成BigInteger
i = BigInteger.Parse( s );

//N0格式化字串,精確度只能50個,超過50用0取代,印出:
//N0:1,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,100,000,000
Console.WriteLine( "N0:{0:N0}" , i );


//C格式化字串,有小數點,精確度只能50個,超過50用0取代,印出:
//C:NT$1,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,100,000,000.00
Console.WriteLine( "C:{0:C}" , i );

//R格式化字串,精確度完全保留,印出:
//R:1111111111111111111111111111111111111111111111111111111111
Console.WriteLine( "R:{0:R}" , i );

2010年9月6日 星期一

.NET 除錯用的 Attribute

  • DebuggerDisplay Attribute:用來控制一個型別(Type)或型別的成員(Member)在除錯階段中要顯示的資訊。
  • DebuggerBrowsable Attribute則用來控管一個Field成員或屬性是否要在除錯視窗中顯示資訊。

2010年9月3日 星期五

Code Contract

Code Contract是.NET Framework 4的新功能,讓程式設計師能夠很容易地定義類別的規則。例如可以為類別的屬性或成員變數定義一些設定規則,以便在編譯階段或執行階段進行檢查。
在Visual Studio 2010要使用時,需要先到這邊下載並安裝 ,安裝完後
1.在VS 專案加入System.Contracts組件參考

2.然後在專案屬性頁啟用,以下啟用Runtime檢查功能:

 
3. 程式執行時,會進行檢查:


如果有啟用Static Checking,則編譯時,檢查出的錯誤會出現在Error List:

2010年9月1日 星期三

.NET 4 CAS Security

.NET Framework 4 Security做了很大修改
  •  CAS部分,Security Policy沒用了..
  • 因為,Security Policy沒用了,工具也沒用了,你不能使用Mscorcfg.msc (.NET Framework Configuration Tool)設CAS Security Policy
  • 不支援Security Action,如Deny,RequestMinimun, RequestOptional,RequestRefuse
  • 如果在.NET Framework 4要回頭使用前版的CAS Security Policy機制,要修改組態將NetFx40_LegacySecurityPolicy 啟用,參考MSDN
  • ...待續

2010年8月25日 星期三

ASP.NET 4 + IIS 7 Impersonate 設定

在IIS 7 中若ASP.NET 4網站執行時啟用Impersonate :

會發生錯誤:
因為不能在Integrated pipeline mode設impersonate了,要改用Classic mode

ASP.NET 4 ValidateRequest

ASP.NET 4 中預設會擋掉使用者輸入的JavaScript,,如輸入以下JS:

若要執行輸入的JavaScript,需要:
1.要設HttpRuntime
2.Page要設ValidateRequest

2010年8月4日 星期三

WCF Data Service與Silverlight 4 資料繫結

延續前一篇WCF Data Service與WPF資料繫結 加入Silverlight 4 當Client
1.加入Silverlight 4 App到solution
2.
3.
4.
5.
6.
7.
8.
9.
10.Run

WCF Data Service與WPF資料繫結

使用WCF Data Service,Entity Framework與WPF資料繫結
1.建立一個ASP.NET應用程式
2.新增一個EDM
3.選Northwind, Suppliers & Products
4.加入 WCF Data Service
5.Code

6.加入WPF App
7.Add Service Reference
8.Add Reference
9.XAML
10.Code
11.Run

2010年7月27日 星期二

.NET 4 GAC組件位置

.NET 2和.NET 3.5的CLR都是2.0版,因此對於GAC的組件對CLR來講是沒有差別的..
但.NET 4 組件位置有些小小的變動,
在.Net Framework 4, Assembly Cache Viewer (Shfusion.dll) 工具程式已過時...
意思就是你從檔案總管中檢視C:\Windows\assembly目錄看不到.Net Framework 4的組件

在.NET 4 GAC搬到這邊了: C:\Windows\Microsoft.NET\assembly

2010年7月22日 星期四

EF4 - Entity Splitting

Entity Splitting可以讓一個Entity對應到多個資料表,Step:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.

總網頁瀏覽量