【SQL Server | Asp.net MVC】使用WebAPI存取FileTable

【SQL Server | Asp.net MVC】使用WebAPI存取FileTable
首先,先說明一下本篇案例吧!這邊規劃了四個FileTable出來,分別存放Document、Photo、Video以及其他類型的檔案;在檔案上傳的時候就會將使用者上傳的檔案做分類管理避免所有資料都存放在同一個FileTable中,日後再尋找檔案造成不便的困擾而且更好管理這些檔案!
在小弟的案例中,會有四個不同的存放路徑,在這樣的情形要怎麼去處理檔案上傳的路徑呢?或許有人會想寫四個API然後針對四個不同的路徑去做處理,但是這樣子實在太複雜了,後續要維護部好處理,所以小弟這邊就用了一個方法,利用一個stored procedure(下方程式碼),只要傳入FileTable名稱就可以取得相對應的檔案存放路徑,這樣就可以不用寫四個相同功能的API,節省了不少時間!

...繼續閱讀 »

【SQL Server】開啟好用的 FileTable 設定

【SQL Server】開啟好用的 FileTable 設定
這邊先說明一下本身案例好了:最近公司老闆說系統需要有一個檔案上傳的功能,並且需要檔案管理方便,所以選擇了SQL Server 2012 提供的 FileTable的功能,以API對FileTable進行存取資料,在localhost端的時候可以正常的讀寫FileTable的資料,而發佈到IIS中總是出現錯誤的資訊,後來看到大頭目兼好友的Sky大哥的文章和Study4.TW的成員討論得以順利完成,而這邊紀錄一下自己所處裡的方法與程式碼與大家分享,但因篇幅問題分成兩篇來分享,本篇介紹FileTable的設定方法。
FileTable是SQL Server 2012開始提供的功能,要開啟此功能可以在SQL Server 組態管理員中開啟
【SQL Server 服務】>【SQL Server】(右鍵)>【內容】>【FileStream】

...繼續閱讀 »

【Windows Server】RRAS設定與NAT路由管理

【Windows Server】RRAS設定與路由管理
會寫這篇文章,是小弟在網路上搜尋很久,鮮少有分享這類文章的部分,希望小弟的經驗可以與大家分享!
在文章開始前,先說明一下自己的案例好了,小弟想架設一台這樣的伺服器,這台伺服器中有兩張網卡,共用一個固定IP位置,因專題所需IIS Server以及SQL Server,所以透過虛擬化的方式把IIS 以及SQL個放在不同的虛擬化主機中,並且讓一個固定IP位置可以正常的連線!而內部網路則是使用私有的IP位置處理,虛擬網卡不直接連線到外部網路,而是透過實體主機做轉址服務來達到需求
一開始,我們實體主機安裝Server 2012的作業系統,安裝完畢後我們需要啟用Hyper-V的腳色服務來實踐我想要的一個網路架構
首先點選【管理】->【新增腳色及功能】就會出現圖二

...繼續閱讀 »

【SQL Server | T-SQL】SQL Server 2008 群組累計加總

【SQL Server | T-SQL】SQL Server 2008 群組累計
有時候我們會在資料運算中加上了一個累計加總的資料欄,在SQL Server 2012中可以OVER子句來完成(SQL Server2012 OVER),而今天剛好就遇到需要計算庫存的累計數量,在網路上找了許久,2012可以用比較輕鬆的方式解決,但在2008就沒辦法使用,所以只好利用下面的方法來做到這項功能了
今天的需求是要統計同一個產品,從期初的庫存量計算時間範圍內的進貨數量及出貨數量的統計量,以下是小弟使用CTE的計算方式

...繼續閱讀 »

【SQL Server】Reporting Builder 無法連結Reporting Services

【SQL Server】Reporting Builder 無法連結Reporting Services
最近工作的地方要求系統要產出報表,而廠商提供的開發環境是VS2010以及SQL 2008,暫時無法使用SSDT-BI的工具開發,所始使用Reporting Builder 2.0
在開發的時候想直接連接Reporting Services 方便自己作業,想不到連接一直出現下列的錯誤訊息

...繼續閱讀 »

【ASP.net MVC】Cross-Site Request Forgery,CSRF/XSRF

【ASP.net MVC】為你的網站多一點點的安全性(Cross-Site Request Forgery,CSRF/XSRF)
眾多網站攻擊手法之一的CSRF,一直是網站攻擊的前幾名,在OWASP每年公布的十大攻擊手法,排名也是居高不下,至於什麼是CSRF呢?以下做個簡單的說明吧
跨站請求偽造(Cross-site Request Forgery, CSRF/XSRF)對於網站應用安全一直是個嚴重的問題,即駭客利用網站對於合法使用者的信任,以合法使用者的身分向網站發出偽造請求,並在使用者不知情的情況下執行一些惡意行為,甚至執行駭客所指定的行為。此問題的關鍵在於網站會執行該偽造請求而沒有事先證實該請求是否由合法使用者自己發出。在偵測CSRF上所遭遇的問題在於HTTP協定無法辨識那些請求是屬於合法使用者自己發出。(TWISC@NTUST網路應用安全知識庫 )
所謂知己知彼,百戰百勝!先了解攻擊的手法吧!
在使用網路銀行轉帳的時候,通常會使用POST的模式送出,但駭客發現,也可以利用GET的模式送出請求,此時駭客利用這個弱點就可以將您的資產轉入自己的

...繼續閱讀 »

【ASP.net MVC】WebSecurity的小筆記

【ASP.net MVC】揭開WebSecurity的神秘面紗!
一開始MVC中就內建了一個登入的方式,就是WebSecurity的類別;以前在做登入的時候,都會利用FormsAuthentication類別來處理登入的認證狀態,這個類別就變得很少人使用...但其實這個類別,更容易做登入登出的驗證!
傳統FormsAuthentication驗證的寫法:
如果我們改成利用WebSecurity的方法呢?
首先,我們要先將WebSecurity初始化

...繼續閱讀 »

【ADO.net | Entity SQL Language】指定的運算式必須是 CollectionType錯誤訊息

【ADO.net | Entity SQL Language】指定的運算式必須是 CollectionType錯誤訊息
有時候Linq無法動態的做出我們所需要的查詢,這時候我們就會選擇用"串"SQL語法或是Entity SQL Language的方式來做到動態的查詢
今天在組Entity SQL的查詢條件時,發生了"指定的運算式必須是 CollectionType錯誤訊息",這個訊息是主要在傳入的參數中型態有問題時,發生的錯誤訊息
原因在於,我的@Table參數,應該給他的是資料庫的Table型態,但我卻傳入了字串給他,才發生這樣的問題!
而後來因參數是由系統中給予資料,而非使用者輸入的資料,暫時使用String.Format來解決此問題!
後續再尋找是否有更好的解決辦法吧!

...繼續閱讀 »

【Study4.TW】ASP.net MVC 網頁同步遊戲開發!

【Study4.TW】ASP.net MVC 網頁同步遊戲開發!
過去在做網頁即時更新的效果,通常會利用Ajax不斷詢問伺服器,是否有更改的資料,這種做法會讓伺服器的吞吐量降低,或是利用Html 5的WebSocket來實現,但WebSocket還有很多瀏覽器不支援,要在專案中實際應用比較困難。
但現在ASP.net的框架中,有個辦法可以輕易地製作及時網頁!而且簡單製作,不需要花太多時間做微調,可以把大部分的時間在前端的呈現,而不是伺服器端的效能調整!
六月份,將由社團成員:饅頭,為大家介紹SignalR,讓您的網頁可以更具有即時性的更新喔!

...繼續閱讀 »

【SQL Server】取出群組中最後一筆資料 (雙鍵值)

【SQL Server】取出群組中最後一筆資料 (雙鍵值)
這個問題,我大約想了三四天了,今天終於讓我找的一個好的方法去解決這個問題,案例是某個客戶訂了某些產品,他最後一次交易的金額,所以要群組客戶跟產品,跟上一篇的筆記:Group中的最新一筆資料不太依樣,上一篇是依照一個單一的情況,來擷取最後一筆資料!而今天是依照兩個欄位來取得最後一筆

...繼續閱讀 »

【ASP.net MVC】【WebAPI】Post的陷阱

【ASP.net MVC】【WebAPI】Post的陷阱
本篇為甚麼叫WebAPI的陷阱呢?先說明問題案例好了
小弟因為學校作業要做一個網站,為了有更好的使用者體驗,所以所有的資料傳遞都是透過Ajax以及Signalr。而問題來了,今天在做資料新增的時候,發生了一件怪事,使用Ajax所Post到API的資料都會為null,而且使用Postman傳送也都是null值
以下是小弟一開始所寫出來的WebAPI的Code

...繼續閱讀 »

【ASP.net MVC SignalR】利用 SignalR 同步表單中的資料教學

【ASP.net MVC SignalR】利用 SignalR 同步表單中的資料教學
在寫SignalR的文章也有一段時間了,或許許多人都知道Signalr可以製作出一個同步的聊天室,但是其實在實際的專案中也可以大量應用,今天就用簡單的例子,來同步表單中相對應的input資料吧!而小弟擅長的開發模式是使用C#的MVC專案,所以以下的範例都會使用ASP.net MVC來做範例
一個簡單的範例說明:在表單上產品代號是屬於我們資料的主要索引,不可以讓使用者更改,而產品型號、產品名稱、顏色,則是可以讓使用者任意修改!在這些input上只要資料有異動,就會同步到所有使用者的畫面中,讓表單中的資料維持最新的資料!

...繼續閱讀 »

【ASP.net MVC SignalR】SignalR & MVC 防止XSS(跨網站指令)

【ASP.net MVC SignalR】SignalR防止XSS(跨網站指令)
在做web聊天室的時候,總是會遇到XSS的攻擊,要如何有效防治這類個攻擊呢?待我說明囉!!
首先,我們要在web.config中加入一段文字

加入些文字後,我們就可以直接存取AntiXssEncoder的編碼方式囉!
之後在前幾篇文章所建立的 Chat.cs檔案中,傳送訊息的部份加上了AntiXssEncoder.HtmlEnCode()的編碼

...繼續閱讀 »

【ASP.net MVC SignalR】使用SignalR實作廣播、群組特定對象傳送

【ASP.net MVC SignalR】使用SignalR實作廣播、群組特定對象傳送
在做同步網頁的時候,我們通常都是以廣播的形式去更新,畢竟我們希望讓所有用戶都可以取得最新的資訊;但有時候我們可能會遇到其他特殊的需求,部分的群組更新資訊或是某一個特定的人更新資訊(EX:檔案上傳的Process bar、兩人之間的遊戲對戰...),這時候就會用到群組的特性,或是特定對象的傳送。
廣播、群組特定對象傳送

...繼續閱讀 »

【ASP.net MVC SignalR】SignalR連接模式更改與錯誤提示

【ASP.net MVC SignalR】SignalR連接模式更改與錯誤提示
在上一篇的文末,已經有說明用NuGet下載了SignalR,在今天想做出一個可以區分群組的方法,無意間發現了可以更改SignalR的傳輸方法,先做一個小小的紀錄,避免以後忘記還需要重新尋找
Install-Package Microsoft.AspNet.SignalR (SignalR下載的 NuGet指令)
在connection起始的時候,其實可以接上一個transport的參數進去,而這個參數接收的剛好是上一篇所說的網站同步的四種方式(webSockets、longPolling、serverSentEvents、foreverFrame)
假如以WebSocket或Server-Sent Event的方法,在許多瀏覽器上會出錯,所以我們在連接的時候,需要去判斷是否成功開啟連接

...繼續閱讀 »

【ASP.net MVC | SignalR】建立RealTime的網頁(SignalR)

【ASP.net MVC】建立RealTime的網頁
之前有需要一個可以承載多人並且網頁可以即時的更新變化,過去的作法很多人是用 Ajax(Asynchronous JavaScript and XML)來實現這個功能,小弟我也不例外...,但最這個方法Server要足夠的吞吐量,也需要大量的平寬,設置的成本提高許多,萬一Server吞吐量不足,就好像我們寫DDoS 的Code攻擊自己的Server,而最近(應該有一段時間了...) 看到一個比較好的方法,SignalR這個技術,就想來試試看!
SignalR的重點是在於即時性!當伺服器端(Server)有新的資料出現時,即時向用戶端(Clinet)推送訊息

...繼續閱讀 »