2016年5月10日 星期二

找不到型別或命名空間名稱

今天遇到了如同怪異的「找不到型別或命名空間名稱」錯誤這篇所提到的情況,整個就是很怪異,原先正常運作的專案,突然冒出這個錯誤,檢查了老半天,也確定<Type/Namespace>有正常載入,在耗費大半天之後,終於發現...原來我安裝的CrystalReportFor Vs更改了web.config檔--註解了部份原始設定,另外再加上新設定(也有可能是自己手殘誤觸註解鈕),把web.config檔中,位於assemblies數個重要的assembly給註解掉了.......囧,
如果遇到了這個錯誤,又查不到原因,不妨檢查一下設定檔....


2016年5月3日 星期二

ASP.NET Web Form-偵測用戶端瀏覽器類型與支援的功能

其實,進入HTML5的時代有那麼多響應式網頁設計的模組可以使用,只要設計得當,前端界面應該不太需要做特殊判斷,至於後端...總會有些奇奇怪怪的情況來考驗,雖然困擾了幾天,最後這些資料沒派上用場XDDD

不過資料都收集了,就稍加整理做為這次被考驗的紀念...

-----------------------------------這是分隔線-----------------------------------

偵測用戶端瀏覽器屬性在前端可以用javascript達成,例如:

alert(navigator.userAgent);

有時必須在後端做判斷,(ASP.NET WebForm)可以取 Requset.UserAgent的值,
更細節的支援功能則可使用HttpRequest.Browser

How to: Detect Browser Types and Browser Capabilities in ASP.NET Web Forms

必須注意的是HttpBrowserCapabilities 提供的是用戶端瀏覽器所支援的功能,而不是用戶端瀏覽器的設定值。

想要將用戶端瀏覽器支援的功能呈現在網頁上,MSDN提供的範例是:

2016年5月1日 星期日

Microsoft SQL Server, 錯誤: 18456

通常是在執行SQL Server連線時才有機會看到18456這個錯誤訊息,這跟SQL Server授權驗證有關,也就是說看到這個訊息代表的是連線失敗。

SQL Server 的登入驗證方式有2種:[Windows驗證]以及[SQL Server驗證]。

1.Windows驗證:使用Windows本機端使用者帳戶登入SQL Server。
選擇這個驗證方式,並且看到錯誤:18456時,有可能是安裝SQL Server的過程中未將該帳戶加入存取權限,或是新建的使用者帳戶。因此,在能連線到SQL Server的狀況下,到SQL Server\安全性\登入中,加上該本機端使用者帳戶即可。
詳細設定可參考這篇:
以 Windows 驗證方式登入 SQL Server 時,遇到錯誤代碼為 18456 的錯誤,該如何排除?

2.SQL Server驗證:使用SQL Server帳號登入。
選擇這個驗證方式,在排除帳號、密碼輸入錯誤的情況下看到錯誤: 18456,絕對不是人品不佳,而是沒有開放SQL Server驗證模式。
怎麼開放呢?  開啟[伺服器屬性]->選取頁面[安全性],將驗證模式異動為"SQL Server 及 Windows 驗證模式"。
設定完成後,須重新啟動SQL Server服務(不是把Management Studio關掉重開喔)。



2016年4月28日 星期四

HTTP錯誤500.21-Internal Server Error


執行ASP.NET應用程式出現「HTTP錯誤500.21-Internal Server Error,處理常式 "PageHandlerFactory-Integrated" 的模組清單中有錯誤的模組 "ManagedPipelineHandler



會發生此狀況的原因為:
一、先安裝.NET FrameWork 4.0以上的獨立安裝程式,才啟用IIS角色,可能就會遇到。
Q:我沒裝什麼.net framework的獨立安裝程式啊..?
A:可能是在安裝其他應用程式時,順便幫你安裝了。
二、.NET Framework 4.0 與ASP.NET 有關的設定損壞走鐘了。

解決方案:
底下這篇是MSDN的說明,適用在VS2012安裝較VS2010或SQL SERVER2008早的情況
Troubleshooting: HTTP Error 500 (or 500.21) - Internal Server Error Handler


底下這篇可能適用於某些環境
執行ASP.NET應用程式時,發生【HTTP錯誤500.21-Internal Server Error,處理常式 "PageHandlerFactory-Integrated" 的模組清單中有錯誤的模組 "ManagedPipelineHandler"】錯誤的故障排除


雖然MSDN的說明,是Visual Studio2012比較早安裝;但是長期使用微軟開發工具早已養成要按照發行版本的先後順序進行安裝的習慣,我的安裝順序是VS2010 -> VS2013 -> VS2015,會遇到這個錯誤的原因是開始coding後才想到要啟用IIS角色....
實際的解決方式是:

1. 進入命令列模式(執行cmd)
2. 切換至  %systemroot%\Microsoft.NET\Framework64\v4.0.30319\SetupCache\v4.6.01055 資料夾並執行setup.exe啟動.NET Framework修復:
cd\Windows\Microsoft.NET\Framework64\v4.0.30319\SetupCache\V4.6.0155
setup.exe /repair /x86 /x64 /ia64 /norestart
3. 啟動.NET Framework4.6.1安裝程式後選擇「將.NET Framework4.6.1修復成原始狀態」
4. 修復後依指示重新開機。
5. IIS重新啟動。

2016年4月21日 星期四

SQL Server無法附加資料庫? Microsoft SQL Server, 錯誤: 5120


SQL Server附加資料庫時出現存取被拒的錯誤訊息 (Microsoft SQL Server, 錯誤: 5120)

原因: 無該資料庫檔案存取權限、無存放該資料庫檔案資料夾存取權限...

解法1. 
增加資料庫檔案的必要存取權限,例如這篇

SQL Server附加資料庫失敗 錯誤碼 5120 作業系統錯誤 5 存取被


解法2. 
將資料庫檔案搬到有存取權限的資料夾,例如這篇

SQL Server無法附加資料庫? 錯誤碼 5120 / 作業系統: 5 權限不足



解法3.
用"以系統管理員身分執行"的方式開啟Microsoft SQL Server Management Studio,並執行附加作業。

有趣的是用這方式附加資料庫檔案成功以後,下次直接開啟Management Studio時還是可以正常存取資料庫。



2016年4月13日 星期三

sorted a Dictionary with C#

1. Using LINQ (Language-Integrated Query)
2. Converting Values and Keys to a List
3. Using delegate

Reference:

 1- How to sort a Dictionary with C#
 2- Sorts a Dictionary by keys and by values.
 3- 當心LINQ搜尋的效能陷阱

不想用LINQ、不想實作,有沒有更快速的方法?

有的,用SortedDictionary<TKey, TValue>Class取代Dictionary<TKey, TValue>即可自動以TKey做排序。

2016年4月12日 星期二

自由軟體授權條款

自由軟體既方便又好用,比較困擾的是授權條款,

有時想在專案中加入自由軟體,又會擔心不當引用,

腦容量有限,很少分配在這些法律條款上,

不管是查過授權條款已經確認引用合法,
或是測試階段先用在說,

每當看到License 這個單字,多少會顧慮有沒有踩到地雷...

這篇文只會摘錄曾經使用過的授權條款的授權原則,算是備忘,也避免一再的重複查詢。


自由軟體鑄造場(Open Source Software Foundry)-授權條款介紹
http://www.openfoundry.org/tw/licenses



The MIT License (MIT)

維基 MIT授權條款

OpenFoundry MIT授權條款

被授權人權利
給予被授權人對軟體沒有受限制的使用、重製、修改、合併 (merge)、出版發行(publish)、散布再授權、及販售軟體的重製物。
被授權人可依照程式上的需要修改授權條款內容成為適用內容。

被授權人義務
必須在所有的重製物或在軟體實體部份中將著作權聲明和允許聲明納入。