Jelajahi Sumber

1. enable signature verification
2. add error handler

Jessica.Tseng 5 tahun lalu
induk
melakukan
4beca88a9e

+ 4 - 2
EVCB_OCPP.WEBAPI/App_Start/WebApiConfig.cs

@@ -1,7 +1,9 @@
-using System;
+using EVCB_OCPP.WEBAPI.Handlers;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Web.Http;
+using System.Web.Http.ExceptionHandling;
 
 namespace EVCB_OCPP.WEBAPI
 {
@@ -10,7 +12,7 @@ namespace EVCB_OCPP.WEBAPI
         public static void Register(HttpConfiguration config)
         {
             // Web API 設定和服務
-
+            config.Services.Replace(typeof(IExceptionHandler), new GlobalExceptionHandler());
             // Web API 路由
             config.MapHttpAttributeRoutes();
 

+ 61 - 61
EVCB_OCPP.WEBAPI/Controllers/InternalV1Controller.cs

@@ -23,7 +23,7 @@ using StartTransactionRequest = EVCB_OCPP.WEBAPI.Models.WebAPI.StartTransactionR
 namespace EVCB_OCPP.WEBAPI.Controllers
 {
     [RoutePrefix("api/v1/ocpp16")]
-    //[InernalAuthentication]
+    [InernalAuthentication]
     public class InternalV1Controller : ApiController
     {
 
@@ -42,12 +42,12 @@ namespace EVCB_OCPP.WEBAPI.Controllers
 
                 if (!IsValidEnum<Internal_Actions>(OrderNo) || string.IsNullOrEmpty(ChargeBoxId))
                 {
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_PARAMETER_OUTOFRANGE_INCORRECT });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_PARAMETER_OUTOFRANGE_INCORRECT });
                 }
 
                 if (!chargePointService.Exists(ChargeBoxId))
                 {
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
                 }
 
                 ServerTriggerService triggerService = new ServerTriggerService();
@@ -55,10 +55,10 @@ namespace EVCB_OCPP.WEBAPI.Controllers
 
                 if (excution == null)
                 {
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_DATA_NOTFOUND });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_DATA_NOTFOUND });
                 }
 
-                result.Message = JsonConvert.SerializeObject(excution, EVCBlConfiguration.JSONSERIALIZER_FORMAT);
+                result.Message = JsonConvert.SerializeObject(excution, EVCBConfiguration.JSONSERIALIZER_FORMAT);
                 statusCode = HttpStatusCode.OK;
 
             }
@@ -67,7 +67,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
 
                 return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse()
                 {
-                    Message = string.Format(EVCBlConfiguration.ERRORMESSAGE_FORMAT, EVCBlConfiguration.ERROR_MSG_UNEXPECTEDERROR, "CommandofExecution", ex.ToString())
+                    Message = string.Format(EVCBConfiguration.ERRORMESSAGE_FORMAT, EVCBConfiguration.ERROR_MSG_UNEXPECTEDERROR, "CommandofExecution", ex.ToString())
                 });
             }
 
@@ -91,7 +91,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
                 if (!chargePointService.IsOnline(ChargeBoxId))
                 {
 
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
                 }
 
                 //check parameter
@@ -100,7 +100,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
                     !(Availiability.AvailabilityType > 0 && Availiability.AvailabilityType < 3))
                 {
 
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_PARAMETER_OUTOFRANGE_INCORRECT });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_PARAMETER_OUTOFRANGE_INCORRECT });
                 }
 
                 //create reqest
@@ -126,7 +126,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
 
                 return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse()
                 {
-                    Message = string.Format(EVCBlConfiguration.ERRORMESSAGE_FORMAT, EVCBlConfiguration.ERROR_MSG_UNEXPECTEDERROR, "Availability", ex.ToString())
+                    Message = string.Format(EVCBConfiguration.ERRORMESSAGE_FORMAT, EVCBConfiguration.ERROR_MSG_UNEXPECTEDERROR, "Availability", ex.ToString())
                 });
             }
 
@@ -152,7 +152,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
                 if (!chargePointService.IsOnline(ChargeBoxId))
                 {
 
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
                 }
 
                 //check parameter
@@ -160,7 +160,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
                     (string.IsNullOrEmpty(SingleConfiguration.Key) || string.IsNullOrEmpty(SingleConfiguration.Value)))
                 {
 
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_PARAMETER_OUTOFRANGE_INCORRECT });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_PARAMETER_OUTOFRANGE_INCORRECT });
                 }
 
                 //create reqest
@@ -184,7 +184,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
 
                 return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse()
                 {
-                    Message = string.Format(EVCBlConfiguration.ERRORMESSAGE_FORMAT, EVCBlConfiguration.ERROR_MSG_UNEXPECTEDERROR, "ChangeConfiguration", ex.ToString())
+                    Message = string.Format(EVCBConfiguration.ERRORMESSAGE_FORMAT, EVCBConfiguration.ERROR_MSG_UNEXPECTEDERROR, "ChangeConfiguration", ex.ToString())
                 });
             }
 
@@ -208,14 +208,14 @@ namespace EVCB_OCPP.WEBAPI.Controllers
                 if (!chargePointService.IsOnline(ChargeBoxId))
                 {
 
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
                 }
 
                 //check parameter
                 if (string.IsNullOrEmpty(Keys) || Keys.Split('/').Count() > 20)
                 {
 
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_PARAMETER_OUTOFRANGE_INCORRECT });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_PARAMETER_OUTOFRANGE_INCORRECT });
                 }
 
                 //create reqest
@@ -238,7 +238,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
 
                 return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse()
                 {
-                    Message = string.Format(EVCBlConfiguration.ERRORMESSAGE_FORMAT, EVCBlConfiguration.ERROR_MSG_UNEXPECTEDERROR, "GetConfiguration", ex.ToString())
+                    Message = string.Format(EVCBConfiguration.ERRORMESSAGE_FORMAT, EVCBConfiguration.ERROR_MSG_UNEXPECTEDERROR, "GetConfiguration", ex.ToString())
                 });
             }
 
@@ -263,7 +263,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
                 if (!chargePointService.IsOnline(ChargeBoxId))
                 {
 
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
                 }
 
                 //check parameter
@@ -273,7 +273,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
                     || (!string.IsNullOrEmpty(StopTime) && !DateTime.TryParse(StopTime, out vaildtime)))
                 {
 
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_PARAMETER_OUTOFRANGE_INCORRECT });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_PARAMETER_OUTOFRANGE_INCORRECT });
                 }
 
                 //create reqest
@@ -301,7 +301,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
 
                 return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse()
                 {
-                    Message = string.Format(EVCBlConfiguration.ERRORMESSAGE_FORMAT, EVCBlConfiguration.ERROR_MSG_UNEXPECTEDERROR, "GetDiagonostics", ex.ToString())
+                    Message = string.Format(EVCBConfiguration.ERRORMESSAGE_FORMAT, EVCBConfiguration.ERROR_MSG_UNEXPECTEDERROR, "GetDiagonostics", ex.ToString())
                 });
             }
 
@@ -326,7 +326,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
                 if (!chargePointService.IsOnline(ChargeBoxId))
                 {
 
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
                 }
 
                 if (!AddCommandtoServer(ChargeBoxId, uuid, new GetLocalListVersionRequest()))
@@ -341,7 +341,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
             catch (Exception ex)
             {
 
-                return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = string.Format(EVCBlConfiguration.ERRORMESSAGE_FORMAT, EVCBlConfiguration.ERROR_MSG_UNEXPECTEDERROR, "GetLocallistversion", ex.ToString()) });
+                return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = string.Format(EVCBConfiguration.ERRORMESSAGE_FORMAT, EVCBConfiguration.ERROR_MSG_UNEXPECTEDERROR, "GetLocallistversion", ex.ToString()) });
             }
 
             return Request.CreateResponse(statusCode, result);
@@ -363,7 +363,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
                 if (!chargePointService.IsOnline(ChargeBoxId))
                 {
 
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
                 }
 
                 //check parameter
@@ -375,13 +375,13 @@ namespace EVCB_OCPP.WEBAPI.Controllers
                      !(StartTransaction.ChargingProfile != null && StartTransaction.ChargingProfile.chargingSchedule != null && IsValidEnum<ChargingRateUnitType>((int)StartTransaction.ChargingProfile.chargingSchedule.chargingRateUnit)))
 
                 {
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_PARAMETER_OUTOFRANGE_INCORRECT });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_PARAMETER_OUTOFRANGE_INCORRECT });
                 }
 
                 if (StartTransaction.ConnectorId.HasValue && chargePointService.GetChargePointCurrentSatus(ChargeBoxId, StartTransaction.ConnectorId.Value).HasValue &&
                     chargePointService.GetChargePointCurrentSatus(ChargeBoxId, StartTransaction.ConnectorId.Value).Value != ChargePointStatus.Available)
                 {
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_CONNECTOR_ISNOT_AVAILIABLE_MODE });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_CONNECTOR_ISNOT_AVAILIABLE_MODE });
                 }
                 else
                 {
@@ -427,7 +427,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
 
                 return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse()
                 {
-                    Message = string.Format(EVCBlConfiguration.ERRORMESSAGE_FORMAT, EVCBlConfiguration.ERROR_MSG_UNEXPECTEDERROR, "StopTransaction", ex.ToString())
+                    Message = string.Format(EVCBConfiguration.ERRORMESSAGE_FORMAT, EVCBConfiguration.ERROR_MSG_UNEXPECTEDERROR, "StopTransaction", ex.ToString())
                 });
             }
 
@@ -450,13 +450,13 @@ namespace EVCB_OCPP.WEBAPI.Controllers
                 if (!chargePointService.IsOnline(ChargeBoxId))
                 {
 
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
                 }
 
                 if (!chargePointService.GetChargePointCurrentSatus(ChargeBoxId, TransactionId % 10).HasValue)
                 {
                     //offline
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_CONNECTOR_ISNOT_AVAILIABLE_MODE });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_CONNECTOR_ISNOT_AVAILIABLE_MODE });
                 }
                 else
                 {
@@ -475,7 +475,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
                     }
                     else
                     {
-                        return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_SESSION_WAS_FINISHED });
+                        return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_SESSION_WAS_FINISHED });
                     }
                 }
 
@@ -488,7 +488,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
 
                 return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse()
                 {
-                    Message = string.Format(EVCBlConfiguration.ERRORMESSAGE_FORMAT, EVCBlConfiguration.ERROR_MSG_UNEXPECTEDERROR, "StopTransaction", ex.ToString())
+                    Message = string.Format(EVCBConfiguration.ERRORMESSAGE_FORMAT, EVCBConfiguration.ERROR_MSG_UNEXPECTEDERROR, "StopTransaction", ex.ToString())
                 });
             }
 
@@ -510,7 +510,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
 
                 if (!chargePointService.IsOnline(ChargeBoxId))
                 {
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
                 }
 
 
@@ -523,14 +523,14 @@ namespace EVCB_OCPP.WEBAPI.Controllers
                     !DateTime.TryParse(ReserveNow.ExpiryDate, out expiryDate))
                 {
 
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_PARAMETER_OUTOFRANGE_INCORRECT });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_PARAMETER_OUTOFRANGE_INCORRECT });
                 }
 
                 expiryDate = DateTime.SpecifyKind(DateTime.Parse(ReserveNow.ExpiryDate), DateTimeKind.Utc);
 
                 if (DateTime.Compare(DateTime.UtcNow, expiryDate) >= 0)
                 {
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_PARAMETER_OUTOFRANGE_INCORRECT });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_PARAMETER_OUTOFRANGE_INCORRECT });
                 }
 
                 var connectorStatus = chargePointService.GetChargePointCurrentSatus(ChargeBoxId, ReserveNow.ConnectorId);
@@ -560,7 +560,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
                 }
                 else
                 {
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_CONNECTOR_ISNOT_AVAILIABLE_MODE });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_CONNECTOR_ISNOT_AVAILIABLE_MODE });
                 }
 
 
@@ -571,7 +571,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
 
                 return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse()
                 {
-                    Message = string.Format(EVCBlConfiguration.ERRORMESSAGE_FORMAT, EVCBlConfiguration.ERROR_MSG_UNEXPECTEDERROR, "ReserveNow", ex.ToString())
+                    Message = string.Format(EVCBConfiguration.ERRORMESSAGE_FORMAT, EVCBConfiguration.ERROR_MSG_UNEXPECTEDERROR, "ReserveNow", ex.ToString())
                 });
             }
 
@@ -594,7 +594,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
                 if (!chargePointService.IsOnline(ChargeBoxId))
                 {
 
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
                 }
 
                 var connectorStatus = chargePointService.GetChargePointCurrentSatus(ChargeBoxId, 0);
@@ -619,7 +619,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
                 }
                 else
                 {
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_CONNECTOR_ISNOT_AVAILIABLE_MODE });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_CONNECTOR_ISNOT_AVAILIABLE_MODE });
                 }
 
 
@@ -629,7 +629,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
 
                 return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse()
                 {
-                    Message = string.Format(EVCBlConfiguration.ERRORMESSAGE_FORMAT, EVCBlConfiguration.ERROR_MSG_UNEXPECTEDERROR, "CancelResrvation", ex.ToString())
+                    Message = string.Format(EVCBConfiguration.ERRORMESSAGE_FORMAT, EVCBConfiguration.ERROR_MSG_UNEXPECTEDERROR, "CancelResrvation", ex.ToString())
                 });
             }
 
@@ -652,7 +652,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
                 if (!chargePointService.IsOnline(ChargeBoxId))
                 {
 
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
                 }
 
                 var connectorStatus = chargePointService.GetChargePointCurrentSatus(ChargeBoxId, 0);
@@ -677,7 +677,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
                 }
                 else
                 {
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_CONNECTOR_ISNOT_AVAILIABLE_MODE });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_CONNECTOR_ISNOT_AVAILIABLE_MODE });
                 }
 
 
@@ -687,7 +687,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
 
                 return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse()
                 {
-                    Message = string.Format(EVCBlConfiguration.ERRORMESSAGE_FORMAT, EVCBlConfiguration.ERROR_MSG_UNEXPECTEDERROR, "Reset", ex.ToString())
+                    Message = string.Format(EVCBConfiguration.ERRORMESSAGE_FORMAT, EVCBConfiguration.ERROR_MSG_UNEXPECTEDERROR, "Reset", ex.ToString())
                 });
             }
 
@@ -710,7 +710,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
                 if (!chargePointService.IsOnline(ChargeBoxId))
                 {
 
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
                 }
 
                 //check parameter
@@ -719,7 +719,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
                     || (LocalList.LocalAuthorizationList != null && LocalList.LocalAuthorizationList.Count == 0))
                 {
 
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_PARAMETER_OUTOFRANGE_INCORRECT });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_PARAMETER_OUTOFRANGE_INCORRECT });
                 }
 
                 bool badRequest = false;
@@ -734,7 +734,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
 
                     if (badRequest)
                     {
-                        return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_PARAMETER_OUTOFRANGE_INCORRECT });
+                        return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_PARAMETER_OUTOFRANGE_INCORRECT });
                     }
                     localAuthorizationList.Add(new AuthorizationData()
                     {
@@ -770,7 +770,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
 
                 return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse()
                 {
-                    Message = string.Format(EVCBlConfiguration.ERRORMESSAGE_FORMAT, EVCBlConfiguration.ERROR_MSG_UNEXPECTEDERROR, "ClearCache", ex.ToString())
+                    Message = string.Format(EVCBConfiguration.ERRORMESSAGE_FORMAT, EVCBConfiguration.ERROR_MSG_UNEXPECTEDERROR, "ClearCache", ex.ToString())
                 });
             }
 
@@ -794,7 +794,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
                 if (!chargePointService.IsOnline(ChargeBoxId))
                 {
 
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
                 }
 
                 var connectorStatus = chargePointService.GetChargePointCurrentSatus(ChargeBoxId, 0);
@@ -812,7 +812,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
                 }
                 else
                 {
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_CONNECTOR_ISNOT_AVAILIABLE_MODE });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_CONNECTOR_ISNOT_AVAILIABLE_MODE });
                 }
 
 
@@ -822,7 +822,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
 
                 return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse()
                 {
-                    Message = string.Format(EVCBlConfiguration.ERRORMESSAGE_FORMAT, EVCBlConfiguration.ERROR_MSG_UNEXPECTEDERROR, "ClearCache", ex.ToString())
+                    Message = string.Format(EVCBConfiguration.ERRORMESSAGE_FORMAT, EVCBConfiguration.ERROR_MSG_UNEXPECTEDERROR, "ClearCache", ex.ToString())
                 });
             }
 
@@ -846,7 +846,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
                 if (!chargePointService.IsOnline(ChargeBoxId))
                 {
 
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
                 }
 
                 //check parameter
@@ -858,7 +858,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
                   !(ChargingProfile.ChargingProfile != null && IsValidEnum<ChargingProfilePurposeType>((int)ChargingProfile.ChargingProfile.chargingProfilePurpose)) ||
                   !(ChargingProfile.ChargingProfile != null && ChargingProfile.ChargingProfile.chargingSchedule != null && IsValidEnum<ChargingRateUnitType>((int)ChargingProfile.ChargingProfile.chargingSchedule.chargingRateUnit)))
                 {
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_PARAMETER_OUTOFRANGE_INCORRECT });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_PARAMETER_OUTOFRANGE_INCORRECT });
                 }
 
                 var request = new SetChargingProfileRequest()
@@ -901,7 +901,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
 
                 return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse()
                 {
-                    Message = string.Format(EVCBlConfiguration.ERRORMESSAGE_FORMAT, EVCBlConfiguration.ERROR_MSG_UNEXPECTEDERROR, "StopTransaction", ex.ToString())
+                    Message = string.Format(EVCBConfiguration.ERRORMESSAGE_FORMAT, EVCBConfiguration.ERROR_MSG_UNEXPECTEDERROR, "StopTransaction", ex.ToString())
                 });
             }
 
@@ -924,7 +924,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
                 if (!chargePointService.IsOnline(ChargeBoxId))
                 {
 
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
                 }
 
                 var connectorStatus = chargePointService.GetChargePointCurrentSatus(ChargeBoxId, 0);
@@ -950,7 +950,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
                 }
                 else
                 {
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_CONNECTOR_ISNOT_AVAILIABLE_MODE });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_CONNECTOR_ISNOT_AVAILIABLE_MODE });
                 }
 
 
@@ -960,7 +960,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
 
                 return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse()
                 {
-                    Message = string.Format(EVCBlConfiguration.ERRORMESSAGE_FORMAT, EVCBlConfiguration.ERROR_MSG_UNEXPECTEDERROR, "ClearChargingProfile", ex.ToString())
+                    Message = string.Format(EVCBConfiguration.ERRORMESSAGE_FORMAT, EVCBConfiguration.ERROR_MSG_UNEXPECTEDERROR, "ClearChargingProfile", ex.ToString())
                 });
             }
 
@@ -983,14 +983,14 @@ namespace EVCB_OCPP.WEBAPI.Controllers
                 if (!chargePointService.IsOnline(ChargeBoxId))
                 {
 
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
                 }
 
                 //check parameter
                 if (triggerMessage == null || !(triggerMessage.TriggerType >= 1 && triggerMessage.TriggerType <= (int)MessageTrigger.StatusNotification))
                 {
 
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_PARAMETER_OUTOFRANGE_INCORRECT });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_PARAMETER_OUTOFRANGE_INCORRECT });
                 }
 
                 //create reqest
@@ -1016,7 +1016,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
 
                 return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse()
                 {
-                    Message = string.Format(EVCBlConfiguration.ERRORMESSAGE_FORMAT, EVCBlConfiguration.ERROR_MSG_UNEXPECTEDERROR, "TriggerMessage", ex.ToString())
+                    Message = string.Format(EVCBConfiguration.ERRORMESSAGE_FORMAT, EVCBConfiguration.ERROR_MSG_UNEXPECTEDERROR, "TriggerMessage", ex.ToString())
                 });
             }
 
@@ -1039,14 +1039,14 @@ namespace EVCB_OCPP.WEBAPI.Controllers
                 if (!chargePointService.IsOnline(ChargeBoxId))
                 {
 
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
                 }
 
                 //check parameter
                 if (ConnectorId < 0)
                 {
 
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_PARAMETER_OUTOFRANGE_INCORRECT });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_PARAMETER_OUTOFRANGE_INCORRECT });
                 }
 
                 //create reqest
@@ -1071,7 +1071,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
 
                 return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse()
                 {
-                    Message = string.Format(EVCBlConfiguration.ERRORMESSAGE_FORMAT, EVCBlConfiguration.ERROR_MSG_UNEXPECTEDERROR, "UnlockConnector", ex.ToString())
+                    Message = string.Format(EVCBConfiguration.ERRORMESSAGE_FORMAT, EVCBConfiguration.ERROR_MSG_UNEXPECTEDERROR, "UnlockConnector", ex.ToString())
                 });
             }
 
@@ -1096,7 +1096,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
                 if (!chargePointService.IsOnline(ChargeBoxId))
                 {
 
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
                 }
 
                 //check parameter
@@ -1104,7 +1104,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
                     !(ChargingRateUnit != -1 && ChargingRateUnit > 0 && ChargingRateUnit < 3))
                 {
 
-                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_PARAMETER_OUTOFRANGE_INCORRECT });
+                    return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_PARAMETER_OUTOFRANGE_INCORRECT });
                 }
 
 
@@ -1127,7 +1127,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
             catch (Exception ex)
             {
 
-                return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = string.Format(EVCBlConfiguration.ERRORMESSAGE_FORMAT, EVCBlConfiguration.ERROR_MSG_UNEXPECTEDERROR, "GetLocallistversion", ex.ToString()) });
+                return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Message = string.Format(EVCBConfiguration.ERRORMESSAGE_FORMAT, EVCBConfiguration.ERROR_MSG_UNEXPECTEDERROR, "GetLocallistversion", ex.ToString()) });
             }
 
             return Request.CreateResponse(statusCode, result);

+ 1 - 1
EVCB_OCPP.WEBAPI/EVCBConfiguration.cs

@@ -6,7 +6,7 @@ using System.Web;
 
 namespace EVCB_OCPP.WEBAPI
 {
-    public static class EVCBlConfiguration
+    public static class EVCBConfiguration
     {
         public static readonly int DB_DefaultConnectionTimeout = 60;
 

+ 5 - 1
EVCB_OCPP.WEBAPI/EVCB_OCPP.WEBAPI.csproj

@@ -169,6 +169,7 @@
     </Compile>
     <Compile Include="EVCBConfiguration.cs" />
     <Compile Include="Handlers\APILogHandler.cs" />
+    <Compile Include="Handlers\GlobalExceptionHandler .cs" />
     <Compile Include="Handlers\InernalAuthentication.cs" />
     <Compile Include="Models\WebAPI\AvailiabilityRequest.cs" />
     <Compile Include="Models\WebAPI\ComandExcution.cs" />
@@ -218,13 +219,16 @@
     <Content Include="Areas\HelpPage\Views\Help\DisplayTemplates\CollectionModelDescription.cshtml" />
     <Content Include="Areas\HelpPage\Views\Help\DisplayTemplates\ApiGroup.cshtml" />
     <Content Include="Areas\HelpPage\Views\Help\Api.cshtml" />
+    <None Include="Properties\PublishProfiles\FolderProfile.pubxml" />
     <None Include="Scripts\jquery-3.3.1.intellisense.js" />
     <Content Include="Scripts\jquery-3.3.1.js" />
     <Content Include="Scripts\jquery-3.3.1.min.js" />
     <Content Include="Scripts\jquery-3.3.1.slim.js" />
     <Content Include="Scripts\jquery-3.3.1.slim.min.js" />
     <Content Include="Scripts\modernizr-2.8.3.js" />
-    <Content Include="Web.config" />
+    <Content Include="Web.config">
+      <SubType>Designer</SubType>
+    </Content>
     <Content Include="Web.Debug.config">
       <DependentUpon>Web.config</DependentUpon>
     </Content>

+ 2 - 0
EVCB_OCPP.WEBAPI/Global.asax.cs

@@ -19,5 +19,7 @@ namespace EVCB_OCPP.WEBAPI
             RouteConfig.RegisterRoutes(RouteTable.Routes);
             BundleConfig.RegisterBundles(BundleTable.Bundles);
         }
+
+     
     }
 }

+ 132 - 1
EVCB_OCPP.WEBAPI/Handlers/APILogHandler.cs

@@ -1,13 +1,144 @@
-using System;
+using EVCB_OCPP.WEBAPI.Models.WebAPI;
+using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Net;
 using System.Net.Http;
+using System.Threading;
+using System.Threading.Tasks;
 using System.Web;
 
 namespace EVCB_OCPP.WEBAPI.Handlers
 {
     public class APILogHandler : DelegatingHandler
     {
+        public class ApiLogHandler : DelegatingHandler
+        {
+            //   private NLog.ILogger logger = LogManager.GetCurrentClassLogger();
+         //   private string portal_connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ProtalConnection"].ConnectionString;
 
+               
+
+            protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
+            {
+                string uri = request.RequestUri.ToString();
+
+
+                if (request.Content != null)
+                {
+                    await request.Content.ReadAsStringAsync()
+                        .ContinueWith(task =>
+                        {
+
+                            //  apiLogEntry.RequestContentBody = task.Result;
+                        }, cancellationToken);
+                }
+
+
+                return await base.SendAsync(request, cancellationToken)
+                    .ContinueWith(task =>
+                    {
+                        //Guid id = Guid.NewGuid();
+
+                        var response = task.Result;
+
+                        // Update the API log entry with response info
+                        if (response.StatusCode == System.Net.HttpStatusCode.InternalServerError)
+                        {
+                            var result = new ErrorResponse {  Message = EVCBConfiguration.ERROR_MSG_UNEXPECTEDERROR };
+                            response = request.CreateResponse(HttpStatusCode.InternalServerError, result);
+                            //apiLogEntry.ErrorOn = DateTime.Now;
+                            //apiLogEntry.ErrorMsg = response.Content.ReadAsStringAsync().Result;
+
+                            //if (response.Content != null)
+                            //{
+
+                            //    apiLogEntry.ResponseContentBody = response.Content.ReadAsStringAsync().Result;
+                            //    apiLogEntry.ResponseContentType = response.Content.Headers.ContentType.MediaType;
+                            //    apiLogEntry.ResponseHeaders = WebApiHelper.SerializeHeaders(response.Content.Headers);
+                            //}
+
+                        }
+                        else
+                        {
+                            //if (response.Content != null)
+                            //{
+
+                            //    apiLogEntry.ResponseContentBody = response.Content.ReadAsStringAsync().Result;
+                            //    apiLogEntry.ResponseContentType = response.Content.Headers.ContentType.MediaType;
+                            //    apiLogEntry.ResponseHeaders = WebApiHelper.SerializeHeaders(response.Content.Headers);
+                            //}
+                        }
+                        //    apiLogEntry.ResponseStatusCode = (int)response.StatusCode;
+                        //    apiLogEntry.ResponseTimestamp = DateTime.Now;
+
+                        //// TODO: Save the API log entry to the database
+
+                        //db.ApiLogEntry.Add(apiLogEntry);
+                        //    db.SaveChanges();
+
+                        return response;
+                    }, cancellationToken);
+            }
+
+            //private ApiLogEntry CreateApiLogEntryWithRequestData(HttpRequestMessage request)
+            //{
+            //    try
+            //    {
+            //        var context = ((HttpContextBase)request.Properties["MS_HttpContext"]);
+            //        var routeData = request.GetRouteData();
+
+            //        return new ApiLogEntry
+            //        {
+            //            Application = "[Api]",
+            //            User = context.User.Identity.Name,
+            //            Machine = Environment.MachineName,
+            //            RequestContentType = context.Request.ContentType,
+            //            RequestRouteTemplate = routeData.Route.RouteTemplate,
+            //            RequestRouteData = WebApiHelper.SerializeRouteData(routeData),
+            //            RequestIpAddress = context.Request.UserHostAddress,
+            //            RequestMethod = request.Method.Method,
+            //            RequestHeaders = WebApiHelper.SerializeHeaders(request.Headers),
+            //            RequestTimestamp = DateTime.Now,
+            //            RequestUri = request.RequestUri.ToString()
+            //        };
+            //    }
+            //    catch (Exception ex)
+            //    {
+            //        logger.Debug(" " + ex.ToString());
+            //        return null;
+            //    }
+
+            //}
+
+            //private ApiLogEntry CreateApiLogEntryWithRequestData_Temp(HttpRequestMessage request)
+            //{
+            //    try
+            //    {
+            //        var context = ((HttpContextBase)request.Properties["MS_HttpContext"]);
+            //        var routeData = request.GetRouteData();
+
+            //        return new ApiLogEntry
+            //        {
+            //            Application = "[Api]",
+            //            User = context.User.Identity.Name,
+            //            Machine = Environment.MachineName,
+            //            RequestContentType = context.Request.ContentType,
+            //            RequestRouteTemplate = routeData.Route.RouteTemplate,
+            //            RequestIpAddress = context.Request.UserHostAddress,
+            //            RequestMethod = request.Method.Method,
+            //            RequestHeaders = WebApiHelper.SerializeHeaders(request.Headers),
+            //            RequestTimestamp = DateTime.Now,
+            //            RequestUri = request.RequestUri.ToString()
+            //        };
+            //    }
+            //    catch (Exception ex)
+            //    {
+            //        logger.Debug("11111 " + ex.ToString());
+            //        return null;
+            //    }
+
+            //}
+        }
     }
 }

+ 21 - 0
EVCB_OCPP.WEBAPI/Handlers/GlobalExceptionHandler .cs

@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.Http.ExceptionHandling;
+
+namespace EVCB_OCPP.WEBAPI.Handlers
+{
+    public class GlobalExceptionHandler: ExceptionHandler
+    {
+        public override void Handle(ExceptionHandlerContext context)
+        {
+            if(ShouldHandle(context))
+            {
+
+            }
+        }
+
+      
+    }
+}

+ 14 - 14
EVCB_OCPP.WEBAPI/Handlers/InernalAuthentication.cs

@@ -22,22 +22,22 @@ namespace EVCB_OCPP.WEBAPI.Handlers
         public Task<HttpResponseMessage> ExecuteAuthorizationFilterAsync(HttpActionContext actionContext, CancellationToken cancellationToken, Func<Task<HttpResponseMessage>> continuation)
         {
             HttpStatusCode _status = HttpStatusCode.Unauthorized;
-            ErrorResponse _errorResponse = new ErrorResponse() { Message = EVCBlConfiguration.ERROR_MSG_INVALIDHEADER };
+            ErrorResponse _errorResponse = new ErrorResponse() { Message = EVCBConfiguration.ERROR_MSG_INVALIDHEADER };
 
             try
             {
                 string formatMsg = "";
                 if (CheckHeaders(actionContext,out formatMsg))
                 {
-                    string timestamp = actionContext.Request.Headers.GetValues(EVCBlConfiguration.Header_Timestamp).FirstOrDefault();
+                    string timestamp = actionContext.Request.Headers.GetValues(EVCBConfiguration.Header_Timestamp).FirstOrDefault();
 
                     if (IsExpiryTime(timestamp))
                     {
-                        _errorResponse.Message = EVCBlConfiguration.ERROR_MSG_INVALIDTIMESTAMP;
+                        _errorResponse.Message = EVCBConfiguration.ERROR_MSG_INVALIDTIMESTAMP;
                     }
                     else
                     {
-                        string partnerId = actionContext.Request.Headers.GetValues(EVCBlConfiguration.Header_PartnerId).FirstOrDefault();
+                        string partnerId = actionContext.Request.Headers.GetValues(EVCBConfiguration.Header_PartnerId).FirstOrDefault();
                         string key = new CustomerService().GetAPIKey(new Guid(partnerId));
 
                         if (IsPass(actionContext, key))
@@ -52,7 +52,7 @@ namespace EVCB_OCPP.WEBAPI.Handlers
                         }
                         else
                         {
-                            _errorResponse.Message = EVCBlConfiguration.ERROR_MSG_INVALIDSIGNATURE;
+                            _errorResponse.Message = EVCBConfiguration.ERROR_MSG_INVALIDSIGNATURE;
                         }
                     }
 
@@ -65,7 +65,7 @@ namespace EVCB_OCPP.WEBAPI.Handlers
             }
             catch (Exception ex)
             {
-                _errorResponse.Message = string.Format(EVCBlConfiguration.ERRORMESSAGE_FORMAT, EVCBlConfiguration.ERROR_MSG_UNEXPECTEDERROR, "InernalAuthentication", ex.ToString());
+                _errorResponse.Message = string.Format(EVCBConfiguration.ERRORMESSAGE_FORMAT, EVCBConfiguration.ERROR_MSG_UNEXPECTEDERROR, "InernalAuthentication", ex.ToString());
             }
 
 
@@ -84,9 +84,9 @@ namespace EVCB_OCPP.WEBAPI.Handlers
         private bool IsPass(HttpActionContext actionContext, string key)
         {
             bool authenticated = false;
-            string timestamp = actionContext.Request.Headers.GetValues(EVCBlConfiguration.Header_Timestamp).FirstOrDefault();
-            string partnerId = actionContext.Request.Headers.GetValues(EVCBlConfiguration.Header_PartnerId).FirstOrDefault();
-            string signature = actionContext.Request.Headers.GetValues(EVCBlConfiguration.Header_Signature).FirstOrDefault();
+            string timestamp = actionContext.Request.Headers.GetValues(EVCBConfiguration.Header_Timestamp).FirstOrDefault();
+            string partnerId = actionContext.Request.Headers.GetValues(EVCBConfiguration.Header_PartnerId).FirstOrDefault();
+            string signature = actionContext.Request.Headers.GetValues(EVCBConfiguration.Header_Signature).FirstOrDefault();
 
 
             Task<string> content = actionContext.Request.Content.ReadAsStringAsync();
@@ -113,12 +113,12 @@ namespace EVCB_OCPP.WEBAPI.Handlers
         {
             formatMessage = string.Empty;
 
-            if (actionContext.Request.Headers.Contains(EVCBlConfiguration.Header_PartnerId)             
-               && actionContext.Request.Headers.Contains(EVCBlConfiguration.Header_Signature)
-               && actionContext.Request.Headers.Contains(EVCBlConfiguration.Header_Timestamp))
+            if (actionContext.Request.Headers.Contains(EVCBConfiguration.Header_PartnerId)             
+               && actionContext.Request.Headers.Contains(EVCBConfiguration.Header_Signature)
+               && actionContext.Request.Headers.Contains(EVCBConfiguration.Header_Timestamp))
             {
-                string timestamp = actionContext.Request.Headers.GetValues(EVCBlConfiguration.Header_Timestamp).FirstOrDefault();              
-                string PartnerId = actionContext.Request.Headers.GetValues(EVCBlConfiguration.Header_PartnerId).FirstOrDefault();
+                string timestamp = actionContext.Request.Headers.GetValues(EVCBConfiguration.Header_Timestamp).FirstOrDefault();              
+                string PartnerId = actionContext.Request.Headers.GetValues(EVCBConfiguration.Header_PartnerId).FirstOrDefault();
 
                 long _timestamp = 0;
                 if (!long.TryParse(timestamp, out _timestamp))

+ 18 - 0
EVCB_OCPP.WEBAPI/Properties/PublishProfiles/FolderProfile.pubxml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+此檔案由您的 Web 專案發佈/封裝處理序使用。您可以藉由編輯此 MSBuild 檔案,
+自訂此處理序的行為。若要深入了解,請前往 https://go.microsoft.com/fwlink/?LinkID=208121。 
+-->
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <WebPublishMethod>FileSystem</WebPublishMethod>
+    <PublishProvider>FileSystem</PublishProvider>
+    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
+    <LastUsedPlatform>Any CPU</LastUsedPlatform>
+    <SiteUrlToLaunchAfterPublish />
+    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
+    <ExcludeApp_Data>False</ExcludeApp_Data>
+    <publishUrl>bin\Release\Publish</publishUrl>
+    <DeleteExistingFiles>False</DeleteExistingFiles>
+  </PropertyGroup>
+</Project>

+ 4 - 4
EVCB_OCPP.WEBAPI/Services/ChargePointService.cs

@@ -33,7 +33,7 @@ namespace EVCB_OCPP.WEBAPI.Services
                 using (SqlConnection conn = new SqlConnection(mainConnectionString))
                 {
                     string strSql = "Select GunAmt from [dbo].[Machine] where ChargeBoxId=@ChargeBoxId; ";
-                    count = conn.ExecuteScalarAsync<int>(strSql, parameters, null, EVCBlConfiguration.DB_DefaultConnectionTimeout).Result;
+                    count = conn.ExecuteScalarAsync<int>(strSql, parameters, null, EVCBConfiguration.DB_DefaultConnectionTimeout).Result;
                 }
 
             }
@@ -50,7 +50,7 @@ namespace EVCB_OCPP.WEBAPI.Services
             using (SqlConnection conn = new SqlConnection(mainConnectionString))
             {
                 string strSql = "Select count(*) from [dbo].[Machine] where ChargeBoxId=@ChargeBoxId; ";
-                exists = conn.ExecuteScalar<bool>(strSql, parameters, null, EVCBlConfiguration.DB_DefaultConnectionTimeout);
+                exists = conn.ExecuteScalar<bool>(strSql, parameters, null, EVCBConfiguration.DB_DefaultConnectionTimeout);
             }
             return exists;
         }
@@ -96,7 +96,7 @@ namespace EVCB_OCPP.WEBAPI.Services
             using (SqlConnection conn = new SqlConnection(mainConnectionString))
             {
                 string strSql = "Select online from [dbo].[Machine] where ChargeBoxId=@ChargeBoxId; ";
-                bool online = conn.ExecuteScalar<bool>(strSql, parameters, null, EVCBlConfiguration.DB_DefaultConnectionTimeout);
+                bool online = conn.ExecuteScalar<bool>(strSql, parameters, null, EVCBConfiguration.DB_DefaultConnectionTimeout);
 
                 if (online)
                 {
@@ -126,7 +126,7 @@ namespace EVCB_OCPP.WEBAPI.Services
             using (SqlConnection conn = new SqlConnection(mainConnectionString))
             {
                 string strSql = "Select online from [dbo].[Machine] where ChargeBoxId=@ChargeBoxId; ";
-                online = conn.ExecuteScalar<bool>(strSql, parameters, null, EVCBlConfiguration.DB_DefaultConnectionTimeout);
+                online = conn.ExecuteScalar<bool>(strSql, parameters, null, EVCBConfiguration.DB_DefaultConnectionTimeout);
             }
 
             return online;

+ 1 - 1
EVCB_OCPP.WEBAPI/Services/CustomerService.cs

@@ -31,7 +31,7 @@ namespace EVCB_OCPP.WEBAPI.Services
             using (SqlConnection conn = new SqlConnection(mainConnectionString))
             {
                 string strSql = "Select ApiKey from [dbo].[Customer] where Id=@Id; ";
-                key = conn.ExecuteScalarAsync<string>(strSql, parameters, null, EVCBlConfiguration.DB_DefaultConnectionTimeout).Result;
+                key = conn.ExecuteScalarAsync<string>(strSql, parameters, null, EVCBConfiguration.DB_DefaultConnectionTimeout).Result;
             }
             return key;
 

+ 6 - 6
EVCB_OCPP.WEBAPI/Services/ServerTriggerService.cs

@@ -107,22 +107,22 @@ namespace EVCB_OCPP.WEBAPI.Services
             var parameters = new DynamicParameters();
             parameters.Add("@ChargeBoxId", ChargeBoxId, DbType.String, ParameterDirection.Input);
             parameters.Add("@RequestType", 1, DbType.Int32, ParameterDirection.Input);
-            parameters.Add("@RequestContent", JsonConvert.SerializeObject(request, EVCBlConfiguration.JSONSERIALIZER_FORMAT), DbType.String, ParameterDirection.Input);
+            parameters.Add("@RequestContent", JsonConvert.SerializeObject(request, EVCBConfiguration.JSONSERIALIZER_FORMAT), DbType.String, ParameterDirection.Input);
             parameters.Add("@Status", (int)HttpStatusCode.OK, DbType.Int32, ParameterDirection.Input);
             parameters.Add("@CreatedOn", DateTime.Now.ToUniversalTime(), DbType.DateTime, ParameterDirection.Input);
-            parameters.Add("@FinishedOn", EVCBlConfiguration.DefaultTime, DbType.DateTime, ParameterDirection.Input);
+            parameters.Add("@FinishedOn", EVCBConfiguration.DefaultTime, DbType.DateTime, ParameterDirection.Input);
             parameters.Add("@EVSE_Value", string.Empty, DbType.String, ParameterDirection.Input);
             parameters.Add("@EVSE_Status", 0, DbType.Int32, ParameterDirection.Input);
             parameters.Add("@SerialNo", uuid, DbType.String, ParameterDirection.Input);
             parameters.Add("@Action", request.Action, DbType.String, ParameterDirection.Input);
 
             parameters.Add("@OutAction", request.Action, DbType.String, ParameterDirection.Input);
-            parameters.Add("@OutRequest", JsonConvert.SerializeObject(request, EVCBlConfiguration.JSONSERIALIZER_FORMAT), DbType.String, ParameterDirection.Input);
+            parameters.Add("@OutRequest", JsonConvert.SerializeObject(request, EVCBConfiguration.JSONSERIALIZER_FORMAT), DbType.String, ParameterDirection.Input);
             parameters.Add("@InMessage", "", DbType.String, ParameterDirection.Input);
             parameters.Add("@CreatedOn", DateTime.Now.ToUniversalTime(), DbType.DateTime, ParameterDirection.Input);
             parameters.Add("@CreatedBy", "WebAPI", DbType.String, ParameterDirection.Input);
-            parameters.Add("@ReceivedOn", EVCBlConfiguration.DefaultTime, DbType.DateTime, ParameterDirection.Input);
-            parameters.Add("@UpdatedOn", EVCBlConfiguration.DefaultTime, DbType.DateTime, ParameterDirection.Input);
+            parameters.Add("@ReceivedOn", EVCBConfiguration.DefaultTime, DbType.DateTime, ParameterDirection.Input);
+            parameters.Add("@UpdatedOn", EVCBConfiguration.DefaultTime, DbType.DateTime, ParameterDirection.Input);
 
 
             using (SqlConnection conn = new SqlConnection(mainConnectionString))
@@ -164,7 +164,7 @@ namespace EVCB_OCPP.WEBAPI.Services
                 using (SqlConnection conn = new SqlConnection(mainConnectionString))
                 {
                     string strSql = "Select Top(1) Status,EVSE_Value,EVSE_Status from [dbo].[MachineOperateRecord] where ChargeBoxId=@ChargeBoxId and SerialNo=@SerialNo and Action=@Action; ";
-                    operation = conn.Query<MachineOperation>(strSql, parameters, null, true, EVCBlConfiguration.DB_DefaultConnectionTimeout).FirstOrDefault();
+                    operation = conn.Query<MachineOperation>(strSql, parameters, null, true, EVCBConfiguration.DB_DefaultConnectionTimeout).FirstOrDefault();
                 }
 
                 int code = ConverttoCode(operation.EVSE_Value);

+ 36 - 33
EVCB_OCPP.WEBAPI/Web.config

@@ -1,72 +1,75 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0"?>
 <!--
   如需如何設定 ASP.NET 應用程式的詳細資訊,請前往
   https://go.microsoft.com/fwlink/?LinkId=301879
   -->
 <configuration>
-   <connectionStrings>
+  <connectionStrings>
     <!--<add name="ConnectionLogDBContext" connectionString="data source=172.1.0.142\SQLEXPRESS;initial catalog=OCPP_ConnectionLogDBContext;persist security info=True;user id=sa;password=Ph0930118811;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
     <add name="MainDBContext" connectionString="data source=172.1.0.142\SQLEXPRESS;initial catalog=OCPP_MainDBContext;;persist security info=True;user id=sa;password=Ph0930118811;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
     <add name="MeterValueDBContext" connectionString="data source=172.1.0.142\SQLEXPRESS;initial catalog=OCPP_MeterValueDBContext;;persist security info=True;user id=sa;password=Ph0930118811;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />-->
-   <add name="ConnectionLogDBContext" connectionString="data source=172.1.2.187\SQLEXPRESS2017;initial catalog=StandardOCPP_ConnectionLog;persist security info=True;user id=sa;password=Ph0930118811;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
-    <add name="MainDBContext" connectionString="data source=172.1.2.187\SQLEXPRESS2017;initial catalog=StandardOCPP_Main;;persist security info=True;user id=sa;password=Ph0930118811;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
-    <add name="MeterValueDBContext" connectionString="data source=172.1.2.187\SQLEXPRESS2017;initial catalog=StandardOCPP_MeterValue;;persist security info=True;user id=sa;password=Ph0930118811;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
- 
+    <add name="ConnectionLogDBContext" connectionString="data source=172.1.2.187\SQLEXPRESS2017;initial catalog=StandardOCPP_ConnectionLog;persist security info=True;user id=sa;password=Ph0930118811;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient"/>
+    <add name="MainDBContext" connectionString="data source=172.1.2.187\SQLEXPRESS2017;initial catalog=StandardOCPP_Main;;persist security info=True;user id=sa;password=Ph0930118811;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient"/>
+    <add name="MeterValueDBContext" connectionString="data source=172.1.2.187\SQLEXPRESS2017;initial catalog=StandardOCPP_MeterValue;;persist security info=True;user id=sa;password=Ph0930118811;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient"/>
   </connectionStrings>
   <appSettings>
-    <add key="webpages:Version" value="3.0.0.0" />
-    <add key="webpages:Enabled" value="false" />
-    <add key="ClientValidationEnabled" value="true" />
-    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
+    <add key="webpages:Version" value="3.0.0.0"/>
+    <add key="webpages:Enabled" value="false"/>
+    <add key="ClientValidationEnabled" value="true"/>
+    <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
   </appSettings>
   <system.web>
-    <compilation debug="true" targetFramework="4.7.2" />
-    <httpRuntime targetFramework="4.7.2" />
+    <compilation debug="true" targetFramework="4.7.2"/>
+    <httpRuntime targetFramework="4.7.2"/>
+  <customErrors  mode="On"/>
   </system.web>
   <system.webServer>
+    <!--<httpErrors errorMode="Custom" existingResponse="PassThrough">-->
+ 
+<!--</httpErrors>-->
     <handlers>
-      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
-      <remove name="OPTIONSVerbHandler" />
-      <remove name="TRACEVerbHandler" />
-      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
+      <remove name="ExtensionlessUrlHandler-Integrated-4.0"/>
+      <remove name="OPTIONSVerbHandler"/>
+      <remove name="TRACEVerbHandler"/>
+      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"/>
     </handlers>
   </system.webServer>
   <runtime>
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
       <dependentAssembly>
-        <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" />
-        <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" />
+        <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f"/>
+        <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2"/>
       </dependentAssembly>
       <dependentAssembly>
-        <assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
-        <bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
+        <assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed"/>
+        <bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0"/>
       </dependentAssembly>
       <dependentAssembly>
-        <assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
-        <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
+        <assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35"/>
+        <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0"/>
       </dependentAssembly>
       <dependentAssembly>
-        <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
-        <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" />
+        <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35"/>
+        <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930"/>
       </dependentAssembly>
       <dependentAssembly>
-        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
-        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
+        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/>
+        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
       </dependentAssembly>
       <dependentAssembly>
-        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
-        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
+        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/>
+        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
       </dependentAssembly>
       <dependentAssembly>
-        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
-        <bindingRedirect oldVersion="1.0.0.0-5.2.4.0" newVersion="5.2.4.0" />
+        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
+        <bindingRedirect oldVersion="1.0.0.0-5.2.4.0" newVersion="5.2.4.0"/>
       </dependentAssembly>
     </assemblyBinding>
   </runtime>
   <system.codedom>
     <compilers>
-      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
-      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
+      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701"/>
+      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/>
     </compilers>
   </system.codedom>
-</configuration>
+</configuration>