- 6月 20 週日 201019:18
$create()
- 6月 08 週二 201001:28
WCF - 以 IP 取代 HostName

網友問了個問題:WCF 建立時,服務參考的網址是顯示主機名稱,但他想用 IP 取代主機名稱,這該怎麼做呢?其實還挺簡單的,在 IIS 設定一下就行了,下面用對照的方式來看:
設定前:
- 5月 02 週日 201001:43
透過修改機碼解決IE8的SessionID共用問題

之前發過一篇 SessionID重複 的問題。事隔多日,總算讓我找到好方法,可以透過修改機碼的方式來改變 IE 共用 SessionID 的行為。 只要在 HKCU\Software\Microsoft\Internet Explorer\Main 底下新增一個名為 TabProcGrowth 的 DWORD 值,並將其值設為 0 即可。
- 4月 18 週日 201016:59
偵錯模式下 Web Service 無回應

最近在使用 Web Service 時發現了一個有趣的現象,只要按 F5 進偵錯模式時呼叫 Web Service,就常常會發生逾時的情況,但是不進偵錯模式的話又可以正常呼叫。
雖然程式搬到 Server 上可以正常執行,但在開發時不能進偵錯模式實在很令人頭痛。為了解決這個問題,我把 Web Service 的 Request 交由 Fiddler 去發送,籍由這個工具來看 Request 的內容。程式碼大致上如下:
WebReference.Service1 service = new WebReference.Service1();service.Proxy = new System.Net.WebProxy("127.0.0.1", 8888);
- 4月 11 週日 201023:09
MVC - 取得RouteName
今天寫 ASP.NET MVC 時,想抓目前的 RouteName 出來看,但 RouteCollection 好像在跟我唱反調一般,就是不讓我看到目前的 RouteName。 心一橫,乾脆進 Source Code 去找看看,果然找到可以直接抓出來的辦法。原來 RouteCollection 是用一個 Dictionary 在儲存這些 RouteTable 的資訊。知道這點之後,要抓出來就不是什麼難事了。
public static string getRouteName() {
RouteData currentRoute = RouteTable.Routes.GetRouteData(
new HttpContextWrapper(System.Web.HttpContext.Current));if (currentRoute == null) return null;
FieldInfo field = typeof(RouteCollection).GetField( "_namedMap", BindingFlags.Instance | BindingFlags.NonPublic);
Dictionary<string, RouteBase> namedMap =field.GetValue(RouteTable.Routes)
as Dictionary<string, RouteBase>;
return namedMap.First( route => { return route.Value == currentRoute.Route; }).Key;
}
- 3月 06 週六 201022:01
無法修改 Controls 集合,因為控制項包含程式碼區塊

這個錯誤的長相是這樣的
因為字太長,所以標題就刪掉了一些。
- 1月 27 週三 201022:38
Microsoft.Jet.Oledb.4.0 提供者並未登錄於本機電腦上

最近把一些 .NET2.0 的專案從 x86 的 Server 搬到 x64 的 Server 上,一直都相安無事,直到今天才發現使用 Oledb 讀取 Excel 的時候會跳出「'Microsoft.Jet.Oledb.4.0' 未登錄於本機電腦上」的錯誤。
印象中在論壇上看到過幾篇「x64 + Oledb」的討論,再回頭去翻了一下,原來還蠻容易解決的,只要把 AppPool 設為 32 位元模式就行了。
- 1月 27 週三 201022:10
SessionID重複
今天同事遇到一個問題,使用者以IE8登入ASP.NET 1.1的網站後,在同一台電腦再另外開一個IE出來(不是用window.open()、也不是HyperLink),並登入同一個網站,結果會發現兩個視窗所使用的SessionID竟然的相同的。
用Fiddler去觀察的結果如下:
1.開第一個IE,並連到網站,此時Request的內容不包含ASP.NET_SessionId
2.登入後,任何的PostBack都會包含ASP.NET_SessionId=krjo4r55my1gdc55kqlfgdic
3.再另外開一個IE,並連到網站,此時Request已經包含ASP.NET_SessionId=krjo4r55my1gdc55kqlfgdic
用Fiddler去觀察的結果如下:
1.開第一個IE,並連到網站,此時Request的內容不包含ASP.NET_SessionId
2.登入後,任何的PostBack都會包含ASP.NET_SessionId=krjo4r55my1gdc55kqlfgdic
3.再另外開一個IE,並連到網站,此時Request已經包含ASP.NET_SessionId=krjo4r55my1gdc55kqlfgdic
- 1月 11 週一 201023:34
Menu - 無法選取停用的或無法選取的功能表項目

今天某位網友在使用Menu控制項時碰到一個例外訊息:
Can't select a disabled or unselectable menu item
(無法選取停用的或無法選取的功能表項目)
- 12月 20 週日 200901:37
SqlDataSource Performance

一直以來,我對SqlDataSource存有相當大的疑惑。
每次用DataGrid或GridView做分頁的時候,總是會在SQL語法上多下一點功夫,想辦法只抓出少量的資料筆數。後來VS2005推出了SqlDataSource,可以在不寫程式的情況下就做到分頁的功能。直覺就是:這麼方便?!難道它會自己產生分頁的SQL語法?
