顯示具有 ASPNET 標籤的文章。 顯示所有文章
顯示具有 ASPNET 標籤的文章。 顯示所有文章

2018年10月31日 星期三

使用Google登入做Web應用程式單一登入身分驗證(SSO)

這一篇很快地談怎麼用C#做Google帳號的SSO(Single Sign On),依照我們前面曾介紹過關於OAuth與SSO的資訊,你應該已經知道用OAuth做網頁SSO需要兩個重要資訊,就是Client ID與Client Secret,在GCP平台上,你可以透過 https://console.cloud.google.com 這網站來建立一個應用程式(專案)


好啦,就這樣,知道OAuth的原理之後,其實一切都非常簡單。你的網站已經可以輕鬆的讓用戶以Google帳號登入了。
完整source code位於: https://github.com/isdaviddong/GoogleSSO
注意:測試本範例你必須把default.aspx以及SSOcallback.aspx頁面中的所有ClientID與ClientSecret與redirecr_uri換成你自己申請的,否則將無法正確執行("Unauthorized")。


原始介紹文章出自於此

2018年10月15日 星期一

高負載 .NET Logging 議題與 NLog 極端效能調校

跟同事討論到高負載 .NET Logging 議題。某程式有巨量 Log 寫入需求,執行幾小時 Log 量可達數 GB,甚至懷疑寫 Log 可能成為效率瓶頸之一,程式目前使用 log4net,考是是否應更換成其他 Log 程式庫?如果要換,有哪些選擇?

早年用過 log4net,複雜的 XML 設定檔常讓我吐血,直到發現 NLog,二話不說立刻跳槽沿用至今,沒想過要換也就沒再留意其他 Log 程式庫,趁此機會做點功課。

把研究議題訂為「高負載 .NET Logging 解決方案評估」,如前述專案需求,以效能為首要考量。網路上討論較多的 .NET Log 程式庫有以下幾種:
log4net
NLog
Serilog
Microsoft Enterprise Library
NSpring
ELMAH

整理爬文心得如下:
Benchmarking 5 popular .NET logging libraries

2016 年的評測,比較 log4net、ELMAH、NLog、MS Enterprise Library、NSpring,結論:NLog 最快,效能是 log4net 的五倍,第二名是 MS Enterprise Library,NSpring 第三,ELMAH 殿後,效能只有 NLog 的 1/10。
在設定及便捷性方面,NLog、log4net 較佳,NSpring 較麻煩,Enterprise Library 不辱其「企業級」之名,一整個複雜。ELMAH 只能搭配 ASP.NET 應用範圍較窄,每個事件以 XML 保存推測是效能較差原因。


原始介紹文章出自於此


2018年8月13日 星期一

ASP.NET Core 練功筆記


關於 ASP.NET Core,MVP John Wu 有一系列 IT 鐵人文,是新手上路很不錯的參考:
[鐵人賽 Day01] ASP.NET Core 2 系列 - 從頭開始 - John Wu's Blog

如果你習慣 IDE 開發不喜歡下指令,那麼 Visual Studio 仍是開發 ASP.NET Core 的首選,有可能從建立專案、寫程式到測試都不必動用命令列視窗。不過如果你看中的是 .NET Core 跨平台優勢,那麼學習使用 dotnet 命令列指令是必修課程。
用命令工具建專案沒想像中複雜,例如以下幾個步驟就能建好一個可執行的空白 ASP.NET Core 網站:(要建立包含 MVC Controllers/Views 基本結構專案的話,則是用 dotnet new mvc)

2018年7月25日 星期三

初學者的第一堂課 (Youtube影片 / 正式課程)

https://www.youtube.com/watch?v=-Cdv_IEn_tw


範例下載
onedrive.live.com/?id=6F7F668080F24B20%212031&cid=6F7F668080F24B20

ASP.NET MVC 電子書(85頁)免費下載
www.syncfusion.com/ebooks/ASPNET_MVC_Succinctly?utm_source=promo_email&utm_medium=edm&utm_campaign=springaspmvcpromoedmaebapr18


https://dotblogs.com.tw/mis2000lab/2018/07/12/aspnet_mvc_lesson_online_free_20180712

https://dotblogs.com.tw/mis2000lab/2018/08/14/aspnet_mvc_online_learning_mis2000lab


2018年2月7日 星期三

讀寫檔案的另一個選擇 MemoryMappedFile


class FileProcessor
    {
       
public static byte[] Read(string path)
        {
           
byte[] result;
           
using (var memoryMappedFile = MemoryMappedFile.CreateFromFile(path, FileMode.Open))
            {
               
using (var memoryMappedViewStream = memoryMappedFile.CreateViewStream())
                {
                    result =
new byte[memoryMappedViewStream.Length];
                    memoryMappedViewStream.Read(result,
0, result.Length);
                }
            }
           
return result;
        }

       
public static void Write(string path,byte[] content)
       
{
           
using (var memoryMappedFile = MemoryMappedFile.CreateFromFile(path, FileMode.Create, "save", content.Length))
            {
               
using (var memoryMappedViewStream = memoryMappedFile.CreateViewStream())
                {
                    memoryMappedViewStream.Write(content,
0, content.Length);
                }
            }
        }
    }




    class Program
    {
       
static void Main(string[] args)
       
{
          
var bytes = FileProcessor.Read("MilkyWay.jpg");

            FileProcessor.Write(
"MilkyWay002.jpg",bytes );
        }
    }



原始介紹文章出自於此

2017年3月20日 星期一

注音符號輸入字盤及國字轉注音解決方案

程式碼已放上 Github,有興趣的朋友請自行參考。
昨天在 Facebook 貼了影片,收集到好多網友熱心回饋的替代做法,一併整理如下:
  1. 使用「通用輸入法」自訂輸入字根對應注音符號(通用輸入法介紹)… 感謝 Ammon Lin 提供
  2. 使用純注音字型,示範影片 … 感謝 Esmond Wang 提供
  3. 教育部中文轉拼音查詢  中文到注音轉換工具 … 感謝 Jethro Yu 提供


原始介紹文章出自於此

2017年2月7日 星期二

asp.net Web 使用krajee進行非同步檔案上傳

這一篇介紹Bootstrap File Input這個套件,之所以會被歸類到asp.net Web開發框架系列,是因為整個套件和我們採用asp.net走SPA架構(不管是用WebForms或WebAPI)都非常的速配。

首先我們有一個範例位於Github,如果你想要測試,下載這個範例後,基本上已經擁有所有你需要的檔案。請使用Visual Studio運行index.html這個檔案(對,沒錯,是pure html5),執行起來的畫面像是底下這樣:

這個套件精彩的地方是上傳預覽畫面,你會看到上圖中,它除了支援中文、多檔上傳、非同步上傳,還支援圖片預覽、Mp3檔案甚至可以撥放,會不會太誇張了點? 是的,人家就是支援…更不用說UI的部分很有誠意的原生支援正體中文(包含zh-TW的多國語言js)這也是我們使用此套件的原因之一。



原始介紹文章出自於此


小試 IIS 的簡易 DoS 防護-動態 IP 限制

這幾天,DDoS 攻擊事件在台灣鬧得沸沸揚揚。
DoS 攻擊可約略分為頻寬消耗型(找一大群鄉民擠在餐廳門口)及資源消耗型(召喚服務生過來點菜連點兩鐘頭,或一口氣點兩百盤紅燒獅子頭),從網站管理者的角度,對頻寬消耗型攻擊完全無能為力,只能靠 ISP 或網管單位防禦;但對於資源消耗型攻擊,倒是有些因應對策。(例如:把十分鐘還沒點完菜的客人攆出去或把點兩百盤獅子頭的客人打成豬頭)
我知道有一些 ASP.NET 設定就與 DoS 防護有關,例如:每次搞檔案上傳時都要手動調大的 MaxRequestLength 參數,選用偏小的 4MB 預設值,用意就在防止惡意程式透過 POST Request 傳送大量資料耗盡頻寬、記憶體或執行緒。而這陣子詢問度很高則是另一項 IIS功能-「動態 IP 限制」(在 IIS 7 時代為額外模組需透過 Web PI 安裝,IIS 8 起改為內建,詳情可參考小朱的文章), 過去曾聽過有此功能,但沒實際玩過,把握這個機會弄個小 Lab 觀察驗證也好。

以 IIS 8 為例,先從 IIS 管理員開啟「IP位址及網域限制」:

點選「編輯動態限制設定…」即可叫出設定畫面:

動態 IP 限制可從兩個方向下手:限制同一 IP 同時開啟連線數或限制同一 IP 在一段期間內發送的最大要求數量, 一旦超過上限,IIS 便直接回傳錯誤,不再耗費頻寬或 CPU、記憶體處理要求。
預設建議值為每個 IP 同時連線數不超過 5 條,每 0.2 秒要求數不得超過 20 個,超過這個數字 IIS 就暫時不處理來自該 IP 的請求,直接傳回 HTTP 錯誤以節省資源。





原始介紹文章出自於此

2016年12月26日 星期一

2017 iT 邦幫忙鐵人賽 - ASP.NET (Web Form)快速入門,全程Youtube影片教學

2017 iT 邦幫忙鐵人賽 - ASP.NET (Web Form)快速入門,全程Youtube影片教學
http://ithelp.ithome.com.tw/users/20079471/ironman/1127

1.  什麼都不會,怎麼開始網頁&資料庫設計? Visual Studio無痛入門
http://ithelp.ithome.com.tw/articles/10185187

2. 「防呆」與「驗證」,避免使用者輸入錯誤資料
http://ithelp.ithome.com.tw/articles/10185289

3. 網頁程式的前端?後端?到底有什麼差別?
http://ithelp.ithome.com.tw/articles/10185385

4. VS 2015起,VB後置程式碼的 Page_Load事件消失了?
http://ithelp.ithome.com.tw/articles/10185479

5. 從零開始 的 C# 線上學習網站
http://ithelp.ithome.com.tw/articles/10185597

6. AutoPostBack屬性 - 簡單、入門的 TextBox 密碼強度 警示圖
http://ithelp.ithome.com.tw/articles/10185685

7. ASP.NET (Web Form)最可怕、最特別的 PostBack
http://ithelp.ithome.com.tw/articles/10185720

8. 回家作業 HomeWork -- 表單 & 輸入畫面
http://ithelp.ithome.com.tw/articles/10185735

9. 網頁與資料庫#1 -- 範例資料庫的安裝
http://ithelp.ithome.com.tw/articles/10185910

10. 網頁與資料庫#2 -- SqlDataSource控制項,資料存取的精靈
http://ithelp.ithome.com.tw/articles/10185995

11. 網頁與資料庫#3 -- 大型控制項的樣版(Template)
http://ithelp.ithome.com.tw/articles/10186132

12. 網頁與資料庫#4 -- 大型控制項的樣版(Template)與清單控制項
http://ithelp.ithome.com.tw/articles/10186360

13. 網頁與資料庫#5 -- 樣板裡面的 Calendar日曆控制項「編輯DataBinding」無法呈現日期?
http://ithelp.ithome.com.tw/articles/10186510

14. 網頁與資料庫#6 -- SqlDataSource做不到、做不好的地方
http://ithelp.ithome.com.tw/articles/10186639

15. 網頁與資料庫#7 -- 我的 GridView有 "新增"功能
http://ithelp.ithome.com.tw/articles/10186751

16. 網頁與資料庫#8 -- 自己設計HTML畫面的 "新增"一筆記錄
http://ithelp.ithome.com.tw/articles/10186899




原始介紹文章出自於此





2015年7月13日 星期一

Visual Studio / C# / ASP.NET MVC / SQL Server 新手上路之學習資源整理

Visual Studio 開發工具

工欲善其事、必先利其器,人稱地表最強 IDE 開發工具 “Visual Studio” 是任何 .NET 開發人員必備的開發工具,對於個人使用或五人以下團隊使用者,皆可下載 Visual Studio 的社群版本,社群版本所附功能等同於 Visual Studio 專業版 (Professional) 的所有功能,且完全免費!

C# / .NET 學習資源

C# 是個程式語言,.NET 是個框架,在學習 C# 的過程中通常會連 .NET Framework 一起學到。我必須耳提面命的說,任何初學者不能也不應該跳過這一塊,更不能馬虎帶過,只要有時間,都應該花時間進修每個細節,因為這是學習一切 .NET 開發技術的基礎。

ASP.NET MVC 學習資源

ASP.NET MVC 是微軟新一代的 ASP.NET 開發框架,有別於傳統 ASP.NET Web Form 開發框架,ASP.NET MVC 採用了業界知名的 MVC (Model, View, Controller) 設計樣式,讓網站建置的過程能夠享受關注點分離的優勢,讓任何大小的網站都將更容易維護,開發人員也將更有彈性的建構真正新潮的網站服務。

SQL Server 學習資源

在企業系統開發中,資料庫佔有關鍵的一席之地,無論你學習甚麼框架、甚麼語言,在大多數的情況下,你需要面對資料庫的議題,而在 .NET 的世界中,SQL Server 在企業界又占有一定程度的市場佔有率,所以 SQL Server 也是一個非學不可的技術之一。



原始介紹文章出自於此


2014年5月14日 星期三

短小精悍的.NET ORM神器 -- Dapper

應該有很多人像我一樣,對LINQ的依賴已經到達"LINQ or Die!"(不LINQ,吾寧死)的 地步,到了需要存取DB的場合,打死也不想再走ADO.NET + DataTable、DataRow的回頭路。不過,在專案引用EntityFramework或其他ORM解決方案(NHibernation、 SubSonic...),固然嚴謹紮實,卻也多出額外工作--要依照Schema在專案定義Entity物件、資料庫變更時要記得同步更新Entity 定義,遇到多TABLE JOIN查詢得另外宣告自訂類別承接查詢結果(我還為此寫過潛盾機)。 對於要求嚴謹精準的中大型系統,這類準備工作屬無法避免的代價,但在一些力求快速輕巧的開發情境(例如: 轉檔工具、範例程式、單純但大量的報表需求...),所有對資料庫的存取(Table、View、Stored Procedure)需預先定義,還必須隨時保持與資料庫一致,引用EF之類的架構便顯笨重。
前陣子提到用TVP傳WHERE IN參數的做法,在FB專頁得到網友Lane Kuo的回饋(在此致謝),得知好物一枚 -- Dapper(英 文原義是短小精悍,用過即知Dapper不負其名),一個精簡小巧的.NET ORM工具,不需在專案裡新增DB Table、View或Stored Procuedure定義,只要取得IDbConnection(SqlConnection、OracleConnection、 MySqlConnection...都適用),就能立即享受接近EF、LINQ to SQL等ORM架構的便利,最重要的是能用LINQ把玩資料,這才是上流社會的程式寫法呀!
不囉嗦,打開NuGet就能找到它:

試用之後,感動到直起雞皮疙瘩,這就是我一直在尋找的,好吃又不黏牙的DB LINQ解決方案~



原始介紹文章出自於此

2014年1月23日 星期四

Techdays Taiwan 2013 課程影音檔案連結紀錄


原始文章出自於此


Techdays Taiwan 2013 課程網頁  http://channel9.msdn.com/Events/TechDays/Techdays-Taiwan-2013

[ATC] 服務架構以及信任運算
1.混合雲之架構決策實務 (Patterns and Practices for the Hybrid World)
2.開發主管的架構設計第一課 - 善用 Enterprise Library 6.0 及 Patterns & Practices
3.企業IT如何規畫與導入雲端運算技術
4.IaaS 還是 PaaS?架構師的雲端抉擇
[DBI] 資料平台與商業智慧
1.運用 SQL Server 2012 Reporting Services 建立豐富視覺化報表
2.SQL Server 2014預覽,劃時代的高效與雲端資料庫系統
3.微軟Big Data 解決方案:大型MPP平行運算資料倉儲系統 Microsoft SQL Server Parallel Data Warehouse V2
4.Reporting Services整合SharePoint模式以建立企業級報表中心
5.SQL Server 2012 商業智慧語意表格式模型(BISM Tabular)開發與管理
6.建構私有雲的最佳組合:Microsoft SQL Server 2012、Windows Server 2012和System Center 2012
7.深入了解 SQL Server 交易紀錄
8.DBA十大噩夢
9.你一定要知道:雲端資料庫的T-SQL最佳化
10.微軟SQL Server PDW V2 整合Hadoop先進技術Polybase及Power Query
11.深入討論Microsoft SQL Server索引使用技巧
12.SQL Server 2014 線上交易記憶體內資料庫(Hekaton)概觀
13.跨洲際多點同時服務的資料庫解決方案,使用SQL Server 點對點的資料同步
[DEV] 開發工具與應用程式生命週期管理
1.現代化的軟體生命週期管理 - Modern ALM by Visual Studio + Team Foundation Server 2013
2.前端工程 - 軟體工業的碶石
3.Visual Studio 2013 台灣發表會 Keynote - Modern App + Modern Lifecycle
4.運用敏捷開發法 SCRUM 進行專案規劃 - Agile Planning
5.開發生產力大進擊 - Visual Studio 2013 新功能與私房秘訣
6.真 跨平台 App 開發 - 使用 Visual Studio + Xamarin
7.應用程式自動化佈署的好幫手 - InRelease for Visual Studio 2013
8.ASP.NET MVC 5 新功能探索
9.使用立即可用的 HTML5/CSS3 技術分析及提升網站效能
10.專業程式開發者應該有的軟體測試技巧
11.上線環境如何偵錯? 進階級的 .NET 應用程式偵錯解密
12.使用 ASP.NET Web API 2 打造提供網站及 app 介接的 Web APIs
13.使用 ASP.NET SignalR 建置即時擴展的網站服務
[DYN] 客戶關係管理與企業資源規劃
1.內外社群行銷新視野,關係管理大變革 - Dynamics CRM 2013 初探
2.行銷大富翁 – 利用CRM成為數位行銷勝利者
[MDC] 現代化資料中心
1.最新發表: Windows Server 2012 R2 的新功能預覽
2.王者再進化! 全方位雲端管理平台 System Center 2012 R2 強勢登場
3.System Center 2012 與Windows Azure混合雲應用
4.以 Windows Server 2012 及Windows Server 2012 R2 建置伺服器及虛擬架構最佳備援及高可用性架構及環境
5.使用System Center 2012 R2監控您的網路設備、儲存裝置、伺服器、應用系統到虛擬化平台
6.以 Windows Server 2012 R2 及 System Center 2012 R2 建置私有雲的基礎架構
7.虛擬化平台最佳選擇: Windows Server 2012 R2 (Hyper-V 3.0 R2) vs VMware vSphere 5.1 及進行Vmware 無痛移轉之工具及建議
8.企業最佳公有雲整合應用: 以最新 Windows Azure Pack 啓動及架構 On-Premises IaaS 服務及解決方案
9.企業最佳公有雲整合應用: 延伸 SQL Server 至 Windows Azure SQL Database 並協助企業應用Windows Azure BizTalk Services…
10.利用System Center 2012 R2 輕鬆管理異質平台
11.最新發表 : 進擊的R2-Windows Server 2012 與 Hyper-V 新出頭的前世今生
12.企業最佳公有雲整合應用: 利用Windows Azure建立整合企業內部與雲端環境的網路架構
13.Windows Server 2012 部署與持續管理:Server Core 是您聰明的選擇!
14.企業最佳公有雲應用: Windows Azure in the Enterprise
15.虛擬化平台最佳選擇: Windows Server 2012 R2 的 Hyper-V 新功能最新發表
16.企業最佳公有雲整合應用: 在 Windows Azure Virtual Machines 中執行及管理 Active Directory
17.最新一代的資訊版權保護 (Rights Management Services, RMS) 技術,搶先預覽!
18.打造系統開發與維運整合的新境界-使用Microsoft System Center 2012 R2
19.如何應用微軟及合作夥伴 NetApp 解決方案, 完美整合雲端及虛擬化及應用基礎設施,提高IT敏捷度及能力
20.IT 自動化環境評估規劃與建置
21.透過System Center 2012以及PowerShell提升資料中心管理的效率
[OUC] Office 365 與整合通訊
1.Microsoft IT 如何部署微軟內部Lync 2013 及使用企業語音實例分享
2.70 分鐘快速了解 Office 365 Exchange Online
3.Office 365 雲端平台IT管理面面觀
4.360 度檢視 Office 365 訊息平台– 談最新Web技術運用, E-Mail 安全性, 及規範/稽核/封存之企業運用
5.Exchange Server 2013 and Exchange Online 郵件個資保護國際案例分享與實務
6.如何以Lync Server 建置企業撥入式語音會議(ACP)及 互動式語音應答系統(IVR)
7.Exchange Server 2013 Cumulative Update 2 (CU2) 的高可用性、備援技術與應用實例
8.解析Microsoft Lync Server 2013 的Call Admission Control 與企業網路的QoS管理
9.Lync Server 2013 高可用性與災難回復規劃與實作
10.十年來最大的改變 - Exchange Server 2013 公用資料夾全面進化
11.雲端時代-看Lync企業語音用戶與Skype的親密關係
[SES] SharePoint 與企業社群服務
1.善用雲端專案管理,提昇企業高“績”會
2.使用Visio及SharePoint Online開發進階的視覺化商業智慧圖表
3.SkyDrive Pro企業儲存隨身帶
4.運用Yammer實踐敏捷開發新利器
5.使用 SharePoint 2013 開發企業應用系統
6.SharePoint 2013 的宣告驗證架構
7.使用SharePoint 2013建立企業搜尋平台-提升使用者體驗
[WAD] Windows Azure 應用程式開發
1.Team Foundation Services 與 Windows Azure Websites 之無縫整合
2.談雲端運算的架構設計
3.Windows 市集應用程式開發實戰 - 使用 Windows Azure Mobile Services
4.打開窗,讓大象跨進來 ~ Microsoft HDInsight
5.在雲端應用程式內加裝噴射引擎:Windows Azure快取服務
6.使用 Windows Azure AD 開發企業專屬的雲端應用程式
7.從Developer的角度來使用與整合Windows Azure SQL Database 與 SQL Server 2014
8.運用 Windows Azure Platform 打造企業的混合雲解決方案
9.Windows Azure 媒體服務簡介

[WCA] Windows 用戶端的存取及管理
1.Windows 8 BitLocker 與 Microsoft BitLocker Administration Monitoring 2.0 管理工具的完美搭配
2.透過Windows Store Apps賺錢! 獲利模式、實作及案例分享
3.Windows 8.1 新功能概述: XAML 及 WinRT
4.為什麼要升級 Windows 8.1? 探索全新企業應用:行動力、安全性、管理和虛擬化
5.Windows RT不為人知的一面 - 企業應用情境與管理
6.Windows 8應用程式相容性大解密
7.Windows Store Apps 及Windows Phone Apps介面開發設計實證: 使用Blend for Visual Studio
8.一窺全新Windows Server 2012 VDI 與 Remote Desktop Service - 虛擬化應用再升級
9.如何為企業打造彈性靈活的工作環境 (BYOD, VDI, 平板…)
10.如何將 ASP.NET 網站移轉成 Windows Store APP
11.快速流暢、觸控首選 - 打造現代化網站 IE10 / IE11
12.App 哪有這麼順 -- 善用非同步運算技術, 就會這麼順 (使用Visual Studio 2013)
13.增強版Microsoft Deployment Toolkit 2012 - 輕鬆部署Windows 8 / Windows 8.1
14.如何利用 System Center 2012 Configuration Manager SP1和Windows Intune管理跨平台裝置
15.Windows 8.1 安全性大躍進
16.如何部署企業內部營運的Windows Store APP
17.如何管理與部署體驗全新桌面虛擬化App-V 5.0 & UE-V
[WPH] Windows Phone 開發
.行動化應用的第一課-Windows Phone 8開發與管理入門
2.從 Idea 到上架 - Windows Phone App 實戰密技
3.開發Windows Phone 商務應用程式就是這麼快
4.Windows Phone 8 開發深入解析及實用技巧介紹

2013年9月12日 星期四

現在,哪些功能不該用?有哪些替代方法?

這篇文章是源自 ASP.NET Web Blog 的一篇文章:What not to do in ASP.NET, and what to do instead,我覺得寫得不錯,而且對目前使用 ASP.NET (尤其是 Web Form) 開發的程式設計師來說特別重要,因此我將這篇文章翻譯重點部份撰成本文。
ASP.NET 到今天已經發展到 4.5 版,4.5.1 也即將發行,在各次版本的演進與更替中,往往會推出不少的新功能,或是原功能的強化,不過這些都是推出當時的時空因素所設計,HTML/CSS /JavaScript 的演進以及 RESTful API 的觀念日漸成熟,也讓 ASP.NET有很多的功能慢慢得變成不適用,因此 ASP.NET 的開發團隊就在網站上編寫文章來告訴大家哪些功能不要再使用,以及其替代功能為何。
1. 標準功能
1.1 Control Adapter (建議停用,以 HTML/CSS Media Queries 取代)
首 先是 ASP.NET 2.0 推出的 Control Adapter 功能,它是為了要處理不同設備間的 HTML 繪製需求所設計,但是今天 HTML 在跨設備的功能已經被 CSS,尤其是在 Responsive Design 中,HTML5 可以配合 Media Queries 來決定如何繪製 HTML,因此 Control Adapter 已失去它原本的需求,所以建議不要再使用 Control Adapter,而是以 HTML/CSS 與 Media Queries 來替代。
1.2 控制項中的樣式屬性 (建議停用,以 CssClass 配合 CSS 類別取代)
在 ASP.NET 的控制項中都擁有一個 style 的屬性,用來給開發人員設定控制項的 C視覺樣式設定,但是目前的主流是以 CSS 來控制,因此建議不要再使用 style 來操作視覺樣式,而是應該使用 CssClass 來設定 CSS 的類別,由 CSS 類別去操控視覺的樣式。
1.3 頁面與控制項的回呼功能 (建議停用,以正規的 AJAX 作法替代)
ASP.NET 2.0 提出的 Page Callback/Control Callback 是為了早期 AJAX 技術不夠純熟時,為了要做到部份內容更新時所實作出來的暫行作法,現在因為 AJAX 技術已十分成熟,因此應該要改用正規的 AJAX 作法來替代 Page/Control Callback。
正規的 AJAX 作法包含 jQuery, ASP.NET AJAX UpdatePanel, MVC, SignalR, Web API 等 (我個人則建議最好別用 UpdatePanel)。
1.4 瀏覽器能力偵測 (建議停用靜態偵測,改用動態偵測替代)
早 期的瀏覽器能力偵測是寫在 ASP.NET Server-side 裡面,且無法動態變更,屬於靜態的能力偵測,但是現在有 Modernizr 這類偵測瀏覽器是否支援特定功能的 JavaScript 程式庫出現,它的彈性會遠高於 ASP.NET 本身的靜態偵測能力,因此建議使用 Modernizr 或其他相似功能的動態偵測,來替代 ASP.NET 本身的靜態偵測。


更多其他資訊請參考原始文章

2013年8月14日 星期三

[C#] 網頁Html轉PDF檔(一行程式碼解決)

網頁轉PDF檔做法很多(Convert HTML to PDF in .NET)
這邊紀錄一下老外最多人加分的那篇做法,使用wkhtmtopdf(採GPL授權)可以省很多程式碼

首先到官網http://code.google.com/p/wkhtmltopdf/downloads/list
找installer.exe下載,這邊Demo我是下載wkhtmltopdf-0.9.9-installer.exe
下載完後執行安裝它



另外GridView匯出PDF的話,請參考:
ASP.NET 輕鬆轉 GridView 資料轉檔到 PDF - 使用 iTextSharp

請注意使用iTextSharp預設不支援中文字和背景色
中文字的解決方案:GridView透過iTextSharp輸出PDF中文問題

原始介紹文章出自於此


----------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
/*要引用以下命名空間*/
using System.Diagnostics;
using System.IO;

public partial class _Default : System.Web.UI.Page
{

    //Button的Click事件(把Url的網頁內容轉成PDF)
    protected void btn_execute_Click(object sender, EventArgs e)
    {

        //因為Web 是多執行緒環境,避免甲產生的文件被乙下載去,所以檔名都用唯一
        string fileNameWithOutExtention = Guid.NewGuid().ToString();

        //執行wkhtmltopdf.exe
        Process p = System.Diagnostics.Process.Start(@"D:\wkhtmltopdf\wkhtmltopdf.exe", @"http://msdn.microsoft.com/zh-cn D:\" + fileNameWithOutExtention + ".pdf");

        //若不加這一行,程式就會馬上執行下一句而抓不到檔案發生例外:System.IO.FileNotFoundException: 找不到檔案 ''。
        p.WaitForExit();


       //把檔案讀進串流
       FileStream fs = new FileStream(@"D:\" + fileNameWithOutExtention + ".pdf", FileMode.Open);
       byte[] file = new byte[fs.Length];
       fs.Read(file, 0, file.Length);
       fs.Close();

       //Response給用戶端下載
       Response.Clear();
       Response.AddHeader("content-disposition", "attachment; filename="+fileNameWithOutExtention+".pdf");//強制下載
       Response.ContentType = "application/octet-stream";
       Response.BinaryWrite(file);

      
    }
}

2013年5月28日 星期二

ASP.NET & jQuery 注意小細節來防止XSS攻擊

防範小技巧
1.一般我們在開發網站過程中,有可能為了專案的需求而暫時關閉基本防護的功能,所以在上線前記得檢查一下 web.config 的設定是不是正常。
1<system.web>
2   <pages validateRequest="true" /> //預設為 ture => 開啟防護
3</system.web>
2.常見的方法可以利用 Server.HtmlEncode 來對內容進行編碼:
1string value = Server.HtmlEncode("<script>alert('XSS 攻擊');</script>");
而如果使用的 .Net Framework 為 4.5的版本可以利用新的方法 AntiXssEncoder.HtmlEncode 來對內容進行編碼:
1// 需引用 System.Web.Security.AntiXss;
2string value = AntiXssEncoder.HtmlEncode("<script>alert('XSS 攻擊');</script>", true);
3.若使用 ASP.NET MVC 進行開發,在 View 裡利用 Html Helper 顯示資料時也已經幫我過處理大部分的安全性問題。
首先我們先故意做一個會造成 XSS 攻擊的惡意程式碼,這是在 ASP.NET MVC 中的 Controller 
1public ActionResult Index()
2{
3    TestModel model = new TestModel();
4    model.XssAtack = "<script>alert('攻擊');</script>";
5    return View(model);
6}
下面示範幾種在 View 中顯示資料的方法,來檢驗各個方法對於 XSS 的防範機制:
1@Html.DisplayFor(p => p.XssAtack) 攻擊失敗,顯示純文字
2 
3@Html.DisplayForModel() 攻擊失敗,顯示純文字
4 
5@Html.EditorFor(P => P.XssAtack) 攻擊失敗,顯示 input 標籤
6 
7@Html.Encode(Model.XssAtack) 攻擊失敗,將內容進行編碼
1@Html.Raw(Model.XssAtack) // 攻擊成功,跳出 alert 視窗
2 
3@Html.DisplayTextFor(P => P.XssAtack)  // 攻擊成功,跳出 alert 視窗
測試結果中顯示 Html.Raw 和 Html.DisplayTextFor 會造成 XSS 攻擊的問題,所以在開發 ASP.NET MVC 時也應該小心使用這些 Html Helper,你防止不必要的問題發生,反觀如果需求就是要跳出一段 alert 來提醒使用者,也可以利用這兩種方法來做資料顯示。


其他更多詳細內容請參考原始文章