跳到主要內容

.NET WebAPI 2 Custom Response Message

Imports System.Net
Imports System.Web.Http
Imports System.Net.Http
Imports Newtonsoft.Json
Imports System.Web.Http.Filters


''' <summary>
''' 登入驗證錯誤自訂訊息
''' </summary>
''' <remarks> </remarks>
Public Class TestAuthorizeAttribute
    Inherits AuthorizeAttribute

    Protected Overrides Sub HandleUnauthorizedRequest(actionContext As Controllers.HttpActionContext)
        MyBase.HandleUnauthorizedRequest(actionContext)

        actionContext.Response.Content = New StringContent(JsonConvert.SerializeObject(New Dictionary(Of String, String) From {{"result", "-1"}}, Formatting.Indented))

        Select Case actionContext.Response.StatusCode
            Case 401
                Dim dicError As Dictionary(Of String, String) =
                    New Dictionary(Of String, String) From {
                        {"result", "-1"},
                        {"msg", "Login First"}
                    }
                actionContext.Response.Content = New StringContent(JsonConvert.SerializeObject(dicError, Formatting.Indented))
            Case Else
                actionContext.Response.Content = New StringContent(JsonConvert.SerializeObject(New Dictionary(Of String, String) From {{"result", "-1"}}, Formatting.Indented))
        End Select
    End Sub

End Class

''' <summary>
''' 例外錯誤自訂訊息
''' </summary>
''' <remarks></remarks>
Public Class TestExceptionFilterAttribute
    Inherits ExceptionFilterAttribute

    Public Overrides Sub OnException(actionExecutedContext As HttpActionExecutedContext)
        MyBase.OnException(actionExecutedContext)
        Dim resp As New HttpResponseMessage
        resp.Content = New StringContent(JsonConvert.SerializeObject(New Dictionary(Of String, String) From {{"result", "-1"}, {"msg", "Custom Exception"}}, Formatting.Indented))
        actionExecutedContext.Response = resp
    End Sub

End Class

''' <summary>
''' 參數格式錯誤自訂訊息
''' </summary>
''' <remarks></remarks>
Public Class TestActionFilterAttribute
    Inherits ActionFilterAttribute

    Public Overrides Sub OnActionExecuting(actionContext As Controllers.HttpActionContext)
        MyBase.OnActionExecuting(actionContext)
        If Not actionContext.ModelState.IsValid Then
            Dim resp As New HttpResponseMessage
            resp.Content = New StringContent(JsonConvert.SerializeObject(New Dictionary(Of String, String) From {{"result", "-1"}, {"msg", "Format Error"}}, Formatting.Indented))
            actionContext.Response = resp
        End If
    End Sub
End Class


Public Class ValuesController
    Inherits ApiController

    ' GET api/values
    
    
    Public Function GetValues() As IEnumerable(Of String)
        Return New String() {"value1", "value2"}
    End Function

    ' GET api/values/5
    
    Public Function GetValue(ByVal id As Integer) As String
        Return "value"
    End Function

    ' POST api/values
    Public Sub PostValue( ByVal value As String)

    End Sub

    ' PUT api/values/5
    Public Sub PutValue(ByVal id As Integer,  ByVal value As String)

    End Sub

    ' DELETE api/values/5
    Public Sub DeleteValue(ByVal id As Integer)

    End Sub
End Class

實做登入機制
http://demo.tc/Post/534

留言

這個網誌中的熱門文章

刪除Office 2016金鑰的Command

前往安裝目錄 cd C:\Program Files (x86)\Microsoft Office\Office16 查詢已安裝金鑰 (會顯示金鑰末5碼) cscript OSPP.VBS /dstatus 刪除已安裝金鑰 ( XXXXX 為末5碼) cscript ospp.vbs /unpkey: XXXXX 重新啟動Office任一產品 or  安裝金鑰 cscript ospp.vbs /inpkey:XXXXX-XXXXX-XXXXX-XXXXX-XXXXX 搞定 為什麼要特地記錄2016的刪除方法呢? 因為在  程式和功能  裡, 變更 無法更改金鑰

同事的 ISABellE 囍餅開箱

今天一早到公司就被已知的紅色bomb給炸了 粉紅色的提帶、粉紅色的盒身配上紫色的盒蓋 再綁上粉紅色的緞帶 給人一股少女懷春的夢幻感 打開盒蓋後發現 第一層是滿滿的餅乾 接著… 第二層也是滿滿的餅乾 (長得和第一層差不多,索性不拍了) 挑了巧克力餅乾、大巧克力餅乾、 巧克力球…等幾個種類來吃 不算太甜 嗯…是個內外兼具的好吃禮盒~

變更 Visual Studio 連接 TFS 密碼

開啟 認證管理員 選擇 Windows 認證 編輯並變更密碼 完成~