瀏覽作者:

lex.xu

對資訊技術這方面非常有興趣,常常自學新技術來補齊自己的好奇心,解決問題的成就感是我繼續走向這條路的最大動力。

[C#] 使用 HtmlAgilityPack 搜尋子節點輸出文字時出現亂碼

今天在撈取購物網站資料時發生了一件很詭異的事情,明明在HtmlNodeCollection搜尋時在父節點裡明明就是中文字,但在進行foreach篩選子節點時卻發生原本的中文decode了  !!!!
經過了三四個小時的google與詢問大大,終於有了結果。

  1. 在父節點裡是正常顯示中文01
  2. 到了子節點卻發生decode的現象02
  3. 將字串貼入記事本用IE開啟即正常顯示中文

    03

解法如下:

  • 使用HttpUtility.HtmlDecode這個方法來恢復正常文字

    04
       

[Chrome] 分頁不會預先讀取

Chrmoe不知道從哪版開始關閉了新分頁預先載入的功能,雖然這樣有比較省資源沒錯,但是我記憶體有32G就給他吃吧XD,於是乎就拜了Google大神來解決這個問題。

  1. 網址輸入
  2. 修改為已停用

    01

 

參考:[請問]chrome 分頁不會預先讀取

       

[C#] 使用 HtmlAgilityPack 來採集網頁

因為工作需求,所以必須寫一隻小程式來擷取網頁資料,上網Google了一下於是找到了一個好用的套件HtmlAgilityPack,可以迅速的過濾HTML標籤,取得網頁資料。

 

  1. 從NuGet安裝HtmlAgilityPack 

    01

  2. 讀取網頁(以原價屋為例)

  3. 原價屋除了商品的類型以外,類型內的選單(select)有做群組分類,為了要將分類與商品所以先建一個Model

  4. 判斷所要的商品類型(以CPU為例),再擷取該商品類型內選單的分類

  5. 接下來就要該使擷取商品名稱與價格了

  6. 將商品類型與名稱填入Model

  7. 執行結果0000

 

範例程式:https://github.com/shuangrain/ConsoleApplication_HtmlAgilityPack

 

參考:[ASP.NET][C#]使用HtmlAgilityPack(1) 擷取網頁上的股票

       

[C#][ASP.NET MVC5] 使用 jQuery Form Plugin 與 HttpPostedFileBase 檔案上傳

先前提到過 [C#][ASP.NET MVC5] 使用 HttpPostedFileBase 檔案上傳 ,這次我要使用Ajax的方式上傳檔案,但研究了Ajax.BeginForm許久都無法上傳檔案,最後找到使用jQuery Form Plugin來實作此功能。

來源:

  1. ASP.NET MVC – 使用 jQuery Form Plugin 做檔案上傳
  2. ASP.NET MVC – 使用 jQuery Form Plugin 做檔案上傳之加點東西

 

使用NuGet安裝所需套件

  1. 安裝jQuery Form Plugin
    01
  2. 安裝Javascript Alert:toastr
    02

 

View

HTML的部分可以不用更動,無須使用Ajax.BeginForm,只需要在JavaScript的地方使用ajaxForm即可將表單轉換成Ajax模式。

Controller

由於前端使用Ajax所以後台回傳資訊則必須從ActionResult修改成JsonResult,這樣才能強制回傳Json格式,需要注意的一點是在IE底下若無指定contentType的話則會出現問題如下圖,必須指定回傳的contentTypetext/html才能在IE底下正常接收資訊。

03

       

[Windows] 在 Windows Server 2012 R2 上安裝 PPTP Server

有時候需要VPN來遠端使用一些本地服務,或是需要跳板IP的時候,就需要VPN這個服務啦,先前有整理過Linux的VPN安裝教學,這次來整理一下Windows的囉!

 

安裝腳色

  1. 遠端存取打勾
    螢幕截圖 2016-06-11 16.15.37
  2. 無須異動直接下一步
    螢幕截圖 2016-06-11 16.15.51
  3. 下一步
    螢幕截圖 2016-06-11 16.16.01
  4. DirectAccess與VPN(RAS)打勾
    螢幕截圖 2016-06-11 16.16.10
  5. 會挑出視窗詢問是否安裝下列功能
    螢幕截圖 2016-06-11 16.16.16
  6. 路由打勾
    螢幕截圖 2016-06-11 16.16.20
  7. 點擊安裝
    螢幕截圖 2016-06-11 16.16.35
  8. 安裝過程
    螢幕截圖 2016-06-11 16.16.49

 

       

[WordPress] 在Windows Server 2012 R2中使用 Disqus Comment System 連結帳號失敗

最近手賤把Disqus解除帳號連結,卻發現怎麼樣都無法連結帳號,一直顯示Unable to connect to the Disqus API servers如下:

01

拜了Google大神很久都找不到原因,無論重新安裝Windows Server還是使用國外HostGator Web Hosting(Windows)都發生同樣錯誤,忽然想起之前安裝這個外掛的時候也有發生這個問題,後來改用Linux後就正常了,於是乎懷疑是否是作業系統的問題,立即開了虛擬機安裝一台Linux測試,在Linux底下沒有做什麼特別的設定,按下登入馬上就連結成功到Disqus。

個人猜測在Windows裡安裝的php套件少了什麼東西,導致外掛無法正常運作,雖然切回Windows後無法同步留言回Wordpress,但是此外掛還是有正常在運作中可以正常留言,那就先這樣結案吧!

       

[C#][ASP.NET MVC5] MySQL Entity Framework 學習筆記(一) – 環境設定

剛開始在碰ASP.NET MVC的時候,查詢該如何連結資料庫時常常會聽到Entity Framework這個方法,但由於那時沒有太多時間,沒去查太多資料都用SQL自幹,現在閒下來了,就來玩玩看這個東西,首先是環境設定:

  1. NuGet安裝MySQL使用Entity Framework時所需要的套件
    01
     
  2. 總共有三個東西要安裝,分別是
    • MySql.Data
    • MySql.Data.Entity
    • MySql.Web

    01

  3. 安裝完畢後就要開始設定連結字串,打開Web.config新增連結字串

    02

  4. 建立MySqlContext.cs並繼承DbContext供後續使用

 

結論:

這樣環境就建置完成囉,後續就可以開始使用Entity Framework了!

 

參考:

  1. ASP.NET MVC, ENTITY FRAMEWORK CODE FIRST與MYSQL筆記
  2. Entity Framework 快速上手與學習資源整理
       

[C#][ASP.NET MVC5] FileUpload 上傳檔案大小的限制

ASP.NET為防止駭客利用大檔案進行DOS(Denial Of Service)攻擊,所以把上傳檔案大小限制在4096KB(4MB),因此當上傳檔案超過4MB時,就會收到System.Web.HttpException 超出最大的要求長度的錯誤訊息如下:

01

那如果需要上傳超過4MB的檔案怎麼辦?那就必須修改Web.configsystem.web讓該站自訂大小,修改內容如下:

  • maxRequestLength 檔案大小(KB)
  • executionTimeout 上傳時間(秒)

修改完後雖然不會跳出上面的錯誤了,不過卻跳出另外一個訊息:
04

拜了Google才發現,原來 Windows Server 2008 (IIS 7.0) 上又多了一個 maxAllowedContentLength 屬性 (單位為 Byte),於是乎又打開了Web.config找到system.webServer,修改內容如下:

其預設值為 30000000 Bytes (~28.6 MB),所以上傳 30 MB 的檔案就會產生錯誤了。這邊我是修改為1 GB (1024 x 1024 x 1024)可視情況調整。


綜合以上的修改結果為:

02

 

如果使用者上傳超過設定的最大上限怎麼辦?是不是又會跳出錯誤訊息?不要害怕,只要在Global.asax裡面處理這項錯誤即可,處理方式如下:

03

 

結論:

一個簡單的上傳功能,想不到有這麼多眉眉角角需要注意,做這行真是不容易QQ

 

參考:

  1. ASP.NET如何設定檔案上傳大小可超過預設4096KB(4MB)
  2. FileUpload 上傳檔案大小的限制
       

[C#][ASP.NET MVC5] 使用 HttpPostedFileBase 檔案上傳

檔案上傳功能在網頁中常常出現,在ASP.NET MVC裡面要上傳檔案非常簡單,這裡簡單筆記一下有關 ASP.NET MVC 的檔案上傳基本操作方法。

  • Controller
  • View

    這邊要注意的是,如需要使用HttpPostedFileBase上傳檔案的話,則必須添加enctype = "multipart/form-data",不然怎麼樣都沒辦法正常收到資料!
    另外如果使用下列語法是無法接收資料的,因這樣表單並沒有含enctype = "multipart/form-data"這項

    一定要用改為下面的方法

 

範例程式:https://github.com/shuangrain/WebApplication_Upload

       

[C#] 檢查資料夾是否存在,如不存在則新增資料夾

在儲存檔案的時候,常常會需要動態新增資料夾,但如果沒有特別處理的話,資料夾無法正常建立,所以需要用到下面的語法來檢查該資料夾是否存在,如不存在則新增。

P.S. 寫入檔案除了要注意資料夾路徑是否存在以外,還要注意該應用程式的權限問題唷!