Browse Source

2020/09/03 Jessica
Actions:
1.Fix 韌體更新成功後會繼續更新問題
2. Fix SendLocalList 回覆未正確保存問題

Jessica Tseng 4 năm trước cách đây
mục cha
commit
6ab8485056

BIN
EVCB_OCPP.WSServer/DLL/EVCB_OCPP.Packet.dll


+ 0 - 1
EVCB_OCPP.WSServer/EVCB_OCPP.WSServer.csproj

@@ -128,7 +128,6 @@
   </ItemGroup>
   <ItemGroup>
     <Compile Include="Dto\ErrorDetails.cs" />
-    <Compile Include="Helper\TypeHelper.cs" />
     <Compile Include="Service\BusinessServiceFactory.cs" />
     <Compile Include="Service\HttpClientService.cs" />
     <Compile Include="Service\LoadingBalanceService.cs" />

+ 3 - 3
EVCB_OCPP.WSServer/Message/BasicMessageHandler.cs

@@ -91,20 +91,20 @@ namespace EVCB_OCPP.WSServer.Message
                                     }
                                     else
                                     {
-                                        Console.WriteLine("---------------* DataTransfer ***********");
+                                      
                                         string replyMsg = GenerateCallError(msg.Id, OCPPErrorCodes.OccurenceConstraintViolation.ToString(),
                                              OCPPErrorDescription.OccurenceConstraintViolation);
                                         result.Id = TYPENUMBER_CALL;
                                         result.Message = baseResult.Request;
                                         result.Success = false;
                                         result.CallErrorMsg = replyMsg;
-                                        result.Exception = new Exception("Validate Failed");
+                                        result.Exception = new Exception("Validation Failed");
 
                                     }
                                 }
                                 else
                                 {
-                                    Console.WriteLine("********** DataTransfer ***********");
+                                  
                                     string replyMsg = GenerateCallError(msg.Id, OCPPErrorCodes.OccurenceConstraintViolation, OCPPErrorDescription.OccurenceConstraintViolation);
                                     result.Id = TYPENUMBER_CALL;
                                     result.Message = baseResult.Request;

+ 98 - 88
EVCB_OCPP.WSServer/Message/FirmwareManagementProfileHandler.cs

@@ -22,112 +22,122 @@ namespace EVCB_OCPP.WSServer.Message
             try
             {
                 switch (action)
-            {
+                {
 
-                case Actions.FirmwareStatusNotification:
-                    {
-                        FirmwareStatusNotificationRequest _request = request as FirmwareStatusNotificationRequest;
-
-                        if (_request.status == Packet.Messages.SubTypes.FirmwareStatus.Idle)
+                    case Actions.FirmwareStatusNotification:
                         {
-                            string requestId = Guid.NewGuid().ToString();
-                            using (var db = new MainDBContext())
-                            {
-                                var machine = db.Machine.Where(x => x.FW_AssignedVersion.HasValue == true &&
-                                    x.FW_AssignedVersion != x.FW_VersionReport && x.ChargeBoxId == session.ChargeBoxId)
-                                    .Select(x => new { x.Id, x.FW_AssignedVersion }).AsNoTracking().FirstOrDefault();
+                            FirmwareStatusNotificationRequest _request = request as FirmwareStatusNotificationRequest;
 
-                                if (machine != null)
+                            if (_request.status == Packet.Messages.SubTypes.FirmwareStatus.Idle)
+                            {
+                                string requestId = Guid.NewGuid().ToString();
+                                using (var db = new MainDBContext())
                                 {
-                                    var mv = db.MachineVersionFile.Include(c => c.UploadFile)                                   
-                                     .Where(c => c.Id == machine.FW_AssignedVersion.Value).First();
-
-                                    string downloadUrl = mv.UploadFile.FileUrl;
+                                    var machine = db.Machine.Where(x => x.FW_AssignedVersion.HasValue == true && x.FW_AssignedVersion.HasValue
+                                       && x.FW_AssignedVersion != x.FW_VersionReport && x.ChargeBoxId == session.ChargeBoxId)
+                                        .Select(x => new { x.Id, x.FW_AssignedVersion }).AsNoTracking().FirstOrDefault();
 
-                                    var _updateFWrequest = new UpdateFirmwareRequest()
-                                    {
-                                        location = new Uri(downloadUrl),
-                                        retries = 3,
-                                        retrieveDate = DateTime.Now,
-                                        retryInterval = 10
-                                    };
-                                    db.MachineOperateRecord.Add(new MachineOperateRecord()
+                                    if (machine != null)
                                     {
-                                        CreatedOn = DateTime.Now,
-                                        ChargeBoxId = session.ChargeBoxId,
-                                        SerialNo = requestId,
-                                        RequestContent = JsonConvert.SerializeObject(_updateFWrequest, new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore, Formatting = Formatting.None }),
-                                        EVSE_Status = 0,
-                                        EVSE_Value = "Fw Version:" + machine.FW_AssignedVersion,
-                                        Status = 0,
-                                        RequestType = 0,
-
-                                    });
-
-                                    db.ServerMessage.Add(new ServerMessage()
-                                    {
-                                        ChargeBoxId = session.ChargeBoxId,
-                                        CreatedBy = "Server",
-                                        CreatedOn = DateTime.Now,
-                                        OutAction = _updateFWrequest.Action.ToString(),
-                                        OutRequest = JsonConvert.SerializeObject(_updateFWrequest, new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore, Formatting = Formatting.None }),
-                                        SerialNo = requestId,
-                                        InMessage = string.Empty
-
-                                    });
-
-                                    db.SaveChanges();
+                                        var mv = db.MachineVersionFile.Include(c => c.UploadFile)
+                                         .Where(c => c.Id == machine.FW_AssignedVersion.Value).First();
+
+                                        string downloadUrl = mv.UploadFile.FileUrl;
+
+                                        var _updateFWrequest = new UpdateFirmwareRequest()
+                                        {
+                                            location = new Uri(downloadUrl),
+                                            retries = 3,
+                                            retrieveDate = DateTime.Now,
+                                            retryInterval = 10
+                                        };
+
+                                        db.MachineOperateRecord.Add(new MachineOperateRecord()
+                                        {
+                                            CreatedOn = DateTime.Now,
+                                            ChargeBoxId = session.ChargeBoxId,
+                                            SerialNo = requestId,
+                                            RequestContent = JsonConvert.SerializeObject(_updateFWrequest, new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore, Formatting = Formatting.None }),
+                                            EVSE_Status = 0,
+                                            EVSE_Value = "Fw Version:" + machine.FW_AssignedVersion,
+                                            Status = 0,
+                                            RequestType = 0,
+                                            Action = _updateFWrequest.Action.ToString()
+
+                                        });
+
+                                        db.ServerMessage.Add(new ServerMessage()
+                                        {
+                                            ChargeBoxId = session.ChargeBoxId,
+                                            CreatedBy = "Server",
+                                            CreatedOn = DateTime.Now,
+                                            OutAction = _updateFWrequest.Action.ToString(),
+                                            OutRequest = JsonConvert.SerializeObject(_updateFWrequest, new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore, Formatting = Formatting.None }),
+                                            SerialNo = requestId,
+                                            InMessage = string.Empty
+
+                                        });
+
+                                        db.SaveChanges();
+
+                                    }
 
                                 }
-
                             }
-                        }
-                        else
-                        {
-                            using (var db = new MainDBContext())
+                            else
                             {
-                                var item = db.MachineOperateRecord.Where(x => x.ChargeBoxId == session.ChargeBoxId && x.RequestType == 0)
-                                    .OrderByDescending(x => x.CreatedOn).FirstOrDefault();
+                                using (var db = new MainDBContext())
+                                {
+                                    var item = db.MachineOperateRecord.Where(x => x.ChargeBoxId == session.ChargeBoxId && x.RequestType == 0)
+                                        .OrderByDescending(x => x.CreatedOn).FirstOrDefault();
+                                    if (item != null)
+                                    {
+                                        item.EVSE_Status = (int)_request.status;
+                                        item.FinishedOn = DateTime.Now;
+                                         if(string.IsNullOrEmpty(item.EVSE_Value))
+                                        {
+                                            Console.WriteLine("怎麼悾悾的");
+                                        }
 
-                                item.EVSE_Status = (int)_request.status;
-                                item.FinishedOn = DateTime.Now;
+                                        if (!string.IsNullOrEmpty(item.EVSE_Value) && _request.status == Packet.Messages.SubTypes.FirmwareStatus.Installed)
+                                        {
+                                            int version = 0;
+                                            int.TryParse(item.EVSE_Value.Split(':').Last(), out version);
+                                            var machine = db.Machine.Where(x => x.ChargeBoxId == session.ChargeBoxId).FirstOrDefault();
+                                            machine.FW_VersionReport = version;
+                                        }
+                                    }
 
-                                if (!string.IsNullOrEmpty(item.EVSE_Value) && _request.status == Packet.Messages.SubTypes.FirmwareStatus.Installed)
-                                {
-                                    int version = 0;
-                                    int.TryParse(item.EVSE_Value.Split(':').Last(), out version);
-                                    var machine = db.Machine.Where(x => x.ChargeBoxId == session.ChargeBoxId).FirstOrDefault();
-                                    machine.FW_VersionReport = version;
-                                }
 
-                                db.SaveChanges();
+
+                                    db.SaveChanges();
+                                }
                             }
-                        }
 
-                        var confirm = new FirmwareStatusNotificationConfirmation() { };
+                            var confirm = new FirmwareStatusNotificationConfirmation() { };
 
-                        result.Message = confirm;
-                        result.Success = true;
-                    }
-                    break;
-                case Actions.DiagnosticsStatusNotification:
-                    {
-                        DiagnosticsStatusNotificationRequest _request = request as DiagnosticsStatusNotificationRequest;
+                            result.Message = confirm;
+                            result.Success = true;
+                        }
+                        break;
+                    case Actions.DiagnosticsStatusNotification:
+                        {
+                            DiagnosticsStatusNotificationRequest _request = request as DiagnosticsStatusNotificationRequest;
 
-                        var confirm = new DiagnosticsStatusNotificationConfirmation() { };
+                            var confirm = new DiagnosticsStatusNotificationConfirmation() { };
 
-                        result.Message = confirm;
-                        result.Success = true;
+                            result.Message = confirm;
+                            result.Success = true;
 
-                    }
-                    break;
+                        }
+                        break;
 
-                default:
-                    {
-                        Console.WriteLine(string.Format("Not Implement {0} Logic", request.GetType().ToString().Replace("OCPPPackage.Messages.FirmwareManagement.", "")));
-                    }
-                    break;
-            }
+                    default:
+                        {
+                            Console.WriteLine(string.Format("Not Implement {0} Logic", request.GetType().ToString().Replace("OCPPPackage.Messages.FirmwareManagement.", "")));
+                        }
+                        break;
+                }
             }
             catch (Exception ex)
             {
@@ -149,7 +159,7 @@ namespace EVCB_OCPP.WSServer.Message
                 case Actions.GetDiagnostics:
                     {
                         string evse_rep = string.Empty;
-                        if(confirm is GetDiagnosticsConfirmation)
+                        if (confirm is GetDiagnosticsConfirmation)
                         {
                             var confirmation = confirm as GetDiagnosticsConfirmation;
                             evse_rep = confirmation.fileName;
@@ -163,7 +173,7 @@ namespace EVCB_OCPP.WSServer.Message
                                 operation.FinishedOn = DateTime.Now;
                                 operation.Status = 1;//電樁有回覆
                                 operation.EVSE_Status = (int)1;//OK
-                                operation.EVSE_Value = evse_rep;
+                                operation.EVSE_Value = string.IsNullOrEmpty(evse_rep)?operation.EVSE_Value: evse_rep;
                                 db.SaveChanges();
                             }
 

+ 2 - 2
EVCB_OCPP.WSServer/Message/LocalAuthListManagementProfileHandler.cs

@@ -55,8 +55,8 @@ namespace EVCB_OCPP.WSServer.Message
                             {
                                 operation.FinishedOn = DateTime.Now;
                                 operation.Status = 1;//電樁有回覆
-                                operation.EVSE_Status = (int)_confirm.updateStatus;//OK     
-                                operation.EVSE_Value = _confirm.updateStatus.ToString();
+                                operation.EVSE_Status = (int)_confirm.status;//OK     
+                                operation.EVSE_Value = _confirm.status.ToString();
                                 db.SaveChanges();
                             }
 

+ 1 - 0
EVCB_OCPP.WSServer/ProtalServer.cs

@@ -1066,6 +1066,7 @@ namespace EVCB_OCPP.WSServer
                                             Send(session, rawRequest, string.Format("{0} {1}", action, "Request"), "");
                                         }
 
+                                      
                                         if (_RequestType != null && item.CreatedBy == "Destroyer")
                                         {
                                             Console.WriteLine("********************************");

+ 8 - 2
TestTool.RemoteTriggerAPP/App.config

@@ -34,10 +34,16 @@
   </entityFramework>
   <applicationSettings>
     <TestTool.RemoteTriggerAPP.Properties.Settings>
-      <setting name="FilePreUrl" serializeAs="String">
+      <setting name="UpdateFWPreUrl" serializeAs="String">
         <value>http://test.evsocket.phihong.com.cn:9001/</value>
       </setting>
-      <setting name="FTPFilePreUrl" serializeAs="String">
+      <setting name="FTPUpdateFWPreUrl" serializeAs="String">
+        <value>ftp://testocpp:testocpp@test.evsocket.phihong.com.cn/</value>
+      </setting>
+      <setting name="GetDiagnosticsPreUrl" serializeAs="String">
+        <value>http://ocpp.phihong.com.tw:9003/api/v1/file/</value>
+      </setting>
+      <setting name="FTPGetDiagnosticsPreUrl" serializeAs="String">
         <value>ftp://evseocpp:evseocpp@test.evsocket.phihong.com.cn/</value>
       </setting>
     </TestTool.RemoteTriggerAPP.Properties.Settings>

+ 4 - 3
TestTool.RemoteTriggerAPP/MainWindow.xaml

@@ -5,7 +5,7 @@
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         xmlns:local="clr-namespace:TestTool.RemoteTriggerAPP"      
         mc:Ignorable="d"
-        Title="下發測試用工具(公司內網) V1.1.23 (20200723)" Height="481" Width="652">
+        Title="下發測試用工具(公司內網) V1.1.27 (20200831)" Height="481" Width="652">
     <Viewbox>
         <Grid Margin="0,2,2,0">
             <Grid.ColumnDefinitions>
@@ -19,6 +19,7 @@
             <ComboBox Name="uxCmdCb" HorizontalAlignment="Left" Margin="212,163,0,0" VerticalAlignment="Top" Width="253" Height="34" SelectionChanged="UxCmdCb_SelectionChanged" Grid.ColumnSpan="2">
                 <ComboBoxItem>ChangeAvailability_Inoperative</ComboBoxItem>
                 <ComboBoxItem>ChangeAvailability_Operative</ComboBoxItem>
+                <ComboBoxItem>UpdateFirmware(搭配破壞模式,請勿下Publish)</ComboBoxItem>
                 <ComboBoxItem>DataTransfer</ComboBoxItem>
                 <ComboBoxItem>ChangeConfiguration</ComboBoxItem>
                 <ComboBoxItem>ClearCache</ComboBoxItem>
@@ -30,8 +31,8 @@
                 <ComboBoxItem>Reset_HardReset</ComboBoxItem>
                 <ComboBoxItem>UnlockConnector</ComboBoxItem>
                 <ComboBoxItem>GetLocalListVersion</ComboBoxItem>
-                <ComboBoxItem>SendLocalAuthorizationList_Full</ComboBoxItem>
-                <ComboBoxItem>SendLocalAuthorizationList_Diff</ComboBoxItem>
+                <ComboBoxItem>SendLocalList_Full</ComboBoxItem>
+                <ComboBoxItem>SendLocalList_Diff</ComboBoxItem>
                 <ComboBoxItem>GetDiagnostics_FTP</ComboBoxItem>
                 <ComboBoxItem>GetDiagnostics_HTTP</ComboBoxItem>
                 <ComboBoxItem>ReserveNow</ComboBoxItem>

+ 9 - 9
TestTool.RemoteTriggerAPP/MainWindow.xaml.cs

@@ -70,9 +70,9 @@ namespace TestTool.RemoteTriggerAPP
             {
                 try
                 {
-                    string actualAction = action.Split('_')[0];
-                    var uuid = Guid.NewGuid().ToString();                 
-                    WritetoDB(uuid,null, actualAction, GetDestroyVersionData(actualAction));
+                    string actualAction = action.Split(new char[] { '_', '(' })[0];
+                    var uuid = Guid.NewGuid().ToString();
+                    WritetoDB(uuid, null, actualAction, GetDestroyVersionData(actualAction));
                     uxMsgTb.Text = string.Format("Send Actions: {0} UUID:{1}", actualAction, uuid);
                 }
                 catch (Exception ex)
@@ -173,12 +173,12 @@ namespace TestTool.RemoteTriggerAPP
                             GetLocalListVersion();
                         }
                         break;
-                    case "SendLocalAuthorizationList_Full":
+                    case "SendLocalList_Full":
                         {
                             SendLocalAuthorizationList(true);
                         }
                         break;
-                    case "SendLocalAuthorizationList_Diff":
+                    case "SendLocalList_Diff":
                         {
                             SendLocalAuthorizationList(false);
                         }
@@ -459,7 +459,7 @@ namespace TestTool.RemoteTriggerAPP
                 var request = new GetDiagnosticsRequest()
                 {
 
-                    location = new Uri(ftp ? "ftp://evseocpp:evseocpp@ocpp.phihong.com.tw/" : "http://ocpp.phihong.com.tw:9003/api/v1/file/"),
+                    location = new Uri(ftp ? Properties.Settings.Default.FTPGetDiagnosticsPreUrl : Properties.Settings.Default.GetDiagnosticsPreUrl),
                     retries = 1,
                     retryInterval = 30,
                     startTime = DateTime.Now.AddHours(-1).ToUniversalTime(),
@@ -937,7 +937,7 @@ namespace TestTool.RemoteTriggerAPP
 
             int size = (int)f.Length;
             string md5 = "";
-            string filePreUrl = ConfigurationManager.AppSettings["FilePreUrl"];
+            string filePreUrl = ConfigurationManager.AppSettings["UpdateFWPreUrl"];
             using (WebClient client = new WebClient())
             {
                 client.UseDefaultCredentials = false;
@@ -960,7 +960,7 @@ namespace TestTool.RemoteTriggerAPP
             ufObj.FileSize = size;
             ufObj.FileMD5 = md5;
             ufObj.OriginName = System.IO.Path.GetFileName(uxUploadFileTb.Text);
-            ufObj.FileUrl = new Uri(Properties.Settings.Default.FilePreUrl + ufObj.FilePath.Replace("~/", "")).ToString();
+            ufObj.FileUrl = new Uri(Properties.Settings.Default.UpdateFWPreUrl + ufObj.FilePath.Replace("~/", "")).ToString();
             ufObj.VendorId = "TestTool";
             ufObj.ModelName = "TestTool";
             ufObj.ModuleId = 0;
@@ -1057,7 +1057,7 @@ namespace TestTool.RemoteTriggerAPP
             ufObj.FileSize = size;
             ufObj.FileMD5 = md5;
             ufObj.OriginName = System.IO.Path.GetFileName(uxUploadFileTb.Text);
-            ufObj.FileUrl = new Uri(Properties.Settings.Default.FTPFilePreUrl + ufObj.FileName).ToString();
+            ufObj.FileUrl = new Uri(Properties.Settings.Default.FTPUpdateFWPreUrl + ufObj.FileName).ToString();
             ufObj.VendorId = "TestTool";
             ufObj.ModelName = "TestTool";
             ufObj.ModuleId = 0;

+ 24 - 6
TestTool.RemoteTriggerAPP/Properties/Settings.Designer.cs

@@ -12,7 +12,7 @@ namespace TestTool.RemoteTriggerAPP.Properties {
     
     
     [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.5.0.0")]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.7.0.0")]
     internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
         
         private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
@@ -26,18 +26,18 @@ namespace TestTool.RemoteTriggerAPP.Properties {
         [global::System.Configuration.ApplicationScopedSettingAttribute()]
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
         [global::System.Configuration.DefaultSettingValueAttribute("http://test.evsocket.phihong.com.cn:9001/")]
-        public string FilePreUrl {
+        public string UpdateFWPreUrl {
             get {
-                return ((string)(this["FilePreUrl"]));
+                return ((string)(this["UpdateFWPreUrl"]));
             }
         }
         
         [global::System.Configuration.ApplicationScopedSettingAttribute()]
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        [global::System.Configuration.DefaultSettingValueAttribute("ftp://evseocpp:evseocpp@test.evsocket.phihong.com.cn/")]
-        public string FTPFilePreUrl {
+        [global::System.Configuration.DefaultSettingValueAttribute("ftp://testocpp:testocpp@test.evsocket.phihong.com.cn/")]
+        public string FTPUpdateFWPreUrl {
             get {
-                return ((string)(this["FTPFilePreUrl"]));
+                return ((string)(this["FTPUpdateFWPreUrl"]));
             }
         }
         
@@ -52,5 +52,23 @@ namespace TestTool.RemoteTriggerAPP.Properties {
                 this["ChargeBoxId"] = value;
             }
         }
+        
+        [global::System.Configuration.ApplicationScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("http://ocpp.phihong.com.tw:9003/api/v1/file/")]
+        public string GetDiagnosticsPreUrl {
+            get {
+                return ((string)(this["GetDiagnosticsPreUrl"]));
+            }
+        }
+        
+        [global::System.Configuration.ApplicationScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("ftp://evseocpp:evseocpp@test.evsocket.phihong.com.cn/")]
+        public string FTPGetDiagnosticsPreUrl {
+            get {
+                return ((string)(this["FTPGetDiagnosticsPreUrl"]));
+            }
+        }
     }
 }

+ 9 - 3
TestTool.RemoteTriggerAPP/Properties/Settings.settings

@@ -2,14 +2,20 @@
 <SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="TestTool.RemoteTriggerAPP.Properties" GeneratedClassName="Settings">
   <Profiles />
   <Settings>
-    <Setting Name="FilePreUrl" Type="System.String" Scope="Application">
+    <Setting Name="UpdateFWPreUrl" Type="System.String" Scope="Application">
       <Value Profile="(Default)">http://test.evsocket.phihong.com.cn:9001/</Value>
     </Setting>
-    <Setting Name="FTPFilePreUrl" Type="System.String" Scope="Application">
-      <Value Profile="(Default)">ftp://evseocpp:evseocpp@test.evsocket.phihong.com.cn/</Value>
+    <Setting Name="FTPUpdateFWPreUrl" Type="System.String" Scope="Application">
+      <Value Profile="(Default)">ftp://testocpp:testocpp@test.evsocket.phihong.com.cn/</Value>
     </Setting>
     <Setting Name="ChargeBoxId" Type="System.String" Scope="User">
       <Value Profile="(Default)">OCTT_1</Value>
     </Setting>
+    <Setting Name="GetDiagnosticsPreUrl" Type="System.String" Scope="Application">
+      <Value Profile="(Default)">http://ocpp.phihong.com.tw:9003/api/v1/file/</Value>
+    </Setting>
+    <Setting Name="FTPGetDiagnosticsPreUrl" Type="System.String" Scope="Application">
+      <Value Profile="(Default)">ftp://evseocpp:evseocpp@test.evsocket.phihong.com.cn/</Value>
+    </Setting>
   </Settings>
 </SettingsFile>