-
前陣子,我提出一個 以jQuery實作網頁多語系切換 的點子,主張透過UI.htm維護文字對照表,提供js以Class註記加查表的方式,讓網頁可直接呈現預設語系文字(傳統上要將可切換文字全都換成代碼,可讀性大減),再用對照方式查出並置換為其他語系內容。 同事 迫於我的淫威 在了解該架構的便利性後,開始逐步在專案中試用。今天同事MSN給我,許了一個願: 呼叫ml("預設語系文字內容")傳回其他語系對照的做法在寫Javascript時很好用,但很希望在aspx.cs端也提供相同功能...
-
Since ASP.NET 2.0, web.cofig adds connectionStrings section to store database connectoin string and provides encryption function to secure the sensitive inforation (like database account and password). For example: <connectionStrings> <add name...
-
ASP.NET 2.0起,web.cofig裡多了connectionStrings區段專門用以儲存資料庫連線字串,同時為避免連線字串中的帳號、密碼等機密資訊曝光,區段內容可以加密方式儲存。例如: <connectionStrings> <add name=" PlaygroundConnectionString " connectionString=" Data Source=(local);Initial Catalog=Playground;Integrated...
-
有個點子,想在WinForm上跑程式模擬出Web Server功能,讓Browser或程式可以透過HTTP協定與其溝通。既然想到,就動手做看看囉! HTTP Server絕大部分的核心功能,其實都可用.NET搞定: 用 TcpListener 接受特定Port連入的TCP連線,取得 NetworkStream ,以StreamReader、StreamWriter讀取及寫入資料... .NET BCL 真是應有盡有!相較之下,以前那種基礎元件跟函式庫都得自己張羅的時代,只能用茹毛飲血來形容。 有了BCL的加持...
-
先前介紹過 用WebClient存取網站內容 的技巧,在實務上有個狀況: 當存取對象的ASPX發生程式錯誤,呼叫端只會得知是HTTP 500應用程式出錯,但錯誤細節無從得知。 例如以下範例: protected void Page_Load( object sender, EventArgs e) { //加入故意產生錯誤邏輯 if (Request[ "err" ] != null ) throw new NotImplementedException(); WebClient...
-
RFC是Request For Comment的意思,學過網路的人應該多半有聽過,但這篇文章跟開創網路歷史的那堆偉大協定文件一點關係都沒有(謎之聲: 憑你也配!),純粹只是提出一個構想,想多蒐集各方意見。 事情要從工作專案增加了多國語系需求說起,ASP.NET雖早有解決方案,但我一直覺得傳統的多國語系搞法不夠人性化,就興起了為搞套簡便做法救自己的念頭。 傳統的ASP.NET多國語系做法要把所有因語系變換的文字改成變數物件或指定Resource Key,然後為不同語系設定資源檔,再針對每個Resource...
-
有個網站有較嚴的資安要求,因此在IIS管理員中將其設為必須使用SSL連線,當使用者使用HTTP而非HTTPS連線時,會看到403拒絕存取的錯訊訊息,不太友善: 403 - Forbidden: Access is denied. You do not have permission to view this directory or page using the credentials that you supplied. 嚴格說起來,這個訊息回應不夠人性,未導引使用者解決問題,所以我們來試做一個讓使用者有賓至如歸感受的HTTPS強制導向服務...
-
同事在網頁上用了 ASP.NET TreeView控件 ,但專案規格中需要由Javascript端完成新增節點的動作,很不幸地,這不是ASP.NET TreeView內建支援的功能。 如果時間充裕的話,我會建議改用jQuery TreeView Plugin,較符合大量Client端客製的需求,但因時程迫在眉睫,且只差這個小功能,所以大家不要考究"破解"ASP.NET TreeView前端設計的意義,把它想像成打破水缸救人就好。 寫完這段程式,等同於小小地破解ASP.NET TreeView前端HTML與Script設計...
-
相信許多人都有WCF很難Debug的印象! 的確,Client透過Proxy Class以非同步呼叫執行於Host程序的程式碼,乍看跟呼叫本地元件沒兩樣,但本質上卻涉及一連串複雜機制,要將Server端或傳輸環節中發生的錯誤詳實地傳到呼叫端本來就不是件簡單的事。 昨天剛好遇上一起 RIA Service離奇暴斃 案,只知WCF呼叫無疾而終,別無線索,最後還是靠著修改程式看結果變化的土方法才找出傳回結果項目過多的問題。不過,在爬文過程中,意外發現了因先前不夠用功所以遺漏的好東西-- WCF Tracing...
-
翻修古老ASP.NET網站專案,發現使用Visual Studio 2010編譯會失敗,傳回以下錯誤: The CodeDom provider type "Microsoft.VJSharp.VJSharpCodeProvider, VJSharpCodeProvider, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" could not be located. 這個錯誤訊息沒有關聯到任何檔案...
-
上回提到 LINQ to SQL兩段式更新 時,經網友提醒有Attach()這個好東西,今天試了一下,結果發現它並不是我所原本想像的好東西,用起來得費一些手腳。 MVP Rick Strahl 對這個議題有兩篇文章( 1 , 2 )做了深入探討,因此細節我就不再贅述,但簡單歸納一下我的整理: Table(TEntity).Attach()有三個Overloading: 若只使用Attach(entity),不會產生任何SQL的更新動作。 使用Attach(entity, asModified),當設為true...
-
有很多時候我們會在網站上存放重要資料檔案,例如: 相關設定XML、執行過程產生的文字檔,甚至是mdf資料庫檔。原則上這些檔案可放在網站的任何目錄結構下,我們可利用Serer.MapPath()輕鬆算出其實體路徑,當成讀、寫檔案時的參數。 不過,檔案隨便亂擺會有潛在風險,一些僅供程式內部使用的檔案,很多內容是見不得人的或跟資安管控息息相關(例如: 記錄可存取Client IP清單的XML、記載特殊存取事件的Log檔... 等等),當我們將檔案放在一般網站資料夾下,使用者只要組裝出完整URL,就可以用瀏覽器光明正大...
-
Abstract : This is a code generator to declare reflected .NET class of Javascript object using JSON.NET JObject features. 這是跟同事在討論系統架構時冒出的議題... 網頁前端將使用者輸入結果組裝成結構單純的Javascript物件,一個欄位對應一個屬性,但有些欄位如電話、地址等可能有多筆,故屬性型別除了字串、數字外,也有會有電話號碼物件陣列,電話號碼物件則包含國碼、區碼、號碼三個屬性...
-
之前在文章裡 提過 .NET內建兩種JSON轉換工具: JavaScriptSerializer及DataContractJsonSerializer。不過,它們都基於一個假設--"JSON轉換對象是事先已知的Class"! 在某些狀況下,前端所傳回的JSON字串是開發階段無法完全掌握的。 舉個極端的例子。在Javascript裡可用以下寫法搞出一個你做夢都想不到的物件,轉成JSON傳到後端: var o = {}; for (var i = 0; i < 10; i+...
-
在網站專案中,常有從資料庫讀取清單選項或對照表的需求,例如: 商品分類、請假假別...等等,這些資訊在系統中的變動頻率極低,查詢頻率很高,若每次用到都去資料庫查,是很沒效率的設計。因此我習慣將這些資料轉成List<T>或Dictionary<string, string>,保留在Cache一段時間,稍後又要使用時,統一透過特定函數存取。在該函數中有額外的智慧判斷邏輯,它先檢查Cache中是否有現成資料物件可用,若有則直接傳回;若無,則當場向資料庫查詢,產生資料物件並存入Cache中...