瀏覽標籤:

筆記

[C#][ASP.NET WebAPI] 如何讓 WebAPI 支援 Session ?

WebAPI原本無法使用HttpContext.Current.Session["aaa"]這樣的方法來使用Session,幸好有找到解決方法可以用。

 

在檔案:~/Global.asax,內新增以下程式碼即可支援

 

參考:

 

[C#][ASP.NET WebAPI] 修改預設回傳格式為Json

最近在玩ASP.NET Web API,他不但支援Json也支援Xml,但預設回傳的格式是Xml怎麼辦?

 

檔案位置:~/App_Start/WebApiConfig.cs

 

參考:

[MSSQL] 當自動識別欄位需要Insert資料時應該怎麼辦 ?

今天在手動將MySQL資料匯入MSSQL時遇到了這個問題,但又不想將自動識別欄位取消掉,於是乎找了一下資料來解決 …

 

語法:

 

範例:

 

 

參考:

  1. 在程式開發時使用SET IDENTITY_INSERT似乎無效?
  2. SQL錯誤訊息:當IDENTITY_INSERT 設為OFF 時,無法將外顯

[C#] 利用 interface(介面) abstract(抽象) override(覆寫) inherit(繼承) 實作簡單範例

來源:

  1. (原創) interface和abstract class有何不同? (C/C++) (.NET) (C#)
  2. [C#] abstract 和 virtual 函數的差異

 

這篇真的寫得很棒,大家一定要點進去看看,並自己動手寫Code !!
而我自己寫一篇只是為了建檔,方便日後自己觀看用,裡面的Code都是基於上面教學文寫的,自己只是加了一個AutoDoor的功能而已。

 


 

  1. 建立一個abstract的Door類別,裡面有Open(開門)與Close(關門)這兩個虛擬方法可以用

     
  2. 建立一個HorizontalDoor類別,它繼承了原先的Door,所以它也有Open與Close這兩個方法可以用

     
  3. 建立一個VerticalDoor類別,它也繼承了Door,可是我在裡面override了原先的Open與Close,另外實作其方法

     
  4. 建立一個IAlarm介面,裡面定義了Alert這個方法

     
  5. 建立一個Alarm類別,它繼承了IAlarm,並在裡面實作Alert

     
  6. 建立一個AlarmDoor類別,它繼承了Door,同時在裡面使用了Alarm類別的Alert方法

     
  7. 建立一個AutoAlarmDoor類別,它繼承了AlarmDoor,並覆寫了原本的Open方法,裡面呼叫base.Open方法並接著呼叫Alert方法

     
  8. 建立一個DoorController類別,這個類別是用來控制管理所有的Door

     
  9. 完成 !!

     
  10. 執行結果
    2016-09-07 23_06_31-file____C__Users_Minsheng_Desktop_ConsoleApplication_Door_ConsoleApplication_Doo

 

  • 注意事項
    1. abstract method 不會有程式內容
    2. abstract method 繼承後,一定要 override
    3. virtual method 一定要有程式內容
    4. 宣告為 virtual 的 method,繼承後才可以進行 override
    5. 設定為 virtual 的 method,沒有一定要 override

 

[MSSQL] 使用 T-SQL 實作分頁

很多表格會遇上資料有上萬筆資料或者上千萬時的大數據,這時如果還是把所有資料撈出來在分頁的話,會造成使用者頁面讀取時間過久,更會有伺服器壓力倍增的問題,這裡提供一個SQL解決方案。

SQL如下:

執行結果:

2016-09-03 01_01_10-SQLQuery9.sql - exfast.me,6000.iPCE_Coding (shuangrain (143))_ - Microsoft SQL S

 

 

參考:

  1. How to return a page of results from SQL?
  2. Select Count(*) / Count(1) / Count(欄位名) 的差異

[C#] 複製 Model 後異動時會互相引響

有一需求必須複製一個Model,這時如果異動Model_Copy時會造成Model_Source也跟著被更動,爬文後找到了一些方法來測試,問題依然存在…

 

  1. 用等於(=)的方式取值
    • 程式碼
      2016-08-25 22_03_12-ConsoleApplication1 - Microsoft Visual Studio
    • 結果:
      2016-08-25 22_03_39-file____C__Users_Minsheng_Desktop_ConsoleApplication1_ConsoleApplication1_bin_De
  2. 用new建立新的物件的方式取值
    • 程式碼
      2016-08-25 22_06_46-ConsoleApplication1 [執行] - Microsoft Visual Studio
    • 結果
      2016-08-25 22_03_39-file____C__Users_Minsheng_Desktop_ConsoleApplication1_ConsoleApplication1_bin_De
  3. 利用LINQ的方式取值
    • 程式碼
      2016-08-25 22_08_09-ConsoleApplication1 [執行] - Microsoft Visual Studio
    • 結果
      2016-08-25 22_03_39-file____C__Users_Minsheng_Desktop_ConsoleApplication1_ConsoleApplication1_bin_De

 

最後終於找到了一個方法可以用,那就是讓Model繼承ICloneable並使用Object中的MemberwiseClone()來實作Clone(),就可以順利Copy啦!

  • 程式碼
    1. Model
      2016-08-25 22_11_30-ConsoleApplication1 [執行] - Microsoft Visual Studio
    2. 利用LINQ來呼叫Clone()方法
      2016-08-25 22_46_21-ConsoleApplication1 - Microsoft Visual Studio
  • 結果
    2016-08-25 22_15_03-file____C__Users_Minsheng_Desktop_ConsoleApplication1_ConsoleApplication1_bin_De

 

[MSSQL] SQL Server Management Studio 連線非預設 1433 port 埠號

參考:SQL Server 透過 TCP/IP 遠端連線時如何使用非 1433 埠號

 

未命名

自從把SQL Server放到公用網路上的時候,就常常被人暴力破解Try我的密碼,雖然不至於被猜到,但是看了總是不太開心,於是乎就把預設的Port修改掉了,卻發生使用SQL Server Management Studio無法連線的問題,之前用MySQL時格式不外乎就是在後面加上:port但轉來MSSQL卻發生無法連線的問題…

 

爬了一下文才發現,使用ip,port(127.0.0.1,4321)這種格式就可以正常連線囉!
2016-08-20 18_18_00-連接到伺服器

[MSSQL] SQL Server Management Studio 連線工具

來源:使用 SQL Server Management Studio 連接到 SQL Database 並執行範例 T-SQL 查詢

 

SQL Server Management Studio (SSMS) 是一個整合式環境,您可以加以利用來存取、設定、管理及開發 SQL Server 的所有元件。 SSMS 利用許多豐富的指令碼編輯器來合併一群非常廣泛的圖形工具,使所有技術層級的開發人員及管理員都能夠存取。 此版除了提升與舊版 SQL Server 之間的相容性之外,也改進了獨立 Web 安裝程式,以及 SSMS 中,當有新版本可用時的快顯通知。

 

下載 SQL Server Management Studio (SSMS)

 

筆記一下…

2016-07-31 02_52_18-Microsoft SQL Server Management Studio

[C#][ASP.NET MVC5] 繼承 AuthorizeAttribute 來實作自訂驗證

有時候會需要頁面會需要依照使用者權限的不同,可以進入的頁面也不同,在MVC裡面有預設Role與User的方式來篩選使用者,不過有時候權限分細一點時就沒辦法應付了,這個時候就需要自訂驗證了。

 

權限表單的結構資料如下:

01

  1. 先在登入成功的地方放入一段程式,來把使用者有權限進入的頁面以字串的方式存入Session

     
  2. 再來新建一個檔案名為CustomAuthorize.cs,程式碼如下:

    這邊覆寫了原本驗證的機制,改成判斷先前存入Session內的字串。
  3. 這樣就可以在Action上面加上標籤來驗證使用者權限囉!

 

 

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

參考:[C#][ASP.NET MVC]自訂AuthorizeAttribute