matt 1 долоо хоног өмнө
parent
commit
9c35145a69
100 өөрчлөгдсөн 2833 нэмэгдсэн , 58 устгасан
  1. 1030 0
      code/.vs/HXX.Scanner/config/applicationhost.config
  2. BIN
      code/.vs/HXX.Scanner/v16/.suo
  3. 774 0
      code/HXX.Scanner.Biz/HTTP/http_manager - backup.cs
  4. 76 24
      code/HXX.Scanner.Biz/HTTP/http_manager.cs
  5. 2 0
      code/HXX.Scanner.Biz/HXX.Scanner.Biz.csproj
  6. 141 0
      code/HXX.Scanner.Biz/TP/CustomThreadPool.cs
  7. BIN
      code/HXX.Scanner.Biz/bin/Debug/HXX.Scanner.Biz.dll
  8. BIN
      code/HXX.Scanner.Biz/bin/Debug/HXX.Scanner.Biz.pdb
  9. BIN
      code/HXX.Scanner.Biz/bin/Debug/HXX.Scanner.Common.dll
  10. BIN
      code/HXX.Scanner.Biz/bin/Debug/HXX.Scanner.Common.pdb
  11. BIN
      code/HXX.Scanner.Biz/bin/Debug/HXX.Scanner.Socket.dll
  12. BIN
      code/HXX.Scanner.Biz/bin/Debug/HXX.Scanner.Socket.pdb
  13. 1 1
      code/HXX.Scanner.Biz/biz/file_manager.cs
  14. 33 4
      code/HXX.Scanner.Biz/biz/pop/biz_pop2.cs
  15. BIN
      code/HXX.Scanner.Biz/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
  16. BIN
      code/HXX.Scanner.Biz/obj/Debug/HXX.Scanner.Biz.csproj.AssemblyReference.cache
  17. 1 1
      code/HXX.Scanner.Biz/obj/Debug/HXX.Scanner.Biz.csproj.CoreCompileInputs.cache
  18. 58 0
      code/HXX.Scanner.Biz/obj/Debug/HXX.Scanner.Biz.csproj.FileListAbsolute.txt
  19. BIN
      code/HXX.Scanner.Biz/obj/Debug/HXX.Scanner.Biz.dll
  20. BIN
      code/HXX.Scanner.Biz/obj/Debug/HXX.Scanner.Biz.pdb
  21. 8 6
      code/HXX.Scanner.Biz/twain32/engine_twain32.cs
  22. 1 0
      code/HXX.Scanner.Client/UI/frmMain3.cs
  23. BIN
      code/HXX.Scanner.Client/bin/Debug/HXX.Scanner.Biz.dll
  24. BIN
      code/HXX.Scanner.Client/bin/Debug/HXX.Scanner.Biz.pdb
  25. BIN
      code/HXX.Scanner.Client/bin/Debug/HXX.Scanner.Common.dll
  26. BIN
      code/HXX.Scanner.Client/bin/Debug/HXX.Scanner.Common.pdb
  27. BIN
      code/HXX.Scanner.Client/bin/Debug/HXX.Scanner.Socket.dll
  28. BIN
      code/HXX.Scanner.Client/bin/Debug/HXX.Scanner.Socket.pdb
  29. BIN
      code/HXX.Scanner.Client/bin/Debug/HXX.Scanner.Starter.exe
  30. BIN
      code/HXX.Scanner.Client/bin/Debug/HXX.Scanner.Starter.pdb
  31. BIN
      code/HXX.Scanner.Client/bin/Debug/HXX.Scanner.UpdateStarter.Console.exe
  32. BIN
      code/HXX.Scanner.Client/bin/Debug/HXX.Scanner.UpdateStarter.Console.pdb
  33. BIN
      code/HXX.Scanner.Client/bin/Debug/HXXScannerClient.exe
  34. BIN
      code/HXX.Scanner.Client/bin/Debug/HXXScannerClient.pdb
  35. BIN
      code/HXX.Scanner.Client/bin/Debug/Interop.WIA.dll
  36. BIN
      code/HXX.Scanner.Client/bin/Debug/Newtonsoft.Json.dll
  37. 409 16
      code/HXX.Scanner.Client/bin/Debug/Newtonsoft.Json.xml
  38. BIN
      code/HXX.Scanner.Client/bin/Debug/db/HXX.db
  39. BIN
      code/HXX.Scanner.Client/obj/Debug/DesignTimeResolveAssemblyReferences.cache
  40. BIN
      code/HXX.Scanner.Client/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
  41. BIN
      code/HXX.Scanner.Client/obj/Debug/HXX.Scanner.Client.csproj.AssemblyReference.cache
  42. 1 1
      code/HXX.Scanner.Client/obj/Debug/HXX.Scanner.Client.csproj.CoreCompileInputs.cache
  43. 64 0
      code/HXX.Scanner.Client/obj/Debug/HXX.Scanner.Client.csproj.FileListAbsolute.txt
  44. BIN
      code/HXX.Scanner.Client/obj/Debug/HXXScannerClient.exe
  45. BIN
      code/HXX.Scanner.Client/obj/Debug/HXXScannerClient.pdb
  46. 1 0
      code/HXX.Scanner.Common/HXX.Scanner.Common.csproj
  47. 119 0
      code/HXX.Scanner.Common/LogManager_Lock.cs
  48. BIN
      code/HXX.Scanner.Common/bin/Debug/HXX.Scanner.Common.dll
  49. BIN
      code/HXX.Scanner.Common/bin/Debug/HXX.Scanner.Common.pdb
  50. BIN
      code/HXX.Scanner.Common/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
  51. BIN
      code/HXX.Scanner.Common/obj/Debug/HXX.Scanner.Common.csproj.AssemblyReference.cache
  52. 1 1
      code/HXX.Scanner.Common/obj/Debug/HXX.Scanner.Common.csproj.CoreCompileInputs.cache
  53. 7 0
      code/HXX.Scanner.Common/obj/Debug/HXX.Scanner.Common.csproj.FileListAbsolute.txt
  54. BIN
      code/HXX.Scanner.Common/obj/Debug/HXX.Scanner.Common.dll
  55. BIN
      code/HXX.Scanner.Common/obj/Debug/HXX.Scanner.Common.pdb
  56. BIN
      code/HXX.Scanner.Copier/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
  57. BIN
      code/HXX.Scanner.Copier/obj/Debug/HXX.Scanner.Copier.csproj.AssemblyReference.cache
  58. BIN
      code/HXX.Scanner.Database/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
  59. BIN
      code/HXX.Scanner.Database/obj/Debug/HXX.Scanner.Database.csproj.AssemblyReference.cache
  60. BIN
      code/HXX.Scanner.Install/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
  61. BIN
      code/HXX.Scanner.Install/obj/Debug/HXX.Scanner.Install.csproj.AssemblyReference.cache
  62. BIN
      code/HXX.Scanner.Pop/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
  63. BIN
      code/HXX.Scanner.Pop/obj/Debug/HXX.Scanner.Pop.csproj.AssemblyReference.cache
  64. BIN
      code/HXX.Scanner.Socket/bin/Debug/HXX.Scanner.Common.dll
  65. BIN
      code/HXX.Scanner.Socket/bin/Debug/HXX.Scanner.Common.pdb
  66. BIN
      code/HXX.Scanner.Socket/bin/Debug/HXX.Scanner.Socket.dll
  67. BIN
      code/HXX.Scanner.Socket/bin/Debug/HXX.Scanner.Socket.pdb
  68. BIN
      code/HXX.Scanner.Socket/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
  69. BIN
      code/HXX.Scanner.Socket/obj/Debug/HXX.Scanner.Socket.csproj.AssemblyReference.cache
  70. 1 1
      code/HXX.Scanner.Socket/obj/Debug/HXX.Scanner.Socket.csproj.CoreCompileInputs.cache
  71. 16 0
      code/HXX.Scanner.Socket/obj/Debug/HXX.Scanner.Socket.csproj.FileListAbsolute.txt
  72. BIN
      code/HXX.Scanner.Socket/obj/Debug/HXX.Scanner.Socket.dll
  73. BIN
      code/HXX.Scanner.Socket/obj/Debug/HXX.Scanner.Socket.pdb
  74. BIN
      code/HXX.Scanner.Starter/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
  75. BIN
      code/HXX.Scanner.Starter/obj/Debug/HXX.Scanner.Starter.csproj.AssemblyReference.cache
  76. 1 1
      code/HXX.Scanner.Starter/obj/Debug/HXX.Scanner.Starter.csproj.CoreCompileInputs.cache
  77. 17 0
      code/HXX.Scanner.Starter/obj/Debug/HXX.Scanner.Starter.csproj.FileListAbsolute.txt
  78. BIN
      code/HXX.Scanner.Starter/obj/Debug/HXX.Scanner.Starter.exe
  79. BIN
      code/HXX.Scanner.Starter/obj/Debug/HXX.Scanner.Starter.pdb
  80. BIN
      code/HXX.Scanner.UpdateStarter.Console/bin/Debug/HXX.Scanner.Common.dll
  81. BIN
      code/HXX.Scanner.UpdateStarter.Console/bin/Debug/HXX.Scanner.Common.pdb
  82. BIN
      code/HXX.Scanner.UpdateStarter.Console/bin/Debug/HXX.Scanner.UpdateStarter.Console.exe
  83. BIN
      code/HXX.Scanner.UpdateStarter.Console/bin/Debug/HXX.Scanner.UpdateStarter.Console.pdb
  84. BIN
      code/HXX.Scanner.UpdateStarter.Console/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
  85. BIN
      code/HXX.Scanner.UpdateStarter.Console/obj/Debug/HXX.Scanner.UpdateStarter.Console.csproj.AssemblyReference.cache
  86. 1 1
      code/HXX.Scanner.UpdateStarter.Console/obj/Debug/HXX.Scanner.UpdateStarter.Console.csproj.CoreCompileInputs.cache
  87. 11 0
      code/HXX.Scanner.UpdateStarter.Console/obj/Debug/HXX.Scanner.UpdateStarter.Console.csproj.FileListAbsolute.txt
  88. BIN
      code/HXX.Scanner.UpdateStarter.Console/obj/Debug/HXX.Scanner.UpdateStarter.Console.exe
  89. BIN
      code/HXX.Scanner.UpdateStarter.Console/obj/Debug/HXX.Scanner.UpdateStarter.Console.pdb
  90. BIN
      code/HXX.Scanner.UpdateStarter/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
  91. BIN
      code/HXX.Scanner.UpdateStarter/obj/Debug/HXX.Scanner.UpdateStarter.csproj.AssemblyReference.cache
  92. BIN
      code/test_db/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
  93. BIN
      code/test_db/obj/Debug/test_db.csproj.AssemblyReference.cache
  94. BIN
      code/test_web/bin/test_web.dll
  95. BIN
      code/test_web/bin/test_web.pdb
  96. BIN
      code/test_web/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
  97. BIN
      code/test_web/obj/Debug/test_web.csproj.AssemblyReference.cache
  98. 1 1
      code/test_web/obj/Debug/test_web.csproj.CoreCompileInputs.cache
  99. 58 0
      code/test_web/obj/Debug/test_web.csproj.FileListAbsolute.txt
  100. BIN
      code/test_web/obj/Debug/test_web.dll

+ 1030 - 0
code/.vs/HXX.Scanner/config/applicationhost.config

@@ -0,0 +1,1030 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    IIS configuration sections.
+
+    For schema documentation, see
+    %IIS_BIN%\config\schema\IIS_schema.xml.
+    
+    Please make a backup of this file before making any changes to it.
+
+    NOTE: The following environment variables are available to be used
+          within this file and are understood by the IIS Express.
+
+          %IIS_USER_HOME% - The IIS Express home directory for the user
+          %IIS_SITES_HOME% - The default home directory for sites
+          %IIS_BIN% - The location of the IIS Express binaries
+          %SYSTEMDRIVE% - The drive letter of %IIS_BIN%
+
+-->
+
+<configuration>
+
+    <!--
+
+        The <configSections> section controls the registration of sections.
+        Section is the basic unit of deployment, locking, searching and
+        containment for configuration settings.
+        
+        Every section belongs to one section group.
+        A section group is a container of logically-related sections.
+        
+        Sections cannot be nested.
+        Section groups may be nested.
+        
+        <section
+            name=""  [Required, Collection Key] [XML name of the section]
+            allowDefinition="Everywhere" [MachineOnly|MachineToApplication|AppHostOnly|Everywhere] [Level where it can be set]
+            overrideModeDefault="Allow"  [Allow|Deny] [Default delegation mode]
+            allowLocation="true"  [true|false] [Allowed in location tags]
+        />
+        
+        The recommended way to unlock sections is by using a location tag:
+        <location path="Default Web Site" overrideMode="Allow">
+            <system.webServer>
+                <asp />
+            </system.webServer>
+        </location>
+
+    -->
+    <configSections>
+        <sectionGroup name="system.applicationHost">
+            <section name="applicationPools" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+            <section name="configHistory" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+            <section name="customMetadata" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+            <section name="listenerAdapters" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+            <section name="log" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+            <section name="serviceAutoStartProviders" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+            <section name="sites" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+            <section name="webLimits" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+        </sectionGroup>
+
+        <sectionGroup name="system.webServer">
+            <section name="asp" overrideModeDefault="Deny" />
+            <section name="caching" overrideModeDefault="Allow" />
+            <section name="cgi" overrideModeDefault="Deny" />
+            <section name="defaultDocument" overrideModeDefault="Allow" />
+            <section name="directoryBrowse" overrideModeDefault="Allow" />
+            <section name="fastCgi" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+            <section name="globalModules" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+            <section name="handlers" overrideModeDefault="Deny" />
+            <section name="httpCompression" overrideModeDefault="Allow" allowDefinition="Everywhere" />
+            <section name="httpErrors" overrideModeDefault="Allow" />
+            <section name="httpLogging" overrideModeDefault="Deny" />
+            <section name="httpProtocol" overrideModeDefault="Allow" />
+            <section name="httpRedirect" overrideModeDefault="Allow" />
+            <section name="httpTracing" overrideModeDefault="Deny" />
+            <section name="isapiFilters" allowDefinition="MachineToApplication" overrideModeDefault="Deny" />
+            <section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Deny" />
+            <section name="applicationInitialization" allowDefinition="MachineToApplication" overrideModeDefault="Allow" />
+            <section name="odbcLogging" overrideModeDefault="Deny" />
+            <sectionGroup name="security">
+                <section name="access" overrideModeDefault="Deny" />
+                <section name="applicationDependencies" overrideModeDefault="Deny" />
+                <sectionGroup name="authentication">
+                    <section name="anonymousAuthentication" overrideModeDefault="Deny" />
+                    <section name="basicAuthentication" overrideModeDefault="Deny" />
+                    <section name="clientCertificateMappingAuthentication" overrideModeDefault="Deny" />
+                    <section name="digestAuthentication" overrideModeDefault="Deny" />
+                    <section name="iisClientCertificateMappingAuthentication" overrideModeDefault="Deny" />
+                    <section name="windowsAuthentication" overrideModeDefault="Deny" />
+                </sectionGroup>
+                <section name="authorization" overrideModeDefault="Allow" />
+                <section name="ipSecurity" overrideModeDefault="Deny" />
+                <section name="dynamicIpSecurity" overrideModeDefault="Deny" />
+                <section name="isapiCgiRestriction" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+                <section name="requestFiltering" overrideModeDefault="Allow" />
+            </sectionGroup>
+            <section name="serverRuntime" overrideModeDefault="Deny" />
+            <section name="serverSideInclude" overrideModeDefault="Deny" />
+            <section name="staticContent" overrideModeDefault="Allow" />
+            <sectionGroup name="tracing">
+                <section name="traceFailedRequests" overrideModeDefault="Allow" />
+                <section name="traceProviderDefinitions" overrideModeDefault="Deny" />
+            </sectionGroup>
+            <section name="urlCompression" overrideModeDefault="Allow" />
+            <section name="validation" overrideModeDefault="Allow" />
+            <sectionGroup name="webdav">
+                <section name="globalSettings" overrideModeDefault="Deny" />
+                <section name="authoring" overrideModeDefault="Deny" />
+                <section name="authoringRules" overrideModeDefault="Deny" />
+            </sectionGroup>
+            <sectionGroup name="rewrite">
+                <section name="allowedServerVariables" overrideModeDefault="Deny" />
+                <section name="rules" overrideModeDefault="Allow" />
+                <section name="outboundRules" overrideModeDefault="Allow" />
+                <section name="globalRules" overrideModeDefault="Deny" allowDefinition="AppHostOnly" />
+                <section name="providers" overrideModeDefault="Allow" />
+                <section name="rewriteMaps" overrideModeDefault="Allow" />
+            </sectionGroup>
+            <section name="webSocket" overrideModeDefault="Deny" />
+        </sectionGroup>
+    </configSections>
+
+    <configProtectedData>
+        <providers>
+            <add name="IISWASOnlyRsaProvider" type="" description="Uses RsaCryptoServiceProvider to encrypt and decrypt" keyContainerName="iisWasKey" cspProviderName="" useMachineContainer="true" useOAEP="false" />
+            <add name="AesProvider" type="Microsoft.ApplicationHost.AesProtectedConfigurationProvider" description="Uses an AES session key to encrypt and decrypt" keyContainerName="iisConfigurationKey" cspProviderName="" useOAEP="false" useMachineContainer="true" sessionKey="AQIAAA5mAAAApAAA/HKxkz6alrlAPez0IUgujj/6k3WxCDriHp6jvpv3yEZmo7h6SMzGLxo4mTrIQVHSkB7tmElHKfUFTzE2BWF7nFWHY6Z6qmGBauFzwJMwESjril7Gjz69RBFH259HQ6aRDq9Xfx7U7H4HtdmnKNqGjgl/hwPQBGeIlWiDh+sYv3vKB0QU971tjX6H2B+9armlnC8UOuA6JYMDMI/VLLL16sng0fWAy5JYe0YVABVjiAWDW264RZW9Tr1Oax4qHZKg+SdjULxeOc2YmpX+d0yeITo1HkPF1hN1gHpIPIUDo05ilHUNfR3OkjVCIQK4cFKCq1s8NH+y+13MxUC4Fn1AlQ==" />
+            <add name="IISWASOnlyAesProvider" type="Microsoft.ApplicationHost.AesProtectedConfigurationProvider" description="Uses an AES session key to encrypt and decrypt" keyContainerName="iisWasKey" cspProviderName="" useOAEP="false" useMachineContainer="true" sessionKey="AQIAAA5mAAAApAAALmU8lTC+v2qtfQiiiquvvLpUQqKLEXs+jSKoWCM/uPhyB++k4dwug19mGidNK5FYiWK2KYE1yhjVJcbp12E98Q0R2nT7eBiCMY2JairxQ591rqABK7keGaIjwH7PwGzSpILl3RJ4YFvJ/7ZXEJxeDZIjW8ZxWVXx+/VyHs9U3WguLEkgMUX3jrxJi8LouxaIVPJAv/YQ1ZCWs8zImitxX/C/7o7yaIxznfsN5nGQzQfpUDPeby99aw2zPVTtZI2LaWIBON8guABvZ6JtJVDWmfdK6sodbnwdZkr6/Z2rfvamT1dC1SpQrGG7ulR/f9/GXvCaW10ZVKxekBF/CYlNMg==" />
+        </providers>
+    </configProtectedData>
+
+    <system.applicationHost>
+
+        <applicationPools>
+            <add name="Clr4IntegratedAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
+            <add name="Clr4ClassicAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Classic" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
+            <add name="Clr2IntegratedAppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
+            <add name="Clr2ClassicAppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Classic" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
+            <add name="UnmanagedClassicAppPool" managedRuntimeVersion="" managedPipelineMode="Classic" autoStart="true" />
+            <applicationPoolDefaults managedRuntimeVersion="v4.0">
+                <processModel loadUserProfile="true" setProfileEnvironment="false" />
+            </applicationPoolDefaults>
+        </applicationPools>
+
+        <!--
+
+          The <listenerAdapters> section defines the protocols with which the
+          Windows Process Activation Service (WAS) binds.
+
+        -->
+        <listenerAdapters>
+            <add name="http" />
+        </listenerAdapters>
+
+        <sites>
+            <site name="WebSite1" id="1" serverAutoStart="true">
+                <application path="/">
+                    <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />
+                </application>
+                <bindings>
+                    <binding protocol="http" bindingInformation=":8080:localhost" />
+                </bindings>
+            </site>
+            <site name="test_web" id="2">
+                <application path="/" applicationPool="Clr4IntegratedAppPool">
+                    <virtualDirectory path="/" physicalPath="D:\work\HJY\ScanClient\code\test_web" />
+                </application>
+                <bindings>
+                    <binding protocol="https" bindingInformation="*:44352:localhost" />
+                    <binding protocol="http" bindingInformation="*:53319:localhost" />
+                </bindings>
+            </site>
+            <siteDefaults>
+                <!-- To enable logging, please change the below attribute "enabled" to "true" -->
+                <logFile logFormat="W3C" directory="%AppData%\Microsoft\IISExpressLogs" enabled="false" />
+                <traceFailedRequestsLogging directory="%AppData%\Microsoft" enabled="false" maxLogFileSizeKB="1024" />
+            </siteDefaults>
+            <applicationDefaults applicationPool="Clr4IntegratedAppPool" />
+            <virtualDirectoryDefaults allowSubDirConfig="true" />
+        </sites>
+
+        <webLimits />
+
+    </system.applicationHost>
+
+    <system.webServer>
+
+        <serverRuntime />
+
+        <asp scriptErrorSentToBrowser="true">
+            <cache diskTemplateCacheDirectory="%TEMP%\iisexpress\ASP Compiled Templates" />
+            <limits />
+        </asp>
+
+        <caching enabled="true" enableKernelCache="true">
+        </caching>
+
+        <cgi />
+
+        <defaultDocument enabled="true">
+            <files>
+                <add value="Default.htm" />
+                <add value="Default.asp" />
+                <add value="index.htm" />
+                <add value="index.html" />
+                <add value="iisstart.htm" />
+                <add value="default.aspx" />
+            </files>
+        </defaultDocument>
+
+        <directoryBrowse enabled="false" />
+
+        <fastCgi />
+
+        <!--
+
+          The <globalModules> section defines all native-code modules.
+          To enable a module, specify it in the <modules> section.
+
+        -->
+        <globalModules>
+            <add name="HttpLoggingModule" image="%IIS_BIN%\loghttp.dll" />
+            <add name="UriCacheModule" image="%IIS_BIN%\cachuri.dll" />
+            <add name="TokenCacheModule" image="%IIS_BIN%\cachtokn.dll" />
+            <add name="DynamicCompressionModule" image="%IIS_BIN%\compdyn.dll" />
+            <add name="StaticCompressionModule" image="%IIS_BIN%\compstat.dll" />
+            <add name="DefaultDocumentModule" image="%IIS_BIN%\defdoc.dll" />
+            <add name="DirectoryListingModule" image="%IIS_BIN%\dirlist.dll" />
+            <add name="ProtocolSupportModule" image="%IIS_BIN%\protsup.dll" />
+            <add name="HttpRedirectionModule" image="%IIS_BIN%\redirect.dll" />
+            <add name="ServerSideIncludeModule" image="%IIS_BIN%\iis_ssi.dll" />
+            <add name="StaticFileModule" image="%IIS_BIN%\static.dll" />
+            <add name="AnonymousAuthenticationModule" image="%IIS_BIN%\authanon.dll" />
+            <add name="CertificateMappingAuthenticationModule" image="%IIS_BIN%\authcert.dll" />
+            <add name="UrlAuthorizationModule" image="%IIS_BIN%\urlauthz.dll" />
+            <add name="BasicAuthenticationModule" image="%IIS_BIN%\authbas.dll" />
+            <add name="WindowsAuthenticationModule" image="%IIS_BIN%\authsspi.dll" />
+            <add name="IISCertificateMappingAuthenticationModule" image="%IIS_BIN%\authmap.dll" />
+            <add name="IpRestrictionModule" image="%IIS_BIN%\iprestr.dll" />
+            <add name="DynamicIpRestrictionModule" image="%IIS_BIN%\diprestr.dll" />
+            <add name="RequestFilteringModule" image="%IIS_BIN%\modrqflt.dll" />
+            <add name="CustomLoggingModule" image="%IIS_BIN%\logcust.dll" />
+            <add name="CustomErrorModule" image="%IIS_BIN%\custerr.dll" />
+            <add name="FailedRequestsTracingModule" image="%IIS_BIN%\iisfreb.dll" />
+            <add name="RequestMonitorModule" image="%IIS_BIN%\iisreqs.dll" />
+            <add name="IsapiModule" image="%IIS_BIN%\isapi.dll" />
+            <add name="IsapiFilterModule" image="%IIS_BIN%\filter.dll" />
+            <add name="CgiModule" image="%IIS_BIN%\cgi.dll" />
+            <add name="FastCgiModule" image="%IIS_BIN%\iisfcgi.dll" />
+<!--            <add name="WebDAVModule" image="%IIS_BIN%\webdav.dll" /> -->
+            <add name="RewriteModule" image="%IIS_BIN%\rewrite.dll" />
+            <add name="ConfigurationValidationModule" image="%IIS_BIN%\validcfg.dll" />
+            <add name="WebSocketModule" image="%IIS_BIN%\iiswsock.dll" />
+            <add name="WebMatrixSupportModule" image="%IIS_BIN%\webmatrixsup.dll" />
+            <add name="ManagedEngine" image="%windir%\Microsoft.NET\Framework\v2.0.50727\webengine.dll" preCondition="integratedMode,runtimeVersionv2.0,bitness32" />
+            <add name="ManagedEngine64" image="%windir%\Microsoft.NET\Framework64\v2.0.50727\webengine.dll" preCondition="integratedMode,runtimeVersionv2.0,bitness64" />
+            <add name="ManagedEngineV4.0_32bit" image="%windir%\Microsoft.NET\Framework\v4.0.30319\webengine4.dll" preCondition="integratedMode,runtimeVersionv4.0,bitness32" />
+            <add name="ManagedEngineV4.0_64bit" image="%windir%\Microsoft.NET\Framework64\v4.0.30319\webengine4.dll" preCondition="integratedMode,runtimeVersionv4.0,bitness64" />
+            <add name="ApplicationInitializationModule" image="%IIS_BIN%\warmup.dll" />
+        </globalModules>
+
+        <httpCompression directory="%TEMP%">
+            <scheme name="gzip" dll="%IIS_BIN%\gzip.dll" />
+            <dynamicTypes>
+                <add mimeType="text/*" enabled="true" />
+                <add mimeType="message/*" enabled="true" />
+                <add mimeType="application/x-javascript" enabled="true" />
+                <add mimeType="application/javascript" enabled="true" />
+                <add mimeType="*/*" enabled="false" />
+            </dynamicTypes>
+            <staticTypes>
+                <add mimeType="text/*" enabled="true" />
+                <add mimeType="message/*" enabled="true" />
+                <add mimeType="application/javascript" enabled="true" />
+                <add mimeType="application/atom+xml" enabled="true" />
+                <add mimeType="application/xaml+xml" enabled="true" />
+                <add mimeType="image/svg+xml" enabled="true" />
+                <add mimeType="*/*" enabled="false" />
+            </staticTypes>
+        </httpCompression>
+
+        <httpErrors lockAttributes="allowAbsolutePathsWhenDelegated,defaultPath">
+            <error statusCode="401" prefixLanguageFilePath="%IIS_BIN%\custerr" path="401.htm" />
+            <error statusCode="403" prefixLanguageFilePath="%IIS_BIN%\custerr" path="403.htm" />
+            <error statusCode="404" prefixLanguageFilePath="%IIS_BIN%\custerr" path="404.htm" />
+            <error statusCode="405" prefixLanguageFilePath="%IIS_BIN%\custerr" path="405.htm" />
+            <error statusCode="406" prefixLanguageFilePath="%IIS_BIN%\custerr" path="406.htm" />
+            <error statusCode="412" prefixLanguageFilePath="%IIS_BIN%\custerr" path="412.htm" />
+            <error statusCode="500" prefixLanguageFilePath="%IIS_BIN%\custerr" path="500.htm" />
+            <error statusCode="501" prefixLanguageFilePath="%IIS_BIN%\custerr" path="501.htm" />
+            <error statusCode="502" prefixLanguageFilePath="%IIS_BIN%\custerr" path="502.htm" />
+        </httpErrors>
+
+        <httpLogging dontLog="false" />
+
+        <httpProtocol>
+            <customHeaders>
+                <clear />
+                <add name="X-Powered-By" value="ASP.NET" />
+            </customHeaders>
+            <redirectHeaders>
+                <clear />
+            </redirectHeaders>
+        </httpProtocol>
+
+        <httpRedirect enabled="false" />
+
+        <httpTracing />
+
+        <isapiFilters>
+            <filter name="ASP.Net_2.0.50727-64" path="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_filter.dll" enableCache="true" preCondition="bitness64,runtimeVersionv2.0" />
+            <filter name="ASP.Net_2.0.50727.0" path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_filter.dll" enableCache="true" preCondition="bitness32,runtimeVersionv2.0" />
+            <filter name="ASP.Net_2.0_for_v1.1" path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_filter.dll" enableCache="true" preCondition="runtimeVersionv1.1" />
+            <filter name="ASP.Net_4.0_32bit" path="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_filter.dll" enableCache="true" preCondition="bitness32,runtimeVersionv4.0" />
+            <filter name="ASP.Net_4.0_64bit" path="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_filter.dll" enableCache="true" preCondition="bitness64,runtimeVersionv4.0" />
+        </isapiFilters>
+
+        <odbcLogging />
+
+        <security>
+
+            <access sslFlags="None" />
+
+            <applicationDependencies>
+                <application name="Active Server Pages" groupId="ASP" />
+            </applicationDependencies>
+
+            <authentication>
+
+                <anonymousAuthentication enabled="true" userName="" />
+
+                <basicAuthentication enabled="false" />
+
+                <clientCertificateMappingAuthentication enabled="false" />
+
+                <digestAuthentication enabled="false" />
+
+                <iisClientCertificateMappingAuthentication enabled="false">
+                </iisClientCertificateMappingAuthentication>
+
+                <windowsAuthentication enabled="false">
+                    <providers>
+                        <add value="Negotiate" />
+                        <add value="NTLM" />
+                    </providers>
+                </windowsAuthentication>
+
+            </authentication>
+
+            <authorization>
+                <add accessType="Allow" users="*" />
+            </authorization>
+
+            <ipSecurity allowUnlisted="true" />
+
+            <isapiCgiRestriction notListedIsapisAllowed="true" notListedCgisAllowed="true">
+                <add path="%windir%\Microsoft.NET\Framework64\v4.0.30319\webengine4.dll" allowed="true" groupId="ASP.NET_v4.0" description="ASP.NET_v4.0" />
+                <add path="%windir%\Microsoft.NET\Framework\v4.0.30319\webengine4.dll" allowed="true" groupId="ASP.NET_v4.0" description="ASP.NET_v4.0" />
+                <add path="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" allowed="true" groupId="ASP.NET v2.0.50727" description="ASP.NET v2.0.50727" />
+                <add path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" allowed="true" groupId="ASP.NET v2.0.50727" description="ASP.NET v2.0.50727" />
+            </isapiCgiRestriction>
+
+            <requestFiltering>
+                <fileExtensions allowUnlisted="true" applyToWebDAV="true">
+                    <add fileExtension=".asa" allowed="false" />
+                    <add fileExtension=".asax" allowed="false" />
+                    <add fileExtension=".ascx" allowed="false" />
+                    <add fileExtension=".master" allowed="false" />
+                    <add fileExtension=".skin" allowed="false" />
+                    <add fileExtension=".browser" allowed="false" />
+                    <add fileExtension=".sitemap" allowed="false" />
+                    <add fileExtension=".config" allowed="false" />
+                    <add fileExtension=".cs" allowed="false" />
+                    <add fileExtension=".csproj" allowed="false" />
+                    <add fileExtension=".vb" allowed="false" />
+                    <add fileExtension=".vbproj" allowed="false" />
+                    <add fileExtension=".webinfo" allowed="false" />
+                    <add fileExtension=".licx" allowed="false" />
+                    <add fileExtension=".resx" allowed="false" />
+                    <add fileExtension=".resources" allowed="false" />
+                    <add fileExtension=".mdb" allowed="false" />
+                    <add fileExtension=".vjsproj" allowed="false" />
+                    <add fileExtension=".java" allowed="false" />
+                    <add fileExtension=".jsl" allowed="false" />
+                    <add fileExtension=".ldb" allowed="false" />
+                    <add fileExtension=".dsdgm" allowed="false" />
+                    <add fileExtension=".ssdgm" allowed="false" />
+                    <add fileExtension=".lsad" allowed="false" />
+                    <add fileExtension=".ssmap" allowed="false" />
+                    <add fileExtension=".cd" allowed="false" />
+                    <add fileExtension=".dsprototype" allowed="false" />
+                    <add fileExtension=".lsaprototype" allowed="false" />
+                    <add fileExtension=".sdm" allowed="false" />
+                    <add fileExtension=".sdmDocument" allowed="false" />
+                    <add fileExtension=".mdf" allowed="false" />
+                    <add fileExtension=".ldf" allowed="false" />
+                    <add fileExtension=".ad" allowed="false" />
+                    <add fileExtension=".dd" allowed="false" />
+                    <add fileExtension=".ldd" allowed="false" />
+                    <add fileExtension=".sd" allowed="false" />
+                    <add fileExtension=".adprototype" allowed="false" />
+                    <add fileExtension=".lddprototype" allowed="false" />
+                    <add fileExtension=".exclude" allowed="false" />
+                    <add fileExtension=".refresh" allowed="false" />
+                    <add fileExtension=".compiled" allowed="false" />
+                    <add fileExtension=".msgx" allowed="false" />
+                    <add fileExtension=".vsdisco" allowed="false" />
+                    <add fileExtension=".rules" allowed="false" />
+                </fileExtensions>
+                <verbs allowUnlisted="true" applyToWebDAV="true" />
+                <hiddenSegments applyToWebDAV="true">
+                    <add segment="web.config" />
+                    <add segment="bin" />
+                    <add segment="App_code" />
+                    <add segment="App_GlobalResources" />
+                    <add segment="App_LocalResources" />
+                    <add segment="App_WebReferences" />
+                    <add segment="App_Data" />
+                    <add segment="App_Browsers" />
+                </hiddenSegments>
+            </requestFiltering>
+
+        </security>
+
+        <serverSideInclude ssiExecDisable="false" />
+
+        <staticContent lockAttributes="isDocFooterFileName">
+            <mimeMap fileExtension=".323" mimeType="text/h323" />
+            <mimeMap fileExtension=".3g2" mimeType="video/3gpp2" />
+            <mimeMap fileExtension=".3gp2" mimeType="video/3gpp2" />
+            <mimeMap fileExtension=".3gp" mimeType="video/3gpp" />
+            <mimeMap fileExtension=".3gpp" mimeType="video/3gpp" />
+            <mimeMap fileExtension=".aac" mimeType="audio/aac" />
+            <mimeMap fileExtension=".aaf" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".aca" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".accdb" mimeType="application/msaccess" />
+            <mimeMap fileExtension=".accde" mimeType="application/msaccess" />
+            <mimeMap fileExtension=".accdt" mimeType="application/msaccess" />
+            <mimeMap fileExtension=".acx" mimeType="application/internet-property-stream" />
+            <mimeMap fileExtension=".adt" mimeType="audio/vnd.dlna.adts" />
+            <mimeMap fileExtension=".adts" mimeType="audio/vnd.dlna.adts" />
+            <mimeMap fileExtension=".afm" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".ai" mimeType="application/postscript" />
+            <mimeMap fileExtension=".aif" mimeType="audio/x-aiff" />
+            <mimeMap fileExtension=".aifc" mimeType="audio/aiff" />
+            <mimeMap fileExtension=".aiff" mimeType="audio/aiff" />
+            <mimeMap fileExtension=".appcache" mimeType="text/cache-manifest" />
+            <mimeMap fileExtension=".application" mimeType="application/x-ms-application" />
+            <mimeMap fileExtension=".art" mimeType="image/x-jg" />
+            <mimeMap fileExtension=".asd" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".asf" mimeType="video/x-ms-asf" />
+            <mimeMap fileExtension=".asi" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".asm" mimeType="text/plain" />
+            <mimeMap fileExtension=".asr" mimeType="video/x-ms-asf" />
+            <mimeMap fileExtension=".asx" mimeType="video/x-ms-asf" />
+            <mimeMap fileExtension=".atom" mimeType="application/atom+xml" />
+            <mimeMap fileExtension=".au" mimeType="audio/basic" />
+            <mimeMap fileExtension=".avi" mimeType="video/avi" />
+            <mimeMap fileExtension=".axs" mimeType="application/olescript" />
+            <mimeMap fileExtension=".bas" mimeType="text/plain" />
+            <mimeMap fileExtension=".bcpio" mimeType="application/x-bcpio" />
+            <mimeMap fileExtension=".bin" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".bmp" mimeType="image/bmp" />
+            <mimeMap fileExtension=".c" mimeType="text/plain" />
+            <mimeMap fileExtension=".cab" mimeType="application/vnd.ms-cab-compressed" />
+            <mimeMap fileExtension=".calx" mimeType="application/vnd.ms-office.calx" />
+            <mimeMap fileExtension=".cat" mimeType="application/vnd.ms-pki.seccat" />
+            <mimeMap fileExtension=".cdf" mimeType="application/x-cdf" />
+            <mimeMap fileExtension=".chm" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".class" mimeType="application/x-java-applet" />
+            <mimeMap fileExtension=".clp" mimeType="application/x-msclip" />
+            <mimeMap fileExtension=".cmx" mimeType="image/x-cmx" />
+            <mimeMap fileExtension=".cnf" mimeType="text/plain" />
+            <mimeMap fileExtension=".cod" mimeType="image/cis-cod" />
+            <mimeMap fileExtension=".cpio" mimeType="application/x-cpio" />
+            <mimeMap fileExtension=".cpp" mimeType="text/plain" />
+            <mimeMap fileExtension=".crd" mimeType="application/x-mscardfile" />
+            <mimeMap fileExtension=".crl" mimeType="application/pkix-crl" />
+            <mimeMap fileExtension=".crt" mimeType="application/x-x509-ca-cert" />
+            <mimeMap fileExtension=".csh" mimeType="application/x-csh" />
+            <mimeMap fileExtension=".css" mimeType="text/css" />
+            <mimeMap fileExtension=".csv" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".cur" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".dcr" mimeType="application/x-director" />
+            <mimeMap fileExtension=".deploy" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".der" mimeType="application/x-x509-ca-cert" />
+            <mimeMap fileExtension=".dib" mimeType="image/bmp" />
+            <mimeMap fileExtension=".dir" mimeType="application/x-director" />
+            <mimeMap fileExtension=".disco" mimeType="text/xml" />
+            <mimeMap fileExtension=".dll" mimeType="application/x-msdownload" />
+            <mimeMap fileExtension=".dll.config" mimeType="text/xml" />
+            <mimeMap fileExtension=".dlm" mimeType="text/dlm" />
+            <mimeMap fileExtension=".doc" mimeType="application/msword" />
+            <mimeMap fileExtension=".docm" mimeType="application/vnd.ms-word.document.macroEnabled.12" />
+            <mimeMap fileExtension=".docx" mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.document" />
+            <mimeMap fileExtension=".dot" mimeType="application/msword" />
+            <mimeMap fileExtension=".dotm" mimeType="application/vnd.ms-word.template.macroEnabled.12" />
+            <mimeMap fileExtension=".dotx" mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.template" />
+            <mimeMap fileExtension=".dsp" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".dtd" mimeType="text/xml" />
+            <mimeMap fileExtension=".dvi" mimeType="application/x-dvi" />
+            <mimeMap fileExtension=".dvr-ms" mimeType="video/x-ms-dvr" />
+            <mimeMap fileExtension=".dwf" mimeType="drawing/x-dwf" />
+            <mimeMap fileExtension=".dwp" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".dxr" mimeType="application/x-director" />
+            <mimeMap fileExtension=".eml" mimeType="message/rfc822" />
+            <mimeMap fileExtension=".emz" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
+            <mimeMap fileExtension=".eps" mimeType="application/postscript" />
+            <mimeMap fileExtension=".esd" mimeType="application/vnd.ms-cab-compressed" />
+            <mimeMap fileExtension=".etx" mimeType="text/x-setext" />
+            <mimeMap fileExtension=".evy" mimeType="application/envoy" />
+            <mimeMap fileExtension=".exe" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".exe.config" mimeType="text/xml" />
+            <mimeMap fileExtension=".fdf" mimeType="application/vnd.fdf" />
+            <mimeMap fileExtension=".fif" mimeType="application/fractals" />
+            <mimeMap fileExtension=".fla" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".flr" mimeType="x-world/x-vrml" />
+            <mimeMap fileExtension=".flv" mimeType="video/x-flv" />
+            <mimeMap fileExtension=".gif" mimeType="image/gif" />
+            <mimeMap fileExtension=".glb" mimeType="model/gltf-binary" />
+            <mimeMap fileExtension=".gtar" mimeType="application/x-gtar" />
+            <mimeMap fileExtension=".gz" mimeType="application/x-gzip" />
+            <mimeMap fileExtension=".h" mimeType="text/plain" />
+            <mimeMap fileExtension=".hdf" mimeType="application/x-hdf" />
+            <mimeMap fileExtension=".hdml" mimeType="text/x-hdml" />
+            <mimeMap fileExtension=".hhc" mimeType="application/x-oleobject" />
+            <mimeMap fileExtension=".hhk" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".hhp" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".hlp" mimeType="application/winhlp" />
+            <mimeMap fileExtension=".hqx" mimeType="application/mac-binhex40" />
+            <mimeMap fileExtension=".hta" mimeType="application/hta" />
+            <mimeMap fileExtension=".htc" mimeType="text/x-component" />
+            <mimeMap fileExtension=".htm" mimeType="text/html" />
+            <mimeMap fileExtension=".html" mimeType="text/html" />
+            <mimeMap fileExtension=".htt" mimeType="text/webviewhtml" />
+            <mimeMap fileExtension=".hxt" mimeType="text/html" />
+            <mimeMap fileExtension=".ico" mimeType="image/x-icon" />
+            <mimeMap fileExtension=".ics" mimeType="text/calendar" />
+            <mimeMap fileExtension=".ief" mimeType="image/ief" />
+            <mimeMap fileExtension=".iii" mimeType="application/x-iphone" />
+            <mimeMap fileExtension=".inf" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".ins" mimeType="application/x-internet-signup" />
+            <mimeMap fileExtension=".isp" mimeType="application/x-internet-signup" />
+            <mimeMap fileExtension=".IVF" mimeType="video/x-ivf" />
+            <mimeMap fileExtension=".jar" mimeType="application/java-archive" />
+            <mimeMap fileExtension=".java" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".jck" mimeType="application/liquidmotion" />
+            <mimeMap fileExtension=".jcz" mimeType="application/liquidmotion" />
+            <mimeMap fileExtension=".jfif" mimeType="image/pjpeg" />
+            <mimeMap fileExtension=".jpb" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".jpe" mimeType="image/jpeg" />
+            <mimeMap fileExtension=".jpeg" mimeType="image/jpeg" />
+            <mimeMap fileExtension=".jpg" mimeType="image/jpeg" />
+            <mimeMap fileExtension=".js" mimeType="application/javascript" />
+            <mimeMap fileExtension=".json" mimeType="application/json" />
+            <mimeMap fileExtension=".jsonld" mimeType="application/ld+json" />
+            <mimeMap fileExtension=".jsx" mimeType="text/jscript" />
+            <mimeMap fileExtension=".latex" mimeType="application/x-latex" />
+            <mimeMap fileExtension=".less" mimeType="text/css" />
+            <mimeMap fileExtension=".lit" mimeType="application/x-ms-reader" />
+            <mimeMap fileExtension=".lpk" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".lsf" mimeType="video/x-la-asf" />
+            <mimeMap fileExtension=".lsx" mimeType="video/x-la-asf" />
+            <mimeMap fileExtension=".lzh" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".m13" mimeType="application/x-msmediaview" />
+            <mimeMap fileExtension=".m14" mimeType="application/x-msmediaview" />
+            <mimeMap fileExtension=".m1v" mimeType="video/mpeg" />
+            <mimeMap fileExtension=".m2ts" mimeType="video/vnd.dlna.mpeg-tts" />
+            <mimeMap fileExtension=".m3u" mimeType="audio/x-mpegurl" />
+            <mimeMap fileExtension=".m4a" mimeType="audio/mp4" />
+            <mimeMap fileExtension=".m4v" mimeType="video/mp4" />
+            <mimeMap fileExtension=".man" mimeType="application/x-troff-man" />
+            <mimeMap fileExtension=".manifest" mimeType="application/x-ms-manifest" />
+            <mimeMap fileExtension=".map" mimeType="text/plain" />
+            <mimeMap fileExtension=".mdb" mimeType="application/x-msaccess" />
+            <mimeMap fileExtension=".mdp" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".me" mimeType="application/x-troff-me" />
+            <mimeMap fileExtension=".mht" mimeType="message/rfc822" />
+            <mimeMap fileExtension=".mhtml" mimeType="message/rfc822" />
+            <mimeMap fileExtension=".mid" mimeType="audio/mid" />
+            <mimeMap fileExtension=".midi" mimeType="audio/mid" />
+            <mimeMap fileExtension=".mix" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".mmf" mimeType="application/x-smaf" />
+            <mimeMap fileExtension=".mno" mimeType="text/xml" />
+            <mimeMap fileExtension=".mny" mimeType="application/x-msmoney" />
+            <mimeMap fileExtension=".mov" mimeType="video/quicktime" />
+            <mimeMap fileExtension=".movie" mimeType="video/x-sgi-movie" />
+            <mimeMap fileExtension=".mp2" mimeType="video/mpeg" />
+            <mimeMap fileExtension=".mp3" mimeType="audio/mpeg" />
+            <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
+            <mimeMap fileExtension=".mp4v" mimeType="video/mp4" />
+            <mimeMap fileExtension=".mpa" mimeType="video/mpeg" />
+            <mimeMap fileExtension=".mpe" mimeType="video/mpeg" />
+            <mimeMap fileExtension=".mpeg" mimeType="video/mpeg" />
+            <mimeMap fileExtension=".mpg" mimeType="video/mpeg" />
+            <mimeMap fileExtension=".mpp" mimeType="application/vnd.ms-project" />
+            <mimeMap fileExtension=".mpv2" mimeType="video/mpeg" />
+            <mimeMap fileExtension=".ms" mimeType="application/x-troff-ms" />
+            <mimeMap fileExtension=".msi" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".mso" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".mvb" mimeType="application/x-msmediaview" />
+            <mimeMap fileExtension=".mvc" mimeType="application/x-miva-compiled" />
+            <mimeMap fileExtension=".nc" mimeType="application/x-netcdf" />
+            <mimeMap fileExtension=".nsc" mimeType="video/x-ms-asf" />
+            <mimeMap fileExtension=".nws" mimeType="message/rfc822" />
+            <mimeMap fileExtension=".ocx" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".oda" mimeType="application/oda" />
+            <mimeMap fileExtension=".odc" mimeType="text/x-ms-odc" />
+            <mimeMap fileExtension=".ods" mimeType="application/oleobject" />
+            <mimeMap fileExtension=".oga" mimeType="audio/ogg" />
+            <mimeMap fileExtension=".ogg" mimeType="video/ogg" />
+            <mimeMap fileExtension=".ogv" mimeType="video/ogg" />
+            <mimeMap fileExtension=".one" mimeType="application/onenote" />
+            <mimeMap fileExtension=".onea" mimeType="application/onenote" />
+            <mimeMap fileExtension=".onetoc" mimeType="application/onenote" />
+            <mimeMap fileExtension=".onetoc2" mimeType="application/onenote" />
+            <mimeMap fileExtension=".onetmp" mimeType="application/onenote" />
+            <mimeMap fileExtension=".onepkg" mimeType="application/onenote" />
+            <mimeMap fileExtension=".osdx" mimeType="application/opensearchdescription+xml" />
+            <mimeMap fileExtension=".otf" mimeType="font/otf" />
+            <mimeMap fileExtension=".p10" mimeType="application/pkcs10" />
+            <mimeMap fileExtension=".p12" mimeType="application/x-pkcs12" />
+            <mimeMap fileExtension=".p7b" mimeType="application/x-pkcs7-certificates" />
+            <mimeMap fileExtension=".p7c" mimeType="application/pkcs7-mime" />
+            <mimeMap fileExtension=".p7m" mimeType="application/pkcs7-mime" />
+            <mimeMap fileExtension=".p7r" mimeType="application/x-pkcs7-certreqresp" />
+            <mimeMap fileExtension=".p7s" mimeType="application/pkcs7-signature" />
+            <mimeMap fileExtension=".pbm" mimeType="image/x-portable-bitmap" />
+            <mimeMap fileExtension=".pcx" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".pcz" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".pdf" mimeType="application/pdf" />
+            <mimeMap fileExtension=".pfb" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".pfm" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".pfx" mimeType="application/x-pkcs12" />
+            <mimeMap fileExtension=".pgm" mimeType="image/x-portable-graymap" />
+            <mimeMap fileExtension=".pko" mimeType="application/vnd.ms-pki.pko" />
+            <mimeMap fileExtension=".pma" mimeType="application/x-perfmon" />
+            <mimeMap fileExtension=".pmc" mimeType="application/x-perfmon" />
+            <mimeMap fileExtension=".pml" mimeType="application/x-perfmon" />
+            <mimeMap fileExtension=".pmr" mimeType="application/x-perfmon" />
+            <mimeMap fileExtension=".pmw" mimeType="application/x-perfmon" />
+            <mimeMap fileExtension=".png" mimeType="image/png" />
+            <mimeMap fileExtension=".pnm" mimeType="image/x-portable-anymap" />
+            <mimeMap fileExtension=".pnz" mimeType="image/png" />
+            <mimeMap fileExtension=".pot" mimeType="application/vnd.ms-powerpoint" />
+            <mimeMap fileExtension=".potm" mimeType="application/vnd.ms-powerpoint.template.macroEnabled.12" />
+            <mimeMap fileExtension=".potx" mimeType="application/vnd.openxmlformats-officedocument.presentationml.template" />
+            <mimeMap fileExtension=".ppam" mimeType="application/vnd.ms-powerpoint.addin.macroEnabled.12" />
+            <mimeMap fileExtension=".ppm" mimeType="image/x-portable-pixmap" />
+            <mimeMap fileExtension=".pps" mimeType="application/vnd.ms-powerpoint" />
+            <mimeMap fileExtension=".ppsm" mimeType="application/vnd.ms-powerpoint.slideshow.macroEnabled.12" />
+            <mimeMap fileExtension=".ppsx" mimeType="application/vnd.openxmlformats-officedocument.presentationml.slideshow" />
+            <mimeMap fileExtension=".ppt" mimeType="application/vnd.ms-powerpoint" />
+            <mimeMap fileExtension=".pptm" mimeType="application/vnd.ms-powerpoint.presentation.macroEnabled.12" />
+            <mimeMap fileExtension=".pptx" mimeType="application/vnd.openxmlformats-officedocument.presentationml.presentation" />
+            <mimeMap fileExtension=".prf" mimeType="application/pics-rules" />
+            <mimeMap fileExtension=".prm" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".prx" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".ps" mimeType="application/postscript" />
+            <mimeMap fileExtension=".psd" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".psm" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".psp" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".pub" mimeType="application/x-mspublisher" />
+            <mimeMap fileExtension=".qt" mimeType="video/quicktime" />
+            <mimeMap fileExtension=".qtl" mimeType="application/x-quicktimeplayer" />
+            <mimeMap fileExtension=".qxd" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".ra" mimeType="audio/x-pn-realaudio" />
+            <mimeMap fileExtension=".ram" mimeType="audio/x-pn-realaudio" />
+            <mimeMap fileExtension=".rar" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".ras" mimeType="image/x-cmu-raster" />
+            <mimeMap fileExtension=".rf" mimeType="image/vnd.rn-realflash" />
+            <mimeMap fileExtension=".rgb" mimeType="image/x-rgb" />
+            <mimeMap fileExtension=".rm" mimeType="application/vnd.rn-realmedia" />
+            <mimeMap fileExtension=".rmi" mimeType="audio/mid" />
+            <mimeMap fileExtension=".roff" mimeType="application/x-troff" />
+            <mimeMap fileExtension=".rpm" mimeType="audio/x-pn-realaudio-plugin" />
+            <mimeMap fileExtension=".rtf" mimeType="application/rtf" />
+            <mimeMap fileExtension=".rtx" mimeType="text/richtext" />
+            <mimeMap fileExtension=".scd" mimeType="application/x-msschedule" />
+            <mimeMap fileExtension=".sct" mimeType="text/scriptlet" />
+            <mimeMap fileExtension=".sea" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".setpay" mimeType="application/set-payment-initiation" />
+            <mimeMap fileExtension=".setreg" mimeType="application/set-registration-initiation" />
+            <mimeMap fileExtension=".sgml" mimeType="text/sgml" />
+            <mimeMap fileExtension=".sh" mimeType="application/x-sh" />
+            <mimeMap fileExtension=".shar" mimeType="application/x-shar" />
+            <mimeMap fileExtension=".sit" mimeType="application/x-stuffit" />
+            <mimeMap fileExtension=".sldm" mimeType="application/vnd.ms-powerpoint.slide.macroEnabled.12" />
+            <mimeMap fileExtension=".sldx" mimeType="application/vnd.openxmlformats-officedocument.presentationml.slide" />
+            <mimeMap fileExtension=".smd" mimeType="audio/x-smd" />
+            <mimeMap fileExtension=".smi" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".smx" mimeType="audio/x-smd" />
+            <mimeMap fileExtension=".smz" mimeType="audio/x-smd" />
+            <mimeMap fileExtension=".snd" mimeType="audio/basic" />
+            <mimeMap fileExtension=".snp" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".spc" mimeType="application/x-pkcs7-certificates" />
+            <mimeMap fileExtension=".spl" mimeType="application/futuresplash" />
+            <mimeMap fileExtension=".spx" mimeType="audio/ogg" />
+            <mimeMap fileExtension=".src" mimeType="application/x-wais-source" />
+            <mimeMap fileExtension=".ssm" mimeType="application/streamingmedia" />
+            <mimeMap fileExtension=".sst" mimeType="application/vnd.ms-pki.certstore" />
+            <mimeMap fileExtension=".stl" mimeType="application/vnd.ms-pki.stl" />
+            <mimeMap fileExtension=".sv4cpio" mimeType="application/x-sv4cpio" />
+            <mimeMap fileExtension=".sv4crc" mimeType="application/x-sv4crc" />
+            <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
+            <mimeMap fileExtension=".svgz" mimeType="image/svg+xml" />
+            <mimeMap fileExtension=".swf" mimeType="application/x-shockwave-flash" />
+            <mimeMap fileExtension=".t" mimeType="application/x-troff" />
+            <mimeMap fileExtension=".tar" mimeType="application/x-tar" />
+            <mimeMap fileExtension=".tcl" mimeType="application/x-tcl" />
+            <mimeMap fileExtension=".tex" mimeType="application/x-tex" />
+            <mimeMap fileExtension=".texi" mimeType="application/x-texinfo" />
+            <mimeMap fileExtension=".texinfo" mimeType="application/x-texinfo" />
+            <mimeMap fileExtension=".tgz" mimeType="application/x-compressed" />
+            <mimeMap fileExtension=".thmx" mimeType="application/vnd.ms-officetheme" />
+            <mimeMap fileExtension=".thn" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".tif" mimeType="image/tiff" />
+            <mimeMap fileExtension=".tiff" mimeType="image/tiff" />
+            <mimeMap fileExtension=".toc" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".tr" mimeType="application/x-troff" />
+            <mimeMap fileExtension=".trm" mimeType="application/x-msterminal" />
+            <mimeMap fileExtension=".ts" mimeType="video/vnd.dlna.mpeg-tts" />
+            <mimeMap fileExtension=".tsv" mimeType="text/tab-separated-values" />
+            <mimeMap fileExtension=".ttf" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".tts" mimeType="video/vnd.dlna.mpeg-tts" />
+            <mimeMap fileExtension=".txt" mimeType="text/plain" />
+            <mimeMap fileExtension=".u32" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".uls" mimeType="text/iuls" />
+            <mimeMap fileExtension=".ustar" mimeType="application/x-ustar" />
+            <mimeMap fileExtension=".vbs" mimeType="text/vbscript" />
+            <mimeMap fileExtension=".vcf" mimeType="text/x-vcard" />
+            <mimeMap fileExtension=".vcs" mimeType="text/plain" />
+            <mimeMap fileExtension=".vdx" mimeType="application/vnd.ms-visio.viewer" />
+            <mimeMap fileExtension=".vml" mimeType="text/xml" />
+            <mimeMap fileExtension=".vsd" mimeType="application/vnd.visio" />
+            <mimeMap fileExtension=".vss" mimeType="application/vnd.visio" />
+            <mimeMap fileExtension=".vst" mimeType="application/vnd.visio" />
+            <mimeMap fileExtension=".vsto" mimeType="application/x-ms-vsto" />
+            <mimeMap fileExtension=".vsw" mimeType="application/vnd.visio" />
+            <mimeMap fileExtension=".vsx" mimeType="application/vnd.visio" />
+            <mimeMap fileExtension=".vtx" mimeType="application/vnd.visio" />
+            <mimeMap fileExtension=".wasm" mimeType="application/wasm" />
+            <mimeMap fileExtension=".wav" mimeType="audio/wav" />
+            <mimeMap fileExtension=".wax" mimeType="audio/x-ms-wax" />
+            <mimeMap fileExtension=".wbmp" mimeType="image/vnd.wap.wbmp" />
+            <mimeMap fileExtension=".wcm" mimeType="application/vnd.ms-works" />
+            <mimeMap fileExtension=".wdb" mimeType="application/vnd.ms-works" />
+            <mimeMap fileExtension=".webm" mimeType="video/webm" />
+            <mimeMap fileExtension=".wks" mimeType="application/vnd.ms-works" />
+            <mimeMap fileExtension=".wm" mimeType="video/x-ms-wm" />
+            <mimeMap fileExtension=".wma" mimeType="audio/x-ms-wma" />
+            <mimeMap fileExtension=".wmd" mimeType="application/x-ms-wmd" />
+            <mimeMap fileExtension=".wmf" mimeType="application/x-msmetafile" />
+            <mimeMap fileExtension=".wml" mimeType="text/vnd.wap.wml" />
+            <mimeMap fileExtension=".wmlc" mimeType="application/vnd.wap.wmlc" />
+            <mimeMap fileExtension=".wmls" mimeType="text/vnd.wap.wmlscript" />
+            <mimeMap fileExtension=".wmlsc" mimeType="application/vnd.wap.wmlscriptc" />
+            <mimeMap fileExtension=".wmp" mimeType="video/x-ms-wmp" />
+            <mimeMap fileExtension=".wmv" mimeType="video/x-ms-wmv" />
+            <mimeMap fileExtension=".wmx" mimeType="video/x-ms-wmx" />
+            <mimeMap fileExtension=".wmz" mimeType="application/x-ms-wmz" />
+            <mimeMap fileExtension=".woff" mimeType="font/x-woff" />
+            <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
+            <mimeMap fileExtension=".wps" mimeType="application/vnd.ms-works" />
+            <mimeMap fileExtension=".wri" mimeType="application/x-mswrite" />
+            <mimeMap fileExtension=".wrl" mimeType="x-world/x-vrml" />
+            <mimeMap fileExtension=".wrz" mimeType="x-world/x-vrml" />
+            <mimeMap fileExtension=".wsdl" mimeType="text/xml" />
+            <mimeMap fileExtension=".wtv" mimeType="video/x-ms-wtv" />
+            <mimeMap fileExtension=".wvx" mimeType="video/x-ms-wvx" />
+            <mimeMap fileExtension=".x" mimeType="application/directx" />
+            <mimeMap fileExtension=".xaf" mimeType="x-world/x-vrml" />
+            <mimeMap fileExtension=".xaml" mimeType="application/xaml+xml" />
+            <mimeMap fileExtension=".xap" mimeType="application/x-silverlight-app" />
+            <mimeMap fileExtension=".xbap" mimeType="application/x-ms-xbap" />
+            <mimeMap fileExtension=".xbm" mimeType="image/x-xbitmap" />
+            <mimeMap fileExtension=".xdr" mimeType="text/plain" />
+            <mimeMap fileExtension=".xht" mimeType="application/xhtml+xml" />
+            <mimeMap fileExtension=".xhtml" mimeType="application/xhtml+xml" />
+            <mimeMap fileExtension=".xla" mimeType="application/vnd.ms-excel" />
+            <mimeMap fileExtension=".xlam" mimeType="application/vnd.ms-excel.addin.macroEnabled.12" />
+            <mimeMap fileExtension=".xlc" mimeType="application/vnd.ms-excel" />
+            <mimeMap fileExtension=".xlm" mimeType="application/vnd.ms-excel" />
+            <mimeMap fileExtension=".xls" mimeType="application/vnd.ms-excel" />
+            <mimeMap fileExtension=".xlsb" mimeType="application/vnd.ms-excel.sheet.binary.macroEnabled.12" />
+            <mimeMap fileExtension=".xlsm" mimeType="application/vnd.ms-excel.sheet.macroEnabled.12" />
+            <mimeMap fileExtension=".xlsx" mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
+            <mimeMap fileExtension=".xlt" mimeType="application/vnd.ms-excel" />
+            <mimeMap fileExtension=".xltm" mimeType="application/vnd.ms-excel.template.macroEnabled.12" />
+            <mimeMap fileExtension=".xltx" mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.template" />
+            <mimeMap fileExtension=".xlw" mimeType="application/vnd.ms-excel" />
+            <mimeMap fileExtension=".xml" mimeType="text/xml" />
+            <mimeMap fileExtension=".xof" mimeType="x-world/x-vrml" />
+            <mimeMap fileExtension=".xpm" mimeType="image/x-xpixmap" />
+            <mimeMap fileExtension=".xps" mimeType="application/vnd.ms-xpsdocument" />
+            <mimeMap fileExtension=".xsd" mimeType="text/xml" />
+            <mimeMap fileExtension=".xsf" mimeType="text/xml" />
+            <mimeMap fileExtension=".xsl" mimeType="text/xml" />
+            <mimeMap fileExtension=".xslt" mimeType="text/xml" />
+            <mimeMap fileExtension=".xsn" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".xtp" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".xwd" mimeType="image/x-xwindowdump" />
+            <mimeMap fileExtension=".z" mimeType="application/x-compress" />
+            <mimeMap fileExtension=".zip" mimeType="application/x-zip-compressed" />
+        </staticContent>
+
+        <tracing>
+
+            <traceFailedRequests>
+                <add path="*">
+                    <traceAreas>
+                        <add provider="ASP" verbosity="Verbose" />
+                        <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
+                        <add provider="ISAPI Extension" verbosity="Verbose" />
+                        <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression,Cache,RequestNotifications,Module,Rewrite,WebSocket" verbosity="Verbose" />
+                    </traceAreas>
+                    <failureDefinitions statusCodes="200-999" />
+                </add>
+            </traceFailedRequests>
+
+            <traceProviderDefinitions>
+                <add name="WWW Server" guid="{3a2a4e84-4c21-4981-ae10-3fda0d9b0f83}">
+                    <areas>
+                        <clear />
+                        <add name="Authentication" value="2" />
+                        <add name="Security" value="4" />
+                        <add name="Filter" value="8" />
+                        <add name="StaticFile" value="16" />
+                        <add name="CGI" value="32" />
+                        <add name="Compression" value="64" />
+                        <add name="Cache" value="128" />
+                        <add name="RequestNotifications" value="256" />
+                        <add name="Module" value="512" />
+                        <add name="Rewrite" value="1024" />
+                        <add name="FastCGI" value="4096" />
+                        <add name="WebSocket" value="16384" />
+                    </areas>
+                </add>
+                <add name="ASP" guid="{06b94d9a-b15e-456e-a4ef-37c984a2cb4b}">
+                    <areas>
+                        <clear />
+                    </areas>
+                </add>
+                <add name="ISAPI Extension" guid="{a1c2040e-8840-4c31-ba11-9871031a19ea}">
+                    <areas>
+                        <clear />
+                    </areas>
+                </add>
+                <add name="ASPNET" guid="{AFF081FE-0247-4275-9C4E-021F3DC1DA35}">
+                    <areas>
+                        <add name="Infrastructure" value="1" />
+                        <add name="Module" value="2" />
+                        <add name="Page" value="4" />
+                        <add name="AppServices" value="8" />
+                    </areas>
+                </add>
+            </traceProviderDefinitions>
+
+        </tracing>
+
+        <urlCompression />
+
+        <validation />
+        <webdav>
+            <globalSettings>
+                <propertyStores>
+                    <add name="webdav_simple_prop" image="%IIS_BIN%\webdav_simple_prop.dll" image32="%IIS_BIN%\webdav_simple_prop.dll" />
+                </propertyStores>
+                <lockStores>
+                    <add name="webdav_simple_lock" image="%IIS_BIN%\webdav_simple_lock.dll" image32="%IIS_BIN%\webdav_simple_lock.dll" />
+                </lockStores>
+
+            </globalSettings>
+            <authoring>
+                <locks enabled="true" lockStore="webdav_simple_lock" />
+            </authoring>
+            <authoringRules />
+        </webdav>
+        <webSocket />
+        <applicationInitialization />
+
+    </system.webServer>
+    <location path="" overrideMode="Allow">
+        <system.webServer>
+            <modules>
+                <add name="IsapiFilterModule" lockItem="true" />
+                <add name="BasicAuthenticationModule" lockItem="true" />
+                <add name="IsapiModule" lockItem="true" />
+                <add name="HttpLoggingModule" lockItem="true" />
+                <add name="DynamicCompressionModule" lockItem="true" />
+                <add name="StaticCompressionModule" lockItem="true" />
+                <add name="DefaultDocumentModule" lockItem="true" />
+                <add name="DirectoryListingModule" lockItem="true" />
+                <add name="ProtocolSupportModule" lockItem="true" />
+                <add name="HttpRedirectionModule" lockItem="true" />
+                <add name="ServerSideIncludeModule" lockItem="true" />
+                <add name="StaticFileModule" lockItem="true" />
+                <add name="AnonymousAuthenticationModule" lockItem="true" />
+                <add name="CertificateMappingAuthenticationModule" lockItem="true" />
+                <add name="UrlAuthorizationModule" lockItem="true" />
+                <add name="WindowsAuthenticationModule" lockItem="true" />
+                <add name="IISCertificateMappingAuthenticationModule" lockItem="true" />
+                <add name="WebMatrixSupportModule" lockItem="true" />
+                <add name="IpRestrictionModule" lockItem="true" />
+                <add name="DynamicIpRestrictionModule" lockItem="true" />
+                <add name="RequestFilteringModule" lockItem="true" />
+                <add name="CustomLoggingModule" lockItem="true" />
+                <add name="CustomErrorModule" lockItem="true" />
+                <add name="FailedRequestsTracingModule" lockItem="true" />
+                <add name="CgiModule" lockItem="true" />
+                <add name="FastCgiModule" lockItem="true" />
+<!--                <add name="WebDAVModule" /> -->
+                <add name="RewriteModule" />
+                <add name="OutputCache" type="System.Web.Caching.OutputCacheModule" preCondition="managedHandler" />
+                <add name="Session" type="System.Web.SessionState.SessionStateModule" preCondition="managedHandler" />
+                <add name="WindowsAuthentication" type="System.Web.Security.WindowsAuthenticationModule" preCondition="managedHandler" />
+                <add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" preCondition="managedHandler" />
+                <add name="DefaultAuthentication" type="System.Web.Security.DefaultAuthenticationModule" preCondition="managedHandler" />
+                <add name="RoleManager" type="System.Web.Security.RoleManagerModule" preCondition="managedHandler" />
+                <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" preCondition="managedHandler" />
+                <add name="FileAuthorization" type="System.Web.Security.FileAuthorizationModule" preCondition="managedHandler" />
+                <add name="AnonymousIdentification" type="System.Web.Security.AnonymousIdentificationModule" preCondition="managedHandler" />
+                <add name="Profile" type="System.Web.Profile.ProfileModule" preCondition="managedHandler" />
+                <add name="UrlMappingsModule" type="System.Web.UrlMappingsModule" preCondition="managedHandler" />
+                <add name="ApplicationInitializationModule" lockItem="true" />
+                <add name="WebSocketModule" lockItem="true" />
+                <add name="ServiceModel-4.0" type="System.ServiceModel.Activation.ServiceHttpModule,System.ServiceModel.Activation,Version=4.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler,runtimeVersionv4.0" />
+                <add name="ConfigurationValidationModule" lockItem="true" />
+                <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="managedHandler,runtimeVersionv4.0" />
+                <add name="ScriptModule-4.0" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler,runtimeVersionv4.0" />
+                <add name="ServiceModel" type="System.ServiceModel.Activation.HttpModule, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler,runtimeVersionv2.0" />
+            </modules>
+            <handlers accessPolicy="Read, Script">
+<!--                <add name="WebDAV" path="*" verb="PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK" modules="WebDAVModule" resourceType="Unspecified" requireAccess="None" /> -->
+                <add name="AXD-ISAPI-4.0_64bit" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="PageHandlerFactory-ISAPI-4.0_64bit" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="SimpleHandlerFactory-ISAPI-4.0_64bit" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="WebServiceHandlerFactory-ISAPI-4.0_64bit" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="HttpRemotingHandlerFactory-rem-ISAPI-4.0_64bit" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="HttpRemotingHandlerFactory-soap-ISAPI-4.0_64bit" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="svc-ISAPI-4.0_64bit" path="*.svc" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
+                <add name="rules-ISAPI-4.0_64bit" path="*.rules" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
+                <add name="xoml-ISAPI-4.0_64bit" path="*.xoml" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
+                <add name="xamlx-ISAPI-4.0_64bit" path="*.xamlx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
+                <add name="aspq-ISAPI-4.0_64bit" path="*.aspq" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="cshtm-ISAPI-4.0_64bit" path="*.cshtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="cshtml-ISAPI-4.0_64bit" path="*.cshtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="vbhtm-ISAPI-4.0_64bit" path="*.vbhtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="vbhtml-ISAPI-4.0_64bit" path="*.vbhtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="svc-Integrated" path="*.svc" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="svc-ISAPI-2.0" path="*.svc" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" />
+                <add name="xoml-Integrated" path="*.xoml" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="xoml-ISAPI-2.0" path="*.xoml" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" />
+                <add name="rules-Integrated" path="*.rules" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="rules-ISAPI-2.0" path="*.rules" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" />
+                <add name="AXD-ISAPI-4.0_32bit" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="PageHandlerFactory-ISAPI-4.0_32bit" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="SimpleHandlerFactory-ISAPI-4.0_32bit" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="WebServiceHandlerFactory-ISAPI-4.0_32bit" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="HttpRemotingHandlerFactory-rem-ISAPI-4.0_32bit" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="HttpRemotingHandlerFactory-soap-ISAPI-4.0_32bit" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="svc-ISAPI-4.0_32bit" path="*.svc" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
+                <add name="rules-ISAPI-4.0_32bit" path="*.rules" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
+                <add name="xoml-ISAPI-4.0_32bit" path="*.xoml" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
+                <add name="xamlx-ISAPI-4.0_32bit" path="*.xamlx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
+                <add name="aspq-ISAPI-4.0_32bit" path="*.aspq" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="cshtm-ISAPI-4.0_32bit" path="*.cshtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="cshtml-ISAPI-4.0_32bit" path="*.cshtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="vbhtm-ISAPI-4.0_32bit" path="*.vbhtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="vbhtml-ISAPI-4.0_32bit" path="*.vbhtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="TraceHandler-Integrated-4.0" path="trace.axd" verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TraceHandler" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="WebAdminHandler-Integrated-4.0" path="WebAdmin.axd" verb="GET,DEBUG" type="System.Web.Handlers.WebAdminHandler" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="AssemblyResourceLoader-Integrated-4.0" path="WebResource.axd" verb="GET,DEBUG" type="System.Web.Handlers.AssemblyResourceLoader" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="PageHandlerFactory-Integrated-4.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="SimpleHandlerFactory-Integrated-4.0" path="*.ashx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.SimpleHandlerFactory" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="WebServiceHandlerFactory-Integrated-4.0" path="*.asmx" verb="GET,HEAD,POST,DEBUG" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="HttpRemotingHandlerFactory-rem-Integrated-4.0" path="*.rem" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="HttpRemotingHandlerFactory-soap-Integrated-4.0" path="*.soap" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="svc-Integrated-4.0" path="*.svc" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="rules-Integrated-4.0" path="*.rules" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="xoml-Integrated-4.0" path="*.xoml" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="xamlx-Integrated-4.0" path="*.xamlx" verb="GET,HEAD,POST,DEBUG" type="System.Xaml.Hosting.XamlHttpHandlerFactory, System.Xaml.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="aspq-Integrated-4.0" path="*.aspq" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="cshtm-Integrated-4.0" path="*.cshtm" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="cshtml-Integrated-4.0" path="*.cshtml" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="vbhtm-Integrated-4.0" path="*.vbhtm" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="vbhtml-Integrated-4.0" path="*.vbhtml" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="ScriptHandlerFactoryAppServices-Integrated-4.0" path="*_AppService.axd" verb="*" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="ScriptResourceIntegrated-4.0" path="*ScriptResource.axd" verb="GET,HEAD" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="ASPClassic" path="*.asp" verb="GET,HEAD,POST" modules="IsapiModule" scriptProcessor="%IIS_BIN%\asp.dll" resourceType="File" />
+                <add name="SecurityCertificate" path="*.cer" verb="GET,HEAD,POST" modules="IsapiModule" scriptProcessor="%IIS_BIN%\asp.dll" resourceType="File" />
+                <add name="ISAPI-dll" path="*.dll" verb="*" modules="IsapiModule" resourceType="File" requireAccess="Execute" allowPathInfo="true" />
+                <add name="TraceHandler-Integrated" path="trace.axd" verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TraceHandler" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="WebAdminHandler-Integrated" path="WebAdmin.axd" verb="GET,DEBUG" type="System.Web.Handlers.WebAdminHandler" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="AssemblyResourceLoader-Integrated" path="WebResource.axd" verb="GET,DEBUG" type="System.Web.Handlers.AssemblyResourceLoader" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="PageHandlerFactory-Integrated" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="SimpleHandlerFactory-Integrated" path="*.ashx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.SimpleHandlerFactory" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="WebServiceHandlerFactory-Integrated" path="*.asmx" verb="GET,HEAD,POST,DEBUG" type="System.Web.Services.Protocols.WebServiceHandlerFactory,System.Web.Services,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="HttpRemotingHandlerFactory-rem-Integrated" path="*.rem" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,System.Runtime.Remoting,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="HttpRemotingHandlerFactory-soap-Integrated" path="*.soap" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,System.Runtime.Remoting,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="AXD-ISAPI-2.0" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
+                <add name="PageHandlerFactory-ISAPI-2.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
+                <add name="SimpleHandlerFactory-ISAPI-2.0" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
+                <add name="WebServiceHandlerFactory-ISAPI-2.0" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
+                <add name="HttpRemotingHandlerFactory-rem-ISAPI-2.0" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
+                <add name="HttpRemotingHandlerFactory-soap-ISAPI-2.0" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
+                <add name="svc-ISAPI-2.0-64" path="*.svc" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" />
+                <add name="AXD-ISAPI-2.0-64" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
+                <add name="PageHandlerFactory-ISAPI-2.0-64" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
+                <add name="SimpleHandlerFactory-ISAPI-2.0-64" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
+                <add name="WebServiceHandlerFactory-ISAPI-2.0-64" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
+                <add name="HttpRemotingHandlerFactory-rem-ISAPI-2.0-64" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
+                <add name="HttpRemotingHandlerFactory-soap-ISAPI-2.0-64" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
+                <add name="rules-64-ISAPI-2.0" path="*.rules" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" />
+                <add name="xoml-64-ISAPI-2.0" path="*.xoml" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" />
+                <add name="CGI-exe" path="*.exe" verb="*" modules="CgiModule" resourceType="File" requireAccess="Execute" allowPathInfo="true" />
+                <add name="SSINC-stm" path="*.stm" verb="GET,HEAD,POST" modules="ServerSideIncludeModule" resourceType="File" />
+                <add name="SSINC-shtm" path="*.shtm" verb="GET,HEAD,POST" modules="ServerSideIncludeModule" resourceType="File" />
+                <add name="SSINC-shtml" path="*.shtml" verb="GET,HEAD,POST" modules="ServerSideIncludeModule" resourceType="File" />
+                <add name="TRACEVerbHandler" path="*" verb="TRACE" modules="ProtocolSupportModule" requireAccess="None" />
+                <add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" modules="ProtocolSupportModule" requireAccess="None" />
+                <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0" />
+                <add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" />
+            </handlers>
+        </system.webServer>
+    </location>
+</configuration>

BIN
code/.vs/HXX.Scanner/v16/.suo


+ 774 - 0
code/HXX.Scanner.Biz/HTTP/http_manager - backup.cs

@@ -0,0 +1,774 @@
+//using System;
+//using System.Collections.Generic;
+//using System.Linq;
+//using System.Text;
+//using System.Threading.Tasks;
+//using System.Net;
+//using System.IO;
+//using System.Collections.Specialized;
+//using System.Threading;
+//using System.Collections.Concurrent;
+//using System.Diagnostics;
+
+//using SqlSugar;
+//using Newtonsoft.Json;
+//using HXX.Scanner.Database;
+//using HXX.Scanner.Common;
+//using HXX.Scanner.Biz.Socket;
+
+//namespace HXX.Scanner.Biz
+//{
+//    /// <summary>
+//    /// 文件上传类
+//    /// </summary>
+//    public class upf
+//    {
+//        /// <summary>
+//        /// 文件基本信息,来自数据库
+//        /// </summary>
+//        public tb_file_info entity { get; set; }
+//        /// <summary>
+//        /// 文件当初状态,判断是否允许做上传的动作
+//        /// </summary>
+//        public ResponseEntity<response_http_uploadImg2> result { get; set; }
+//        /// <summary>
+//        /// seqNumber
+//        /// </summary>
+//        //public int seqNumber { get; set; }
+//        /// <summary>
+//        /// upload type
+//        /// </summary>
+//        public upload_type_enum upload_type { get; set; }
+//    }
+
+//    /// <summary>
+//    /// 文件上传业务
+//    /// </summary>
+//    public class http_manager
+//    {
+//        public http_manager()
+//        {
+//            ////测试状态禁止上传
+//            //if (config_environment.scan_type == ScanType.Test_Panel_1_Side || config_environment.scan_type == ScanType.Test_Panel_2_Sides)
+//            //{
+//            //    return;
+//            //}
+//            //else
+//            //{
+//            //    url_upload = config_environment.web_parameter.uploadUrl + config_manager.Get("uploadFileUrl");
+//            //}
+
+//            url_upload = config_environment.web_parameter.uploadUrl;
+//        }
+
+//        /// <summary>
+//        /// url
+//        /// </summary>
+//        private string url_upload;
+//        /// <summary>
+//        /// 上传失败的处理方法
+//        /// </summary>
+//        public static del_on_net_broken on_net_broken;
+//        /// <summary>
+//        /// 上传结果通知
+//        /// </summary>
+//        public static del_http_notify on_http_notify;
+//        /// <summary>
+//        /// 上传结果通知2
+//        /// </summary>
+//        public static del_http_notify2 on_http_notify2;
+//        /// <summary>
+//        /// 文件上传队列
+//        /// </summary>
+//        private static ConcurrentQueue<upf> queue = new ConcurrentQueue<upf>();
+
+//        //public void Upload(tb_file_info _entity, ResponseEntity<response_http_uploadImg> _result)
+//        //{
+//        //    var e_q = new upf() { entity = _entity, result = _result, seqNumber = 0 };
+
+//        //    queue.Enqueue(e_q);
+//        //}
+
+//        /// <summary>
+//        /// 检查队列是否为空
+//        /// </summary>
+//        /// <returns></returns>
+//        public static bool check_is_queue_empty()
+//        {
+//            //return false;
+//            return queue.IsEmpty;
+//        }
+
+//        /// <summary>
+//        /// 进上传队列
+//        /// </summary>
+//        /// <param name="e_q"></param>
+//        public void Upload(upf e_q)
+//        {
+//            queue.Enqueue(e_q);
+//        }
+
+//        //public static void start_http_upload()
+//        //{
+//        //    Task.Run(() =>
+//        //    {
+//        //        while (true)
+//        //        {
+//        //            if (!queue.IsEmpty)
+//        //            {
+//        //                queue.TryDequeue(out upf eq);
+
+//        //                if (eq != null)
+//        //                {
+//        //                    new http_manager().Upload_1(eq.entity, eq.result, eq.seqNumber);
+//        //                }
+//        //            }
+//        //            else
+//        //            {
+//        //                Thread.Sleep(100);
+//        //            }
+//        //        }
+//        //    });
+//        //}
+
+//        /// <summary>
+//        /// 队列上传线程
+//        /// </summary>
+//        public static void start_http_upload()
+//        {
+//            Task.Run(() =>
+//            {
+//                while (true)
+//                {
+//                    if (!queue.IsEmpty)
+//                    {
+//                        //队列不空,取一个待上传实体
+//                        queue.TryDequeue(out upf eq);
+
+//                        if (eq != null)
+//                        {
+//                            //真实上传业务
+//                            //开始计时
+//                            Stopwatch sw = new Stopwatch();
+//                            sw.Start();
+
+//                            while (true)
+//                            {
+//                                //判断图片转换和保存数据库操作是否完成
+//                                if ((eq.upload_type == upload_type_enum.normal && eq.result != null && eq.result.Status == 1)
+//                                || eq.upload_type == upload_type_enum.reUpload)
+//                                {
+//                                    //告诉网页端开始上传
+//                                    //if (eq.entity.fi_zipId == 1)
+//                                    //{
+//                                    //    var response = new response_uploading() { batchNumber = eq.entity.fi_batchSeq, subjectCode = eq.entity.fi_subjectCode };
+//                                    //    on_http_notify2(JsonConvert.SerializeObject(response));
+//                                    //}
+
+//                                    //http上传
+//                                    eq.result = new http_manager().Upload_1(eq);
+
+//                                    break;
+//                                }
+//                                else
+//                                {
+//                                    //数据操作超时
+//                                    if (sw.ElapsedMilliseconds > 10000)
+//                                    {
+//                                        eq.result.Status = 0;
+//                                        eq.result.Message = "保存图片超时";
+//                                        sw.Stop();
+//                                        break;
+//                                    }
+//                                    else
+//                                    {
+//                                        Thread.Sleep(100);
+//                                    }
+//                                }
+//                            }
+//                            //真实上传业务
+
+//                            //test
+//                            //if (testflag)
+//                            //{
+//                            //    eq.result.Status = 1;
+//                            //}
+//                            //else
+//                            //{
+//                            //    eq.result.Status = 0;
+//                            //}
+
+//                            //testflag = !testflag;
+//                            //test
+
+//                            AfterUpload(eq);
+//                        }
+//                    }
+//                    else
+//                    {
+//                        Thread.Sleep(100);
+//                    }
+//                }
+//            });
+//        }
+
+//        static bool testflag = true;
+
+//        private static void AfterUpload(upf eq)
+//        {
+//            //Thread.Sleep(1000);
+
+//            try
+//            {
+//                if (eq.result.Status == 1 || eq.result.Status == 200)
+//                {
+//                    entity_server_upload server_response = null;
+
+//                    try
+//                    {
+//                        server_response = JsonConvert.DeserializeObject<entity_server_upload>(eq.result.Data.data_string);
+//                    }
+//                    catch (Exception ee)
+//                    {
+//                        LogManager.WriteLog(ee.Message);
+//                    }
+
+//                    var db_list = new biz_db().get_by_sn(eq.entity.fi_SN);                    
+
+//                    foreach (var entity in db_list)
+//                    {
+//                        var fileName = Path.GetFileName(entity.fi_full_name);
+//                        var path = Path.GetDirectoryName(entity.fi_full_name);
+//                        path = path.Replace("ready", "complete");
+//                        fileName = Path.Combine(path, fileName);
+
+//                        try
+//                        {
+//                            if (File.Exists(fileName))
+//                            {
+//                                File.Delete(fileName);
+//                            }
+
+//                            //把上传成功的文件,从ready移动到complete中                        
+//                            File.Move(entity.fi_full_name, fileName);
+//                        }
+//                        catch (Exception e1)
+//                        {
+//                            LogManager.WriteLog(e1.Message);
+//                            response_error error = new response_error(e1.Message);
+//                            on_http_notify2(JsonConvert.SerializeObject(error));
+//                        }
+
+//                        var url = get_url_from_server_response(entity, server_response);
+
+//                        //上传成功,更新数据库标志
+//                        new biz_db().update_upload_flag_by_id(entity.fi_id, 1, url);
+//                        new biz_db().update_file_name(entity.fi_id, fileName);
+//                    }
+//                }
+//                else if (eq.result.Status == -1)
+//                {
+//                    return;
+//                }
+//                else
+//                {
+//                    new biz_db().update_upload_flag_by_SN(eq.entity.fi_SN.Value, -1);
+//                }
+
+//                //socket发送结果
+//                if (eq.upload_type == upload_type_enum.normal)
+//                {
+//                    notify_nomral(eq);
+//                }
+//                else
+//                {
+//                    notify_reUpload(eq);
+//                }
+//            }
+//            catch (Exception ee)
+//            {
+//                LogManager.WriteLog(eq.result.Message);
+
+//                response_error error = new response_error(ee.Message);
+//                on_http_notify2(JsonConvert.SerializeObject(error));
+//            }
+//        }
+
+//        private static string get_url_from_server_response(tb_file_info db_entity, entity_server_upload server_response)
+//        {
+//            string result = string.Empty;
+
+//            try
+//            {
+//                var data = server_response.data.Where(x => x.Contains("_" + db_entity.fi_zipId + ".")).FirstOrDefault();
+
+//                if (!string.IsNullOrEmpty(data))
+//                {
+//                    result = data;
+//                }
+//            }
+//            catch (Exception ee)
+//            {
+//                LogManager.WriteLog(ee.Message);
+//            }
+
+//            return result;
+//        }
+
+//        private static void notify_nomral(upf eq)
+//        {
+//            var entity = eq.entity;
+//            var qty = new biz_db().get_upload_count_by_batchNumber(eq.entity.fi_batchSeq, eq.entity.fi_subjectCode);
+//            var response1 = new response_uploadNumber() { number = qty.qty_success, batchNumber = eq.entity.fi_batchSeq };
+//            //var response2 = new response_fainNumber() { number = qty.qty_fail, batchNumber = eq.entity.fi_batchSeq };
+//            on_http_notify(eq);
+//            on_http_notify2(JsonConvert.SerializeObject(response1));
+//            //on_http_notify2(JsonConvert.SerializeObject(response2));
+
+//            //if (queue.IsEmpty)
+//            //{
+//            //    var response_finish = new response_uploadFinish() { subjectCode = entity.fi_subjectCode, batchNumber = entity.fi_batchSeq };
+//            //    var upload_count = new biz_db().get_upload_count_by_batchNumber(entity.fi_batchSeq, entity.fi_subjectCode);
+
+//            //    response_finish.scanNumber = new biz_db().get_count_by_batchNumber(entity.fi_batchSeq, entity.fi_subjectCode);
+//            //    response_finish.uploadNumber = upload_count.qty_success;
+//            //    response_finish.failedNumber = upload_count.qty_fail;
+
+//            //    on_http_notify2(JsonConvert.SerializeObject(response_finish));
+//            //}
+//        }
+
+//        public static void notify_scan_finish()
+//        {
+//            Task.Run(() =>
+//            {
+//                if (config_environment.scan_type2 == ScanType.Formal)
+//                {
+//                    while (!queue.IsEmpty)
+//                    {
+//                        Thread.Sleep(100);
+//                    }
+
+//                    var response_finish = new response_uploadFinish();
+
+//                    try
+//                    {
+//                        response_finish.subjectCode = config_environment.web_parameter.subjectCode;
+//                        response_finish.batchNumber = config_environment.web_parameter.batchNumber;
+
+//                        var upload_count = new biz_db().get_upload_count_by_batchNumber(config_environment.web_parameter.batchNumber, config_environment.web_parameter.subjectCode);
+
+//                        response_finish.scanNumber = new biz_db().get_count_by_batchNumber(config_environment.web_parameter.batchNumber, config_environment.web_parameter.subjectCode);
+//                        response_finish.uploadNumber = upload_count.qty_success;
+//                        response_finish.failedNumber = upload_count.qty_fail;
+
+//                    }
+//                    catch (Exception ee)
+//                    {
+//                        response_finish.code = 500;
+//                        response_finish.msg = ee.Message;
+//                        LogManager.WriteLog(ee.Message);
+//                    }
+
+//                    on_http_notify2(JsonConvert.SerializeObject(response_finish));
+//                }
+//            });
+//        }
+
+//        private static void notify_reUpload(upf eq)
+//        {
+//            var response1 = new response_reUpload_single_finish();
+//            response1.fileIndex = get_ids_whenUpload(eq.entity.fi_SN);
+//            response1.batchNumber = eq.entity.fi_batchSeq;
+//            response1.subjectCode = eq.entity.fi_subjectCode;
+
+//            if (eq.result.Status == 1 || eq.result.Status == -1 || eq.result.Status == 200)
+//            {
+//                response1.uploadState = 0;
+//            }
+//            else
+//            {
+//                response1.uploadState = 1;
+//            }
+
+//            on_http_notify2(JsonConvert.SerializeObject(response1));
+
+//            if (queue.IsEmpty)
+//            {
+//                var response_finish = new response_reUpload_all_finish() { subjectCode = eq.entity.fi_subjectCode, batchNumber = eq.entity.fi_batchSeq, number = biz_reUpload.current_list.Count(x => x.fi_side == 1) };
+
+//                string id_list = string.Empty;
+
+//                foreach(var record in biz_reUpload.current_list)
+//                {
+//                    id_list += "," + record.fi_id;
+//                }
+
+//                if (id_list.Length > 0)
+//                {
+//                    id_list = id_list.Substring(1);
+//                }
+
+//                response_finish.failedNumber = new biz_db().get_not_upload_status(id_list);
+
+//                on_http_notify(eq);
+//                on_http_notify2(JsonConvert.SerializeObject(response_finish));
+//            }
+//        }
+
+//        /// <summary>
+//        /// 单任务上传
+//        /// </summary>
+//        /// <param name="entity"></param>
+//        /// <param name="result"></param>
+//        /// <param name="seqNumber"></param>
+//        /// <returns></returns>
+//        //private ResponseEntity<response_http_uploadImg2> Upload_1(tb_file_info entity, ResponseEntity<response_http_uploadImg2> result, int seqNumber)
+//        private ResponseEntity<response_http_uploadImg2> Upload_1(upf eq)
+//        {
+//            if (eq.entity != null)
+//            {
+//                if (eq.upload_type == upload_type_enum.normal && eq.result.Status == 1)
+//                {
+//                    try
+//                    {
+//                        //根据实体获取json
+//                        var content = get_json(eq.entity);
+//                        eq.result = content.Item1;
+
+//                        if (eq.result.Status == 1)
+//                        {
+//                            eq.result = upload_try(eq, eq.result.Message, content.Item2);
+//                        }
+//                        else if (eq.result.Status == -1)
+//                        {
+//                            //双面的第一面,等待第二面到来再传
+//                            return eq.result; 
+//                        }
+//                    }
+//                    catch (Exception ee)
+//                    {
+//                        eq.result.Status = 0;
+//                        eq.result.Message = ee.Message;
+//                    }
+
+//                    //biz_scanFinish.Work(eq.entity, eq.result);
+//                }
+//                else if (eq.upload_type == upload_type_enum.reUpload)
+//                {
+//                    try
+//                    {
+//                        //根据实体获取json
+//                        var content = get_json(eq.entity);
+//                        eq.result = content.Item1;
+
+//                        if (eq.result.Status == 1)
+//                        {
+//                            eq.result = upload_try(eq, eq.result.Message, content.Item2);
+//                        }
+//                        else if (eq.result.Status == -1)
+//                        {
+//                            //双面的第一面,等待第二面到来再传
+//                            return eq.result;
+//                        }
+//                        else
+//                        {
+//                            var response3 = new response_reUpload_error()
+//                            {
+//                                batchNumber = eq.entity.fi_batchSeq,
+//                                subjectCode = eq.entity.fi_subjectCode,
+//                                code = 500,
+//                                msg = eq.result.Message,
+//                            };
+
+//                            on_http_notify2(JsonConvert.SerializeObject(response3));
+//                        }
+//                    }
+//                    catch (Exception ee)
+//                    {
+//                        eq.result.Status = 0;
+//                        eq.result.Message = ee.Message;
+//                        LogManager.WriteLog(ee.Message);
+//                    }
+//                }
+//            }
+
+//            return eq.result;
+//        }
+
+//        private string get_seqNumbers_whenUpload(long? sn)
+//        {
+//            string result = "";
+
+//            var list = new biz_db().get_by_sn(sn);
+
+//            if (list[0].fi_schema != list.Count)
+//            {
+//                throw new Exception("Paper Schema does not match Paper Count");
+//            }
+
+//            foreach(var record in list)
+//            {
+//                result += "," + record.fi_zipId;
+//            }
+
+//            if (result.Length > 0)
+//            {
+//                result = result.Substring(1);
+//            }
+
+//            return result;
+//        }
+
+//        private static string get_ids_whenUpload(long? sn)
+//        {
+//            string result = "";
+
+//            var list = new biz_db().get_by_sn(sn);
+
+//            foreach (var record in list)
+//            {
+//                result += "," + record.fi_id;
+//            }
+
+//            if (result.Length > 0)
+//            {
+//                result = result.Substring(1);
+//            }
+
+//            return result;
+//        }
+
+//        /// <summary>
+//        /// 3次上传尝试
+//        /// </summary>
+//        /// <param name="json"></param>
+//        /// <param name="file_list"></param>
+//        /// <returns></returns>
+//        private ResponseEntity<response_http_uploadImg2> upload_try(upf eq, string json, List<string> file_list)
+//        {
+//            var result = new ResponseEntity<response_http_uploadImg2>();
+//            int try_count = 0;
+
+//            //////////
+//            var entity = JsonConvert.DeserializeObject<request_http_uploadImg>(json);
+//            /////////
+
+//            NameValueCollection param_list = new NameValueCollection();
+
+//            //new
+//            param_list.Add("seqNumbers", get_seqNumbers_whenUpload(eq.entity.fi_SN));
+//            param_list.Add("paperSchema", eq.entity.fi_schema.ToString());
+//            //new
+//            //old
+//            param_list.Add("seqNumber", eq.entity.fi_zipId.ToString());
+//            param_list.Add("schema", eq.entity.fi_schema.ToString());
+//            //old
+//            param_list.Add("jsonParam", config_environment.web_parameter.jsonParam);
+
+//            while (try_count < 3)
+//            {
+//                try_count++;
+
+//                result = upload_try2(param_list, file_list);
+
+//                if (result.Status == 1)
+//                {
+//                    break;
+//                }
+//                else
+//                {
+//                    Thread.Sleep(100);
+//                }
+//            }
+
+//            return result;
+//        }
+
+//        /// <summary>
+//        /// 具体上传逻辑
+//        /// </summary>
+//        /// <param name="param_list"></param>
+//        /// <param name="file_list"></param>
+//        /// <returns></returns>
+//        private ResponseEntity<response_http_uploadImg2> upload_try2(NameValueCollection param_list, List<string> file_list)
+//        {
+//            ResponseEntity<response_http_uploadImg2> result = new ResponseEntity<response_http_uploadImg2>();
+
+//            try
+//            {
+//                var response_string = http_helper.HttpUploadFile2(url_upload, file_list, "files", "multipart/form-data", config_environment.web_parameter.token, param_list);
+
+//                try
+//                {
+//                    result.Data = JsonConvert.DeserializeObject<response_http_uploadImg2>(response_string);                    
+//                }
+//                catch (Exception ee2)
+//                {
+//                    if (ee2.Message.StartsWith("Unexpected character"))
+//                    {
+//                        result.Data = new response_http_uploadImg2() { code = 200 };
+//                    }
+//                    else
+//                    {
+//                        throw ee2;
+//                    }
+//                }
+
+//                result.Data.data_string = response_string;
+
+//                if (result.Data.code == 200)
+//                {
+//                    result.Status = 1;
+//                    result.Message = "ok";
+//                }
+//                else
+//                {
+//                    result.Status = result.Data.code;
+//                    result.Message = result.Data.msg;
+
+//                    LogManager.WriteLog(response_string);
+//                }
+//            }
+//            catch (Exception ee)
+//            {
+//                LogManager.WriteLog(ee);
+
+//                if (ee.Message.Contains("未能解析此远程名称"))
+//                {
+//                    on_net_broken();
+//                }
+//                else if (ee.Message.Contains("超时") || ee.Message.Contains("timeout"))
+//                {
+//                    result.Status = -2;
+//                    result.Message = "http上传超时";
+//                }
+//                else
+//                {
+//                    result.Status = 0;
+//                    result.Message = "http上传文件失败:" + ee.Message;
+//                }
+//            }
+
+//            return result;
+//        }
+
+//        /// <summary>
+//        /// 根据实体获取json
+//        /// </summary>
+//        /// <param name="entity"></param>
+//        /// <param name="seqNumber"></param>
+//        /// <returns></returns>
+//        private Tuple<ResponseEntity<response_http_uploadImg2>, List<string>> get_json(tb_file_info entity)
+//        {
+//            ResponseEntity<response_http_uploadImg2> result_entity = new ResponseEntity<response_http_uploadImg2>();
+//            List<string> result_path = new List<string>();
+
+//            try
+//            {
+//                List<tb_file_info> file_list = new List<tb_file_info>();
+
+//                //单面
+//                if (entity.fi_schema == 1)
+//                {
+//                    file_list.Add(entity);
+//                }
+//                //双面
+//                else
+//                {
+//                    file_list = new biz_db().get_by_sn(entity.fi_SN);
+
+//                    if (file_list.Count < 2)
+//                    {
+//                        var ss = entity.fi_side;
+//                        var ss2 = entity.fi_full_name;
+//                        result_entity.Status = -1;
+//                        result_entity.Message = "第1面,等待第2面再传";
+
+//                        return new Tuple<ResponseEntity<response_http_uploadImg2>, List<string>>(result_entity, result_path);
+//                    }
+
+//                    if (file_list.Count(x => x.fi_upload_flag == 1) == file_list.Count)
+//                    {
+//                        result_entity.Status = -1;
+//                        result_entity.Message = "已全部上传";
+
+//                        return new Tuple<ResponseEntity<response_http_uploadImg2>, List<string>>(result_entity, result_path);
+//                    }
+//                }
+
+//                if (file_list.Count == 1 || file_list.Count == 2)
+//                {
+//                    bool flag = true;
+
+//                    foreach (var f in file_list)
+//                    {
+//                        if (!File.Exists(f.fi_full_name))
+//                        {
+//                            flag = false;
+//                            break;
+//                        }
+//                    }
+
+//                    if (flag)
+//                    {
+//                        var req = new request_http_uploadImg();
+
+//                        req.token = config_environment.web_parameter.token;
+//                        req.fileCount = file_list.Count;
+//                        req.isTest = file_list[0].fi_isTest;
+//                        req.fileMetaInfo = new List<subRequest_http_uploadImg>();
+
+//                        req.zipId = file_list[0].fi_zipId;
+//                        req.examId = file_list[0].fi_examId;
+//                        req.examPaperId = file_list[0].fi_examPaperId;
+//                        //req.seqNumber = file_list[0].fi_schema;
+//                        //req.seqNumber = file_manager.get_seqNumber();
+//                        //req.seqNumber = seqNumber;
+//                        req.schoolId = config_environment.web_parameter.schoolId;
+//                        req.accountId = file_list[0].fi_accountId.ToString();
+//                        //req.completedAmount = new biz_db().get_count_by_seq(config_environment.web_parameter.batchNumber, req.zipId);
+//                        req.completedAmount = new biz_db().get_count_by_seq(file_list[0].fi_batchSeq, req.zipId, config_environment.web_parameter.paperSchema);
+
+//                        //req.batchNumber = file_list[0].fi_batchNumber;
+//                        req.batchNumber = entity.fi_batchSeq;
+//                        req.schema = entity.fi_schema == null ? "1" : entity.fi_schema.ToString();
+
+//                        foreach (var f in file_list)
+//                        {
+//                            var sub = new subRequest_http_uploadImg();
+
+//                            sub.fileName = f.fi_name;
+
+//                            req.fileMetaInfo.Add(sub);
+
+//                            result_path.Add(f.fi_full_name);
+//                        }
+
+//                        result_entity.Status = 1;
+//                        result_entity.Message = JsonConvert.SerializeObject(req);
+//                    }
+//                    else
+//                    {
+//                        result_entity.Status = 0;
+//                        result_entity.Message = "未能找到用于上传的文件";
+//                    }
+//                }
+//                else
+//                {
+//                    result_entity.Status = 0;
+//                    result_entity.Message = "db错误,未能找到用于上传的文件记录";
+//                }
+//            }
+//            catch (Exception ee)
+//            {
+//                LogManager.WriteLog(ee);
+
+//                result_entity.Status = 0;
+//                result_entity.Message = ee.Message;
+//            }
+
+//            return new Tuple<ResponseEntity<response_http_uploadImg2>, List<string>>(result_entity, result_path);
+//        }
+//    }
+//}

+ 76 - 24
code/HXX.Scanner.Biz/HTTP/http_manager.cs

@@ -89,6 +89,9 @@ namespace HXX.Scanner.Biz
         //    queue.Enqueue(e_q);
         //}
 
+        private static readonly object lockObj = new object();
+        public static List<long> ready_list = new List<long>();
+
         /// <summary>
         /// 检查队列是否为空
         /// </summary>
@@ -201,7 +204,7 @@ namespace HXX.Scanner.Biz
                             //testflag = !testflag;
                             //test
 
-                            AfterUpload(eq);
+                            //AfterUpload(eq);
                         }
                     }
                     else
@@ -212,15 +215,13 @@ namespace HXX.Scanner.Biz
             });
         }
 
-        static bool testflag = true;
-
         private static void AfterUpload(upf eq)
         {
             //Thread.Sleep(1000);
 
             try
             {
-                if (eq.result.Status == 1 || eq.result.Status == 200)
+                if (eq.result.Status == 1 || eq.result.Status == 200 )
                 {
                     entity_server_upload server_response = null;
 
@@ -230,10 +231,10 @@ namespace HXX.Scanner.Biz
                     }
                     catch (Exception ee)
                     {
-                        LogManager.WriteLog(ee.Message);
+                        LogManager_Lock.WriteLog(ee.Message);
                     }
 
-                    var db_list = new biz_db().get_by_sn(eq.entity.fi_SN);                    
+                    var db_list = new biz_db().get_by_sn(eq.entity.fi_SN);
 
                     foreach (var entity in db_list)
                     {
@@ -254,7 +255,7 @@ namespace HXX.Scanner.Biz
                         }
                         catch (Exception e1)
                         {
-                            LogManager.WriteLog(e1.Message);
+                            LogManager_Lock.WriteLog(e1.Message);
                             response_error error = new response_error(e1.Message);
                             on_http_notify2(JsonConvert.SerializeObject(error));
                         }
@@ -287,7 +288,7 @@ namespace HXX.Scanner.Biz
             }
             catch (Exception ee)
             {
-                LogManager.WriteLog(eq.result.Message);
+                LogManager_Lock.WriteLog(eq.result.Message);
 
                 response_error error = new response_error(ee.Message);
                 on_http_notify2(JsonConvert.SerializeObject(error));
@@ -399,7 +400,7 @@ namespace HXX.Scanner.Biz
 
                 string id_list = string.Empty;
 
-                foreach(var record in biz_reUpload.current_list)
+                foreach (var record in biz_reUpload.current_list)
                 {
                     id_list += "," + record.fi_id;
                 }
@@ -438,12 +439,17 @@ namespace HXX.Scanner.Biz
 
                         if (eq.result.Status == 1)
                         {
-                            eq.result = upload_try(eq, eq.result.Message, content.Item2);
+                            //多线程上传防重复数据
+                            if (!ready_list.Exists(x => x == eq.entity.fi_SN.Value))
+                            {
+                                ready_list.Add(eq.entity.fi_SN.Value);
+                                eq.result = upload_try(eq, eq.result.Message, content.Item2);
+                            }
                         }
                         else if (eq.result.Status == -1)
                         {
                             //双面的第一面,等待第二面到来再传
-                            return eq.result; 
+                            return eq.result;
                         }
                     }
                     catch (Exception ee)
@@ -507,7 +513,7 @@ namespace HXX.Scanner.Biz
                 throw new Exception("Paper Schema does not match Paper Count");
             }
 
-            foreach(var record in list)
+            foreach (var record in list)
             {
                 result += "," + record.fi_zipId;
             }
@@ -548,7 +554,6 @@ namespace HXX.Scanner.Biz
         private ResponseEntity<response_http_uploadImg2> upload_try(upf eq, string json, List<string> file_list)
         {
             var result = new ResponseEntity<response_http_uploadImg2>();
-            int try_count = 0;
 
             //////////
             var entity = JsonConvert.DeserializeObject<request_http_uploadImg>(json);
@@ -566,23 +571,70 @@ namespace HXX.Scanner.Biz
             //old
             param_list.Add("jsonParam", config_environment.web_parameter.jsonParam);
 
-            while (try_count < 3)
+            //修改为多线程上传
+            ThreadPool_manager.EnqueueTask(new Action(() =>
             {
-                try_count++;
+                upload_thread(eq, param_list, file_list);
+            }));
 
-                result = upload_try2(param_list, file_list);
+            result.Status = 1;
+            result.Message = "ok";
+            return result;
+        }
 
-                if (result.Status == 1)
+        private void upload_thread(upf eq, NameValueCollection param_list, List<string> file_list)
+        {
+            try
+            {
+                int try_count = 0;
+                Stopwatch sw = new Stopwatch();
+
+                while (try_count < 3)
                 {
-                    break;
+                    try_count++;
+                    sw.Restart();
+
+                    eq.result = upload_try2(param_list, file_list);
+
+                    sw.Stop();
+
+                    write_operation_log(try_count, sw, file_list, eq.result);
+
+                    if (eq.result.Status == 1)
+                    {
+                        break;
+                    }
+                    else
+                    {
+                        Thread.Sleep(100);
+                    }
                 }
-                else
+
+                //lock (lockObj)
                 {
-                    Thread.Sleep(100);
+                    AfterUpload(eq);
                 }
             }
+            catch (Exception ee)
+            {
+                LogManager_Lock.WriteLog(ee);
+            }
+        }
 
-            return result;
+        private void write_operation_log(int try_count, Stopwatch sw, List<string> file_list, ResponseEntity<response_http_uploadImg2> result)
+        {
+            StringBuilder sb = new StringBuilder();
+            sb.Append("第" + try_count + "次上传" + Environment.NewLine);
+            sb.Append("服务器返回:" + result.Status + Environment.NewLine);
+            sb.Append("花费时间: " + sw.ElapsedMilliseconds + "ms" + Environment.NewLine + Environment.NewLine);
+            sb.Append("文件列表:" + Environment.NewLine);
+
+            foreach (var f in file_list)
+            {
+                sb.Append(f + Environment.NewLine);
+            }
+
+            LogManager_Lock.WriteLog(sb.ToString());
         }
 
         /// <summary>
@@ -601,7 +653,7 @@ namespace HXX.Scanner.Biz
 
                 try
                 {
-                    result.Data = JsonConvert.DeserializeObject<response_http_uploadImg2>(response_string);                    
+                    result.Data = JsonConvert.DeserializeObject<response_http_uploadImg2>(response_string);
                 }
                 catch (Exception ee2)
                 {
@@ -627,12 +679,12 @@ namespace HXX.Scanner.Biz
                     result.Status = result.Data.code;
                     result.Message = result.Data.msg;
 
-                    LogManager.WriteLog(response_string);
+                    LogManager_Lock.WriteLog(response_string);
                 }
             }
             catch (Exception ee)
             {
-                LogManager.WriteLog(ee);
+                LogManager_Lock.WriteLog(ee);
 
                 if (ee.Message.Contains("未能解析此远程名称"))
                 {

+ 2 - 0
code/HXX.Scanner.Biz/HXX.Scanner.Biz.csproj

@@ -68,7 +68,9 @@
     <Compile Include="biz\pop\biz_pop.cs" />
     <Compile Include="biz\pop\biz_pop2.cs" />
     <Compile Include="biz\pop\LicenseLoader.cs" />
+    <Compile Include="TP\CustomThreadPool.cs" />
     <Compile Include="entity\qty_of_upload.cs" />
+    <Compile Include="HTTP\http_manager - backup.cs" />
     <Compile Include="HTTP\self_http_manager.cs" />
     <Compile Include="HTTP\http_helper_upload - backup.cs" />
     <Compile Include="socketServer\entity_cmd\request\cmd_getFailedImage.cs" />

+ 141 - 0
code/HXX.Scanner.Biz/TP/CustomThreadPool.cs

@@ -0,0 +1,141 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Collections.Concurrent;
+using System.Threading;
+
+namespace HXX.Scanner.Biz
+{
+    public class ThreadPool_manager
+    {
+        private static CustomThreadPool pool;
+
+        public static void init()
+        {
+            pool = new CustomThreadPool(5);
+        }
+
+        public static void EnqueueTask(Action task)
+        {
+            pool.EnqueueTask(task);
+        }
+    }         
+
+    public class CustomThreadPool
+    {
+        #region 字段
+        // 工作线程集合
+        private readonly Thread[] _workerThreads;
+
+        // 线程安全任务队列(存储要执行的任务)
+        private readonly ConcurrentQueue<Action> _taskQueue = new ConcurrentQueue<Action>();
+
+        // 线程同步信号:通知工作线程有新任务到来
+        private readonly ManualResetEventSlim _taskSignal = new ManualResetEventSlim(false);
+
+        // 标记线程池是否已释放
+        private bool _isDisposed;
+        #endregion
+
+        #region 构造函数
+        /// <summary>
+        /// 初始化自定义线程池
+        /// </summary>
+        /// <param name="threadCount">工作线程数量(建议设置为 CPU 核心数)</param>
+        public CustomThreadPool(int threadCount)
+        {
+            if (threadCount <= 0)
+                throw new ArgumentOutOfRangeException(nameof(threadCount), "线程数量必须大于 0");
+
+            // 创建固定数量的工作线程
+            _workerThreads = new Thread[threadCount];
+            for (int i = 0; i < threadCount; i++)
+            {
+                _workerThreads[i] = new Thread(WorkLoop)
+                {
+                    IsBackground = true, // 后台线程:进程退出时自动终止
+                    Name = $"CustomPoolThread_{i}"
+                };
+                _workerThreads[i].Start();
+            }
+        }
+        #endregion
+
+        #region 核心方法
+        /// <summary>
+        /// 向线程池添加任务
+        /// </summary>
+        /// <param name="task">要执行的任务</param>
+        public void EnqueueTask(Action task)
+        {
+            if (task == null)
+                throw new ArgumentNullException(nameof(task));
+            if (_isDisposed)
+                throw new ObjectDisposedException(nameof(CustomThreadPool));
+
+            // 加入任务队列
+            _taskQueue.Enqueue(task);
+            // 通知线程:有新任务可以执行
+            _taskSignal.Set();
+        }
+
+        /// <summary>
+        /// 工作线程主循环(持续从队列取任务执行)
+        /// </summary>
+        private void WorkLoop()
+        {
+            while (!_isDisposed)
+            {
+                // 等待任务信号(无任务时阻塞,不占用 CPU)
+                _taskSignal.Wait();
+
+                // 线程池已关闭,退出循环
+                if (_isDisposed)
+                    break;
+
+                // 尝试从队列取出任务并执行
+                if (_taskQueue.TryDequeue(out Action task))
+                {
+                    try
+                    {
+                        task.Invoke(); // 执行任务
+                    }
+                    catch
+                    {
+                        // 这里可以添加任务异常日志(避免单个任务崩溃整个线程)
+                    }
+                }
+                else
+                {
+                    // 队列空了,重置信号,进入等待状态
+                    _taskSignal.Reset();
+                }
+            }
+        }
+        #endregion
+
+        #region 释放资源
+        /// <summary>
+        /// 关闭线程池,释放所有资源
+        /// </summary>
+        public void Dispose()
+        {
+            if (_isDisposed)
+                return;
+
+            _isDisposed = true;
+            _taskSignal.Set(); // 唤醒所有等待的线程
+
+            // 等待所有工作线程退出
+            foreach (Thread thread in _workerThreads)
+            {
+                thread.Join();
+            }
+
+            _taskSignal.Dispose();
+        }
+        #endregion
+    }
+}

BIN
code/HXX.Scanner.Biz/bin/Debug/HXX.Scanner.Biz.dll


BIN
code/HXX.Scanner.Biz/bin/Debug/HXX.Scanner.Biz.pdb


BIN
code/HXX.Scanner.Biz/bin/Debug/HXX.Scanner.Common.dll


BIN
code/HXX.Scanner.Biz/bin/Debug/HXX.Scanner.Common.pdb


BIN
code/HXX.Scanner.Biz/bin/Debug/HXX.Scanner.Socket.dll


BIN
code/HXX.Scanner.Biz/bin/Debug/HXX.Scanner.Socket.pdb


+ 1 - 1
code/HXX.Scanner.Biz/biz/file_manager.cs

@@ -210,7 +210,7 @@ namespace HXX.Scanner.Biz
             StringBuilder sb = new StringBuilder();
             //var xx = config_manager.Get("dataDir");
 
-            if (config_environment.scan_state)
+            //if (config_environment.scan_state)
             {
                 if (current_scanner_parameter != null)
                 {

+ 33 - 4
code/HXX.Scanner.Biz/biz/pop/biz_pop2.cs

@@ -3,6 +3,8 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using System.Drawing;
+using System.Drawing.Imaging;
 
 using NTwain;
 using NTwain.Data;
@@ -56,10 +58,12 @@ namespace HXX.Scanner.Biz
                 return;
             }
 
+            biz_engine_prepare.prepare();            
+
             // 4. 打开设备
             source.Open();
 
-            // 5. 弹出驱动设置窗口(你要的功能!)
+            // 5. 弹出驱动设置窗口
             source.Enable(SourceEnableMode.ShowUI, false, main_window.Handle);
 
             // 6. 关闭
@@ -93,7 +97,8 @@ namespace HXX.Scanner.Biz
 
         private void Session_SourceDisabled(object sender, EventArgs e)
         {
-            var aa = 1;
+            twain32_events._twain32_AcquireCompleted(null, null);
+            //this.close();
         }
 
         private void Session_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
@@ -109,7 +114,11 @@ namespace HXX.Scanner.Biz
 
         private void Session_TransferError(object sender, TransferErrorEventArgs e)
         {
-            var aa = 1;
+            config_environment.scan_state = false;
+            biz_scanHistory.end_new();
+
+            biz_scanFinish.Work(null, new ResponseEntity<response_http_uploadImg2>() { Status = 0, Message = "发生错误" });
+            biz_scanFinishBatch.Work(3, true);
         }
 
         private void Session_TransferCanceled(object sender, TransferCanceledEventArgs e)
@@ -129,7 +138,27 @@ namespace HXX.Scanner.Biz
 
         private void Session_DataTransferred(object sender, DataTransferredEventArgs e)
         {
-            var aa = 1;
+            try
+            {
+                var stream = e.GetNativeImageStream();
+                Image img = Image.FromStream(stream);
+
+                var fileInfo = file_manager.get_file_info2();
+
+                var file = fileInfo.file_full_name.Replace("bmp", "jpeg");
+
+                img.Save(file, ImageFormat.Jpeg);
+
+                //if (config_environment.scan_state)
+                {
+                    biz_scanHistory.add_history();
+                    file_manager.save(file);
+                }
+            }
+            catch (Exception ex)
+            {
+                LogManager.WriteLog(ex);
+            }
         }
 
         public void close()

BIN
code/HXX.Scanner.Biz/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache


BIN
code/HXX.Scanner.Biz/obj/Debug/HXX.Scanner.Biz.csproj.AssemblyReference.cache


+ 1 - 1
code/HXX.Scanner.Biz/obj/Debug/HXX.Scanner.Biz.csproj.CoreCompileInputs.cache

@@ -1 +1 @@
-d00c141543fafdbc181f8c6736a67ebab0b1964f
+23ff467affba86a874993ea85bfc6243b7e7a5d0

+ 58 - 0
code/HXX.Scanner.Biz/obj/Debug/HXX.Scanner.Biz.csproj.FileListAbsolute.txt

@@ -110,3 +110,61 @@ D:\work\new2\HXX.Scanner - 2\HXX.Scanner.Biz\bin\Debug\Dynamsoft.Twain.xml
 D:\work\new2\HXX.Scanner - 2\HXX.Scanner.Biz\bin\Debug\NTwain.dll
 D:\work\new2\HXX.Scanner - 2\HXX.Scanner.Biz\bin\Debug\NTwain.pdb
 D:\work\new2\HXX.Scanner - 2\HXX.Scanner.Biz\bin\Debug\NTwain.xml
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\db\HXX.db
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\ssl\client.cer
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\hpsocket_cn.txt
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\hpsocket_en.txt
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\HXX.Scanner.Biz.dll.config
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\HXX.Scanner.Biz.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\HXX.Scanner.Biz.pdb
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\Dynamsoft.BarcodeGenerator.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\Dynamsoft.Camera.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\Dynamsoft.Forms.Viewer.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\Dynamsoft.ImageCore.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\Dynamsoft.OCR.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\Dynamsoft.PDF.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\Dynamsoft.Twain.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\Dynamsoft.WPF.Viewer.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\EntityFramework.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\EntityFramework.SqlServer.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\HXX.Scanner.Common.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\HXX.Scanner.Database.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\HXX.Scanner.Socket.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\Newtonsoft.Json.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\NTwain.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\Saraff.Twain.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\SqlSugar.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\System.Data.SQLite.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\System.Data.SQLite.EF6.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\System.Data.SQLite.Linq.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\ICSharpCode.SharpZipLib.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\HPSocket.Net.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\HXX.Scanner.Common.pdb
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\HXX.Scanner.Database.pdb
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\HXX.Scanner.Database.dll.config
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\HXX.Scanner.Socket.pdb
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\Dynamsoft.BarcodeGenerator.xml
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\Dynamsoft.Camera.xml
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\Dynamsoft.ImageCore.xml
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\Dynamsoft.OCR.xml
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\Dynamsoft.PDF.xml
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\Dynamsoft.Twain.xml
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\Dynamsoft.WPF.Viewer.xml
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\EntityFramework.xml
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\EntityFramework.SqlServer.xml
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\Newtonsoft.Json.xml
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\NTwain.pdb
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\NTwain.xml
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\Saraff.Twain.xml
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\System.Data.SQLite.xml
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\HPSocket.Net.pdb
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\HPSocket.Net.xml
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\bin\Debug\Interop.WIA.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\obj\Debug\HXX.Scanner.Biz.csproj.AssemblyReference.cache
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\obj\Debug\Interop.WIA.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\obj\Debug\HXX.Scanner.Biz.csproj.ResolveComReference.cache
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\obj\Debug\HXX.Scanner.Biz.twain32.form.frmHandler.resources
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\obj\Debug\HXX.Scanner.Biz.csproj.GenerateResource.cache
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\obj\Debug\HXX.Scanner.Biz.csproj.CoreCompileInputs.cache
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\obj\Debug\HXX.Scanner.Biz.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Biz\obj\Debug\HXX.Scanner.Biz.pdb

BIN
code/HXX.Scanner.Biz/obj/Debug/HXX.Scanner.Biz.dll


BIN
code/HXX.Scanner.Biz/obj/Debug/HXX.Scanner.Biz.pdb


+ 8 - 6
code/HXX.Scanner.Biz/twain32/engine_twain32.cs

@@ -148,8 +148,8 @@ namespace HXX.Scanner.Biz
                 try
                 {
                     biz_dynam.kill_process();
-                    var biz = new biz_pop();
-                    //var biz = new biz_pop2();
+                    //var biz = new biz_pop();
+                    var biz = new biz_pop2();
 
                     try
                     {
@@ -157,8 +157,8 @@ namespace HXX.Scanner.Biz
                         config_environment.scan_state_socket = true;
                         universe.engine.CloseDataSource();
 
-                        biz.scan(scanner.dsIndex);
-                        //biz.scan(scanner, main_window);
+                        //biz.scan(scanner.dsIndex);
+                        biz.scan(scanner, main_window);
                     }
                     catch (Exception ee)
                     {
@@ -172,8 +172,8 @@ namespace HXX.Scanner.Biz
                         }
                     }
 
-                    biz.close();
-                    biz_dynam.kill_process();
+                    //biz.close();
+                    //biz_dynam.kill_process();
 
                     biz_scanFinishBatch.Work(5, true);
                     scanner_manager.set_current(-1);
@@ -213,6 +213,8 @@ namespace HXX.Scanner.Biz
 
                     if (result.Status == 1)
                     {
+                        http_manager.ready_list.Clear();
+
                         if (!config_environment.use_source_ui)
                         {
                             biz_engine_prepare.prepare();

+ 1 - 0
code/HXX.Scanner.Client/UI/frmMain3.cs

@@ -379,6 +379,7 @@ namespace HXX.Scanner.Client
             update_scan_history();
             http_manager.start_http_upload();
             init_environment();
+            ThreadPool_manager.init();
             new self_http_manager().Start();
             check_version();
         }

BIN
code/HXX.Scanner.Client/bin/Debug/HXX.Scanner.Biz.dll


BIN
code/HXX.Scanner.Client/bin/Debug/HXX.Scanner.Biz.pdb


BIN
code/HXX.Scanner.Client/bin/Debug/HXX.Scanner.Common.dll


BIN
code/HXX.Scanner.Client/bin/Debug/HXX.Scanner.Common.pdb


BIN
code/HXX.Scanner.Client/bin/Debug/HXX.Scanner.Socket.dll


BIN
code/HXX.Scanner.Client/bin/Debug/HXX.Scanner.Socket.pdb


BIN
code/HXX.Scanner.Client/bin/Debug/HXX.Scanner.Starter.exe


BIN
code/HXX.Scanner.Client/bin/Debug/HXX.Scanner.Starter.pdb


BIN
code/HXX.Scanner.Client/bin/Debug/HXX.Scanner.UpdateStarter.Console.exe


BIN
code/HXX.Scanner.Client/bin/Debug/HXX.Scanner.UpdateStarter.Console.pdb


BIN
code/HXX.Scanner.Client/bin/Debug/HXXScannerClient.exe


BIN
code/HXX.Scanner.Client/bin/Debug/HXXScannerClient.pdb


BIN
code/HXX.Scanner.Client/bin/Debug/Interop.WIA.dll


BIN
code/HXX.Scanner.Client/bin/Debug/Newtonsoft.Json.dll


+ 409 - 16
code/HXX.Scanner.Client/bin/Debug/Newtonsoft.Json.xml

@@ -865,6 +865,32 @@
             Converts a <see cref="T:System.DateTime"/> to and from Unix epoch time
             </summary>
         </member>
+        <member name="P:Newtonsoft.Json.Converters.UnixDateTimeConverter.AllowPreEpoch">
+            <summary>
+            Gets or sets a value indicating whether the dates before Unix epoch
+            should converted to and from JSON.
+            </summary>
+            <value>
+            <c>true</c> to allow converting dates before Unix epoch to and from JSON;
+            <c>false</c> to throw an exception when a date being converted to or from JSON
+            occurred before Unix epoch. The default value is <c>false</c>.
+            </value>
+        </member>
+        <member name="M:Newtonsoft.Json.Converters.UnixDateTimeConverter.#ctor">
+            <summary>
+            Initializes a new instance of the <see cref="T:Newtonsoft.Json.Converters.UnixDateTimeConverter"/> class.
+            </summary>
+        </member>
+        <member name="M:Newtonsoft.Json.Converters.UnixDateTimeConverter.#ctor(System.Boolean)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Newtonsoft.Json.Converters.UnixDateTimeConverter"/> class.
+            </summary>
+            <param name="allowPreEpoch">
+            <c>true</c> to allow converting dates before Unix epoch to and from JSON;
+            <c>false</c> to throw an exception when a date being converted to or from JSON
+            occurred before Unix epoch. The default value is <c>false</c>.
+            </param>
+        </member>
         <member name="M:Newtonsoft.Json.Converters.UnixDateTimeConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)">
             <summary>
             Writes the JSON representation of the object.
@@ -1615,7 +1641,7 @@
         </member>
         <member name="M:Newtonsoft.Json.JsonConvert.SerializeObject(System.Object,System.Type,Newtonsoft.Json.JsonSerializerSettings)">
             <summary>
-            Serializes the specified object to a JSON string using a type, formatting and <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>.
+            Serializes the specified object to a JSON string using a type and <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>.
             </summary>
             <param name="value">The object to serialize.</param>
             <param name="settings">The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to serialize the object.
@@ -1634,7 +1660,7 @@
             Serializes the specified object to a JSON string using formatting and <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>.
             </summary>
             <param name="value">The object to serialize.</param>
-            <param name="formatting">Indicates how the output should be formatted.</param>
+            <param name="formatting">Indicates how the output should be formatted. This value overrides the formatting specified on <see cref="T:Newtonsoft.Json.JsonSerializerSettings" />.</param>
             <param name="settings">The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to serialize the object.
             If this is <c>null</c>, default serialization settings will be used.</param>
             <returns>
@@ -1646,7 +1672,7 @@
             Serializes the specified object to a JSON string using a type, formatting and <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>.
             </summary>
             <param name="value">The object to serialize.</param>
-            <param name="formatting">Indicates how the output should be formatted.</param>
+            <param name="formatting">Indicates how the output should be formatted. This value overrides the formatting specified on <see cref="T:Newtonsoft.Json.JsonSerializerSettings" />.</param>
             <param name="settings">The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to serialize the object.
             If this is <c>null</c>, default serialization settings will be used.</param>
             <param name="type">
@@ -1663,7 +1689,7 @@
             Deserializes the JSON to a .NET object.
             </summary>
             <param name="value">The JSON to deserialize.</param>
-            <returns>The deserialized object from the JSON string.</returns>
+            <returns>The deserialized object from the JSON string. A <see langword="null"/> value is returned if the provided JSON is valid but represents a null value.</returns>
         </member>
         <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObject(System.String,Newtonsoft.Json.JsonSerializerSettings)">
             <summary>
@@ -1674,7 +1700,7 @@
             The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to deserialize the object.
             If this is <c>null</c>, default serialization settings will be used.
             </param>
-            <returns>The deserialized object from the JSON string.</returns>
+            <returns>The deserialized object from the JSON string. A <see langword="null"/> value is returned if the provided JSON is valid but represents a null value.</returns>
         </member>
         <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObject(System.String,System.Type)">
             <summary>
@@ -1682,7 +1708,7 @@
             </summary>
             <param name="value">The JSON to deserialize.</param>
             <param name="type">The <see cref="T:System.Type"/> of object being deserialized.</param>
-            <returns>The deserialized object from the JSON string.</returns>
+            <returns>The deserialized object from the JSON string. A <see langword="null"/> value is returned if the provided JSON is valid but represents a null value.</returns>
         </member>
         <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObject``1(System.String)">
             <summary>
@@ -1690,7 +1716,7 @@
             </summary>
             <typeparam name="T">The type of the object to deserialize to.</typeparam>
             <param name="value">The JSON to deserialize.</param>
-            <returns>The deserialized object from the JSON string.</returns>
+            <returns>The deserialized object from the JSON string. A <see langword="null"/> value is returned if the provided JSON is valid but represents a null value.</returns>
         </member>
         <member name="M:Newtonsoft.Json.JsonConvert.DeserializeAnonymousType``1(System.String,``0)">
             <summary>
@@ -1703,7 +1729,7 @@
             </typeparam>
             <param name="value">The JSON to deserialize.</param>
             <param name="anonymousTypeObject">The anonymous type object.</param>
-            <returns>The deserialized anonymous type from the JSON string.</returns>
+            <returns>The deserialized anonymous type from the JSON string. A <see langword="null"/> value is returned if the provided JSON is valid but represents a null value.</returns>
         </member>
         <member name="M:Newtonsoft.Json.JsonConvert.DeserializeAnonymousType``1(System.String,``0,Newtonsoft.Json.JsonSerializerSettings)">
             <summary>
@@ -1720,7 +1746,7 @@
             The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to deserialize the object.
             If this is <c>null</c>, default serialization settings will be used.
             </param>
-            <returns>The deserialized anonymous type from the JSON string.</returns>
+            <returns>The deserialized anonymous type from the JSON string. A <see langword="null"/> value is returned if the provided JSON is valid but represents a null value.</returns>
         </member>
         <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObject``1(System.String,Newtonsoft.Json.JsonConverter[])">
             <summary>
@@ -1729,7 +1755,7 @@
             <typeparam name="T">The type of the object to deserialize to.</typeparam>
             <param name="value">The JSON to deserialize.</param>
             <param name="converters">Converters to use while deserializing.</param>
-            <returns>The deserialized object from the JSON string.</returns>
+            <returns>The deserialized object from the JSON string. A <see langword="null"/> value is returned if the provided JSON is valid but represents a null value.</returns>
         </member>
         <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObject``1(System.String,Newtonsoft.Json.JsonSerializerSettings)">
             <summary>
@@ -1741,7 +1767,7 @@
             The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to deserialize the object.
             If this is <c>null</c>, default serialization settings will be used.
             </param>
-            <returns>The deserialized object from the JSON string.</returns>
+            <returns>The deserialized object from the JSON string. A <see langword="null"/> value is returned if the provided JSON is valid but represents a null value.</returns>
         </member>
         <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObject(System.String,System.Type,Newtonsoft.Json.JsonConverter[])">
             <summary>
@@ -1750,7 +1776,7 @@
             <param name="value">The JSON to deserialize.</param>
             <param name="type">The type of the object to deserialize.</param>
             <param name="converters">Converters to use while deserializing.</param>
-            <returns>The deserialized object from the JSON string.</returns>
+            <returns>The deserialized object from the JSON string. A <see langword="null"/> value is returned if the provided JSON is valid but represents a null value.</returns>
         </member>
         <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObject(System.String,System.Type,Newtonsoft.Json.JsonSerializerSettings)">
             <summary>
@@ -1762,7 +1788,7 @@
             The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to deserialize the object.
             If this is <c>null</c>, default serialization settings will be used.
             </param>
-            <returns>The deserialized object from the JSON string.</returns>
+            <returns>The deserialized object from the JSON string. A <see langword="null"/> value is returned if the provided JSON is valid but represents a null value.</returns>
         </member>
         <member name="M:Newtonsoft.Json.JsonConvert.PopulateObject(System.String,System.Object)">
             <summary>
@@ -2554,7 +2580,7 @@
             <summary>
             Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a <see cref="T:Newtonsoft.Json.JsonReaderException"/>.
             A null value means there is no maximum. 
-            The default value is <c>128</c>.
+            The default value is <c>64</c>.
             </summary>
         </member>
         <member name="P:Newtonsoft.Json.JsonReader.TokenType">
@@ -3014,7 +3040,7 @@
             <summary>
             Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a <see cref="T:Newtonsoft.Json.JsonReaderException"/>.
             A null value means there is no maximum.
-            The default value is <c>128</c>.
+            The default value is <c>64</c>.
             </summary>
         </member>
         <member name="P:Newtonsoft.Json.JsonSerializer.CheckAdditionalContent">
@@ -3330,7 +3356,7 @@
             <summary>
             Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a <see cref="T:Newtonsoft.Json.JsonReaderException"/>.
             A null value means there is no maximum.
-            The default value is <c>128</c>.
+            The default value is <c>64</c>.
             </summary>
         </member>
         <member name="P:Newtonsoft.Json.JsonSerializerSettings.Formatting">
@@ -3397,6 +3423,12 @@
             Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> class.
             </summary>
         </member>
+        <member name="M:Newtonsoft.Json.JsonSerializerSettings.#ctor(Newtonsoft.Json.JsonSerializerSettings)">
+            <summary>
+            Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> class
+            using values copied from the passed in <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>.
+            </summary>
+        </member>
         <member name="T:Newtonsoft.Json.JsonTextReader">
             <summary>
             Represents a reader that provides fast, non-cached, forward-only access to JSON text data.
@@ -7031,6 +7063,25 @@
             <param name="reader">The reader.</param>
             <returns>An instance of <see cref="T:Newtonsoft.Json.Linq.JRaw"/> with the content of the reader's current token.</returns>
         </member>
+        <member name="T:Newtonsoft.Json.Linq.JsonCloneSettings">
+            <summary>
+            Specifies the settings used when cloning JSON.
+            </summary>
+        </member>
+        <member name="M:Newtonsoft.Json.Linq.JsonCloneSettings.#ctor">
+            <summary>
+            Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JsonCloneSettings"/> class.
+            </summary>
+        </member>
+        <member name="P:Newtonsoft.Json.Linq.JsonCloneSettings.CopyAnnotations">
+            <summary>
+            Gets or sets a flag that indicates whether to copy annotations when cloning a <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+            The default value is <c>true</c>.
+            </summary>
+            <value>
+            A flag that indicates whether to copy annotations when cloning a <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
+            </value>
+        </member>
         <member name="T:Newtonsoft.Json.Linq.JsonLoadSettings">
             <summary>
             Specifies the settings used when loading JSON.
@@ -7135,6 +7186,21 @@
             <param name="converters">A collection of <see cref="T:Newtonsoft.Json.JsonConverter"/> which will be used when writing the token.</param>
             <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous write operation.</returns>
         </member>
+        <member name="M:Newtonsoft.Json.Linq.JToken.WriteToAsync(Newtonsoft.Json.JsonWriter,System.Threading.CancellationToken)">
+            <summary>
+            Writes this token to a <see cref="T:Newtonsoft.Json.JsonWriter"/> asynchronously.
+            </summary>
+            <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param>
+            <param name="cancellationToken">The token to monitor for cancellation requests.</param>
+            <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous write operation.</returns>
+        </member>
+        <member name="M:Newtonsoft.Json.Linq.JToken.WriteToAsync(Newtonsoft.Json.JsonWriter)">
+            <summary>
+            Writes this token to a <see cref="T:Newtonsoft.Json.JsonWriter"/> asynchronously.
+            </summary>
+            <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param>
+            <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the asynchronous write operation.</returns>
+        </member>
         <member name="M:Newtonsoft.Json.Linq.JToken.ReadFromAsync(Newtonsoft.Json.JsonReader,System.Threading.CancellationToken)">
             <summary>
             Asynchronously creates a <see cref="T:Newtonsoft.Json.Linq.JToken"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>.
@@ -7343,6 +7409,12 @@
             </summary>
             <param name="value">The value.</param>
         </member>
+        <member name="M:Newtonsoft.Json.Linq.JToken.WriteTo(Newtonsoft.Json.JsonWriter)">
+            <summary>
+            Writes this token to a <see cref="T:Newtonsoft.Json.JsonWriter"/>.
+            </summary>
+            <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param>
+        </member>
         <member name="M:Newtonsoft.Json.Linq.JToken.WriteTo(Newtonsoft.Json.JsonWriter,Newtonsoft.Json.JsonConverter[])">
             <summary>
             Writes this token to a <see cref="T:Newtonsoft.Json.JsonWriter"/>.
@@ -7362,6 +7434,13 @@
             The indented JSON for this token.
             </returns>
         </member>
+        <member name="M:Newtonsoft.Json.Linq.JToken.ToString(Newtonsoft.Json.Formatting)">
+            <summary>
+            Returns the JSON for this token using the given formatting and converters.
+            </summary>
+            <param name="formatting">Indicates how the output should be formatted.</param>
+            <returns>The JSON for this token using the given formatting and converters.</returns>
+        </member>
         <member name="M:Newtonsoft.Json.Linq.JToken.ToString(Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonConverter[])">
             <summary>
             Returns the JSON for this token using the given formatting and converters.
@@ -8071,6 +8150,13 @@
             </summary>
             <returns>A new instance of the <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</returns>
         </member>
+        <member name="M:Newtonsoft.Json.Linq.JToken.DeepClone(Newtonsoft.Json.Linq.JsonCloneSettings)">
+            <summary>
+            Creates a new instance of the <see cref="T:Newtonsoft.Json.Linq.JToken"/>. All child tokens are recursively cloned.
+            </summary>
+            <param name="settings">A <see cref="T:Newtonsoft.Json.Linq.JsonCloneSettings"/> object to configure cloning settings.</param>
+            <returns>A new instance of the <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</returns>
+        </member>
         <member name="M:Newtonsoft.Json.Linq.JToken.AddAnnotation(System.Object)">
             <summary>
             Adds an object to the annotation list of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
@@ -11263,6 +11349,180 @@
             A <see cref="T:Newtonsoft.Json.JsonWriter"/> write method has not been called.
             </summary>
         </member>
+        <member name="T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute">
+             <summary>
+             Indicates that certain members on a specified <see cref="T:System.Type"/> are accessed dynamically,
+             for example through <see cref="N:System.Reflection"/>.
+             </summary>
+             <remarks>
+             This allows tools to understand which members are being accessed during the execution
+             of a program.
+            
+             This attribute is valid on members whose type is <see cref="T:System.Type"/> or <see cref="T:System.String"/>.
+            
+             When this attribute is applied to a location of type <see cref="T:System.String"/>, the assumption is
+             that the string represents a fully qualified type name.
+            
+             When this attribute is applied to a class, interface, or struct, the members specified
+             can be accessed dynamically on <see cref="T:System.Type"/> instances returned from calling
+             <see cref="M:System.Object.GetType"/> on instances of that class, interface, or struct.
+            
+             If the attribute is applied to a method it's treated as a special case and it implies
+             the attribute should be applied to the "this" parameter of the method. As such the attribute
+             should only be used on instance methods of types assignable to System.Type (or string, but no methods
+             will use it there).
+             </remarks>
+        </member>
+        <member name="M:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute.#ctor(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes)">
+            <summary>
+            Initializes a new instance of the <see cref="T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute"/> class
+            with the specified member types.
+            </summary>
+            <param name="memberTypes">The types of members dynamically accessed.</param>
+        </member>
+        <member name="P:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute.MemberTypes">
+            <summary>
+            Gets the <see cref="T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes"/> which specifies the type
+            of members dynamically accessed.
+            </summary>
+        </member>
+        <member name="T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes">
+             <summary>
+             Specifies the types of members that are dynamically accessed.
+            
+             This enumeration has a <see cref="T:System.FlagsAttribute"/> attribute that allows a
+             bitwise combination of its member values.
+             </summary>
+        </member>
+        <member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.None">
+            <summary>
+            Specifies no members.
+            </summary>
+        </member>
+        <member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicParameterlessConstructor">
+            <summary>
+            Specifies the default, parameterless public constructor.
+            </summary>
+        </member>
+        <member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors">
+            <summary>
+            Specifies all public constructors.
+            </summary>
+        </member>
+        <member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors">
+            <summary>
+            Specifies all non-public constructors.
+            </summary>
+        </member>
+        <member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods">
+            <summary>
+            Specifies all public methods.
+            </summary>
+        </member>
+        <member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods">
+            <summary>
+            Specifies all non-public methods.
+            </summary>
+        </member>
+        <member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields">
+            <summary>
+            Specifies all public fields.
+            </summary>
+        </member>
+        <member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicFields">
+            <summary>
+            Specifies all non-public fields.
+            </summary>
+        </member>
+        <member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicNestedTypes">
+            <summary>
+            Specifies all public nested types.
+            </summary>
+        </member>
+        <member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicNestedTypes">
+            <summary>
+            Specifies all non-public nested types.
+            </summary>
+        </member>
+        <member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties">
+            <summary>
+            Specifies all public properties.
+            </summary>
+        </member>
+        <member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicProperties">
+            <summary>
+            Specifies all non-public properties.
+            </summary>
+        </member>
+        <member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicEvents">
+            <summary>
+            Specifies all public events.
+            </summary>
+        </member>
+        <member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicEvents">
+            <summary>
+            Specifies all non-public events.
+            </summary>
+        </member>
+        <member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.Interfaces">
+            <summary>
+            Specifies all interfaces implemented by the type.
+            </summary>
+        </member>
+        <member name="F:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All">
+            <summary>
+            Specifies all members.
+            </summary>
+        </member>
+        <member name="T:System.Diagnostics.CodeAnalysis.FeatureGuardAttribute">
+            <summary>
+            Indicates that the specified public static boolean get-only property
+            guards access to the specified feature.
+            </summary>
+            <remarks>
+            Analyzers can use this to prevent warnings on calls to code that is
+            annotated as requiring that feature, when the callsite is guarded by a
+            call to the property.
+            </remarks>
+        </member>
+        <member name="M:System.Diagnostics.CodeAnalysis.FeatureGuardAttribute.#ctor(System.Type)">
+            <summary>
+            Initializes a new instance of the <see cref="T:System.Diagnostics.CodeAnalysis.FeatureGuardAttribute"/> class
+            with the specified feature type.
+            </summary>
+            <param name="featureType">
+            The type that represents the feature guarded by the property.
+            </param>
+        </member>
+        <member name="P:System.Diagnostics.CodeAnalysis.FeatureGuardAttribute.FeatureType">
+            <summary>
+            The type that represents the feature guarded by the property.
+            </summary>
+        </member>
+        <member name="T:System.Diagnostics.CodeAnalysis.FeatureSwitchDefinitionAttribute">
+            <summary>
+            Indicates that the specified public static boolean get-only property
+            corresponds to the feature switch specified by name.
+            </summary>
+            <remarks>
+            IL rewriters and compilers can use this to substitute the return value
+            of the specified property with the value of the feature switch.
+            </remarks>
+        </member>
+        <member name="M:System.Diagnostics.CodeAnalysis.FeatureSwitchDefinitionAttribute.#ctor(System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:System.Diagnostics.CodeAnalysis.FeatureSwitchDefinitionAttribute"/> class
+            with the specified feature switch name.
+            </summary>
+            <param name="switchName">
+            The name of the feature switch that provides the value for the specified property.
+            </param>
+        </member>
+        <member name="P:System.Diagnostics.CodeAnalysis.FeatureSwitchDefinitionAttribute.SwitchName">
+            <summary>
+            The name of the feature switch that provides the value for the specified property.
+            </summary>
+        </member>
         <member name="T:System.Diagnostics.CodeAnalysis.NotNullAttribute">
             <summary>Specifies that an output will not be null even if the corresponding type allows it.</summary>
         </member>
@@ -11301,5 +11561,138 @@
         <member name="P:System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute.ParameterValue">
             <summary>Gets the condition parameter value.</summary>
         </member>
+        <member name="T:System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute">
+            <summary>
+            Indicates that the specified method requires the ability to generate new code at runtime,
+            for example through <see cref="N:System.Reflection"/>.
+            </summary>
+            <remarks>
+            This allows tools to understand which methods are unsafe to call when compiling ahead of time.
+            </remarks>
+        </member>
+        <member name="M:System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute.#ctor(System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute"/> class
+            with the specified message.
+            </summary>
+            <param name="message">
+            A message that contains information about the usage of dynamic code.
+            </param>
+        </member>
+        <member name="P:System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute.Message">
+            <summary>
+            Gets a message that contains information about the usage of dynamic code.
+            </summary>
+        </member>
+        <member name="P:System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute.Url">
+            <summary>
+            Gets or sets an optional URL that contains more information about the method,
+            why it requires dynamic code, and what options a consumer has to deal with it.
+            </summary>
+        </member>
+        <member name="T:System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute">
+            <summary>
+            Indicates that the specified method requires dynamic access to code that is not referenced
+            statically, for example through <see cref="N:System.Reflection"/>.
+            </summary>
+            <remarks>
+            This allows tools to understand which methods are unsafe to call when removing unreferenced
+            code from an application.
+            </remarks>
+        </member>
+        <member name="M:System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute.#ctor(System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute"/> class
+            with the specified message.
+            </summary>
+            <param name="message">
+            A message that contains information about the usage of unreferenced code.
+            </param>
+        </member>
+        <member name="P:System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute.Message">
+            <summary>
+            Gets a message that contains information about the usage of unreferenced code.
+            </summary>
+        </member>
+        <member name="P:System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute.Url">
+            <summary>
+            Gets or sets an optional URL that contains more information about the method,
+            why it requires unreferenced code, and what options a consumer has to deal with it.
+            </summary>
+        </member>
+        <member name="T:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute">
+            <summary>
+            Suppresses reporting of a specific rule violation, allowing multiple suppressions on a
+            single code artifact.
+            </summary>
+            <remarks>
+            <see cref="T:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute"/> is different than
+            <see cref="T:System.Diagnostics.CodeAnalysis.SuppressMessageAttribute"/> in that it doesn't have a
+            <see cref="T:System.Diagnostics.ConditionalAttribute"/>. So it is always preserved in the compiled assembly.
+            </remarks>
+        </member>
+        <member name="M:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.#ctor(System.String,System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute"/>
+            class, specifying the category of the tool and the identifier for an analysis rule.
+            </summary>
+            <param name="category">The category for the attribute.</param>
+            <param name="checkId">The identifier of the analysis rule the attribute applies to.</param>
+        </member>
+        <member name="P:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.Category">
+            <summary>
+            Gets the category identifying the classification of the attribute.
+            </summary>
+            <remarks>
+            The <see cref="P:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.Category"/> property describes the tool or tool analysis category
+            for which a message suppression attribute applies.
+            </remarks>
+        </member>
+        <member name="P:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.CheckId">
+            <summary>
+            Gets the identifier of the analysis tool rule to be suppressed.
+            </summary>
+            <remarks>
+            Concatenated together, the <see cref="P:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.Category"/> and <see cref="P:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.CheckId"/>
+            properties form a unique check identifier.
+            </remarks>
+        </member>
+        <member name="P:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.Scope">
+            <summary>
+            Gets or sets the scope of the code that is relevant for the attribute.
+            </summary>
+            <remarks>
+            The Scope property is an optional argument that specifies the metadata scope for which
+            the attribute is relevant.
+            </remarks>
+        </member>
+        <member name="P:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.Target">
+            <summary>
+            Gets or sets a fully qualified path that represents the target of the attribute.
+            </summary>
+            <remarks>
+            The <see cref="P:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.Target"/> property is an optional argument identifying the analysis target
+            of the attribute. An example value is "System.IO.Stream.ctor():System.Void".
+            Because it is fully qualified, it can be long, particularly for targets such as parameters.
+            The analysis tool user interface should be capable of automatically formatting the parameter.
+            </remarks>
+        </member>
+        <member name="P:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.MessageId">
+            <summary>
+            Gets or sets an optional argument expanding on exclusion criteria.
+            </summary>
+            <remarks>
+            The <see cref="P:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.MessageId"/> property is an optional argument that specifies additional
+            exclusion where the literal metadata target is not sufficiently precise. For example,
+            the <see cref="T:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute"/> cannot be applied within a method,
+            and it may be desirable to suppress a violation against a statement in the method that will
+            give a rule violation, but not against all statements in the method.
+            </remarks>
+        </member>
+        <member name="P:System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.Justification">
+            <summary>
+            Gets or sets the justification for suppressing the code analysis message.
+            </summary>
+        </member>
     </members>
 </doc>

BIN
code/HXX.Scanner.Client/bin/Debug/db/HXX.db


BIN
code/HXX.Scanner.Client/obj/Debug/DesignTimeResolveAssemblyReferences.cache


BIN
code/HXX.Scanner.Client/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache


BIN
code/HXX.Scanner.Client/obj/Debug/HXX.Scanner.Client.csproj.AssemblyReference.cache


+ 1 - 1
code/HXX.Scanner.Client/obj/Debug/HXX.Scanner.Client.csproj.CoreCompileInputs.cache

@@ -1 +1 @@
-a4b05bbe1296255e5562922456a59030729e8fe2
+4b463a98320b857e63d1d780f5ae02dede3392d4

+ 64 - 0
code/HXX.Scanner.Client/obj/Debug/HXX.Scanner.Client.csproj.FileListAbsolute.txt

@@ -174,3 +174,67 @@ D:\work\new2\HXX.Scanner - 2\HXX.Scanner.Client\bin\Debug\NTwain.xml
 D:\work\new2\HXX.Scanner - 2\HXX.Scanner.Client\bin\Debug\ssl\client.cer
 D:\work\new2\HXX.Scanner - 2\HXX.Scanner.Client\bin\Debug\hpsocket_cn.txt
 D:\work\new2\HXX.Scanner - 2\HXX.Scanner.Client\bin\Debug\hpsocket_en.txt
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\db\HXX.db
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\HXXScannerClient.exe.config
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\HXXScannerClient.exe
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\HXXScannerClient.pdb
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\EntityFramework.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\EntityFramework.SqlServer.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\HXX.Scanner.Biz.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\HXX.Scanner.Common.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\HXX.Scanner.Database.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\HXX.Scanner.UpdateStarter.Console.exe
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\Newtonsoft.Json.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\Saraff.IoC.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\Saraff.Tiff.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\Saraff.Twain.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\System.Data.SQLite.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\System.Data.SQLite.EF6.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\System.Data.SQLite.Linq.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\Dynamsoft.Twain.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\NTwain.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\SqlSugar.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\Interop.WIA.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\HXX.Scanner.Socket.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\ICSharpCode.SharpZipLib.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\HPSocket.Net.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\HXX.Scanner.Biz.pdb
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\HXX.Scanner.Biz.dll.config
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\HXX.Scanner.Common.pdb
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\HXX.Scanner.Database.pdb
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\HXX.Scanner.Database.dll.config
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\HXX.Scanner.UpdateStarter.Console.pdb
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\HXX.Scanner.UpdateStarter.Console.exe.config
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\EntityFramework.xml
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\EntityFramework.SqlServer.xml
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\Newtonsoft.Json.xml
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\Saraff.Tiff.xml
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\Saraff.Twain.xml
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\System.Data.SQLite.xml
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\Dynamsoft.Twain.xml
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\NTwain.pdb
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\NTwain.xml
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\HXX.Scanner.Socket.pdb
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\HPSocket.Net.pdb
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\HPSocket.Net.xml
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\obj\Debug\HXX.Scanner.Client.csproj.AssemblyReference.cache
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\obj\Debug\Interop.WIA.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\obj\Debug\HXX.Scanner.Client.csproj.ResolveComReference.cache
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\obj\Debug\HXX.Scanner.Client.Properties.Resources.resources
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\obj\Debug\HXX.Scanner.Client.Base.BaseForm.resources
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\obj\Debug\HXX.Scanner.Client.Base.ucButton.resources
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\obj\Debug\HXX.Scanner.Client.frmMain4.resources
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\obj\Debug\HXX.Scanner.Client.frmMain3.resources
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\obj\Debug\HXX.Scanner.Client.frmMain2.resources
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\obj\Debug\HXX.Scanner.Client.frmMain.resources
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\obj\Debug\HXX.Scanner.Client.UI.mask.frmMaskUpgrade.resources
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\obj\Debug\HXX.Scanner.Client.UI.mask.frmMaskContent.resources
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\obj\Debug\HXX.Scanner.Client.UI.mask.frmMask.resources
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\obj\Debug\HXX.Scanner.Client.csproj.GenerateResource.cache
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\obj\Debug\HXX.Scanner.Client.csproj.CoreCompileInputs.cache
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\obj\Debug\HXX.Scanner.Client.csproj.CopyComplete
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\obj\Debug\HXXScannerClient.exe
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\obj\Debug\HXXScannerClient.pdb
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\ssl\client.cer
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\hpsocket_cn.txt
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\hpsocket_en.txt

BIN
code/HXX.Scanner.Client/obj/Debug/HXXScannerClient.exe


BIN
code/HXX.Scanner.Client/obj/Debug/HXXScannerClient.pdb


+ 1 - 0
code/HXX.Scanner.Common/HXX.Scanner.Common.csproj

@@ -92,6 +92,7 @@
     <Compile Include="ConfigManager.cs" />
     <Compile Include="CustomExceptionHandler.cs" />
     <Compile Include="DirCopy.cs" />
+    <Compile Include="LogManager_Lock.cs" />
     <Compile Include="ZipManager.cs" />
     <Compile Include="methods.cs" />
     <Compile Include="EntityClone.cs" />

+ 119 - 0
code/HXX.Scanner.Common/LogManager_Lock.cs

@@ -0,0 +1,119 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.IO;
+
+namespace HXX.Scanner.Common
+{
+    /// <summary>
+    /// 日志类
+    /// </summary>
+    public class LogManager_Lock
+    {
+        public static readonly string ServerLogPath = @"C:\HXX\";
+        public static readonly string ServerLogExtension = "-Log_Operation.txt";
+        public static readonly string ServerLogDateFormat = "yyyy-MM-dd";
+
+        private static DateTime CurrentDate = DateTime.Now.Date;
+        private static string ServerLogFileName = string.Empty;
+        private static readonly object lockObj = new object();
+
+        public static void WriteLog(string Message)
+        {
+            WriteLog(Message, null);
+        }
+
+        public static void WriteLog(Exception ee)
+        {
+            WriteLog(ee.Message, ee);
+        }
+
+        public static void WriteLog(string Message, Exception ee)
+        {
+            lock (lockObj)
+            {
+                try
+                {
+                    CheckLogFile();
+
+                    using (StreamWriter sw = new StreamWriter(ServerLogFileName, true))
+                    {
+                        string Content = string.Empty;
+
+                        Content += "=======================================================================================================" + Environment.NewLine;
+                        Content += "************** Time At:" + DateTime.Now.ToString(@"[yyyy-MM-dd HH:mm:ss]") + Environment.NewLine;
+                        Content += "************** Description:" + Environment.NewLine + Message + Environment.NewLine;
+
+                        if (ee != null)
+                        {
+                            Content += ee.Message + Environment.NewLine;
+                            Content += "************** Error Stack Trace:" + Environment.NewLine + ee.StackTrace + Environment.NewLine;
+                            Content += "************** Error Source:" + ee.Source + Environment.NewLine;
+                        }
+
+                        Content += "=======================================================================================================" + Environment.NewLine;
+                        Content += Environment.NewLine;
+                        Content += Environment.NewLine;
+
+                        sw.Write(Content);
+                    }
+                }
+                catch { }
+            }
+        }
+
+        private static void CheckLogFile()
+        {
+            if (CurrentDate != DateTime.Now.Date || ServerLogFileName == string.Empty)
+            {
+                CurrentDate = DateTime.Now.Date;
+
+                ServerLogFileName = DateTime.Now.ToString(ServerLogDateFormat) + ServerLogExtension;
+
+                ServerLogFileName = ServerLogPath + ServerLogFileName;
+            }
+
+            if (!Directory.Exists(ServerLogPath))
+            {
+                Directory.CreateDirectory(ServerLogPath);
+            }
+        }
+
+        public static void WriteLogCoco(string Title, List<Exception> ExceptionList)
+        {
+            try
+            {
+                CheckLogFile();
+
+                using (StreamWriter sw = new StreamWriter(ServerLogFileName, true))
+                {
+                    string Content = string.Empty;
+
+                    Content += "=======================================================================================================" + Environment.NewLine;
+                    Content += "************** Time At:" + DateTime.Now.ToString(@"[yyyy-MM-dd HH:mm:ss]") + Environment.NewLine;
+                    Content += Title + Environment.NewLine;
+
+                    foreach (Exception ee in ExceptionList)
+                    {
+                        Content += "************** Description:" + Environment.NewLine + ee.Message + Environment.NewLine;
+
+                        if (ee != null)
+                        {
+                            Content += "************** Error Stack Trace:" + Environment.NewLine + ee.StackTrace + Environment.NewLine;
+                            Content += "************** Error Source:" + ee.Source + Environment.NewLine + Environment.NewLine;
+                        }
+
+                    }
+
+                    Content += "=======================================================================================================" + Environment.NewLine;
+                    Content += Environment.NewLine;
+                    Content += Environment.NewLine;
+
+                    sw.Write(Content);
+                }
+            }
+            catch { }
+        }
+    }
+}

BIN
code/HXX.Scanner.Common/bin/Debug/HXX.Scanner.Common.dll


BIN
code/HXX.Scanner.Common/bin/Debug/HXX.Scanner.Common.pdb


BIN
code/HXX.Scanner.Common/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache


BIN
code/HXX.Scanner.Common/obj/Debug/HXX.Scanner.Common.csproj.AssemblyReference.cache


+ 1 - 1
code/HXX.Scanner.Common/obj/Debug/HXX.Scanner.Common.csproj.CoreCompileInputs.cache

@@ -1 +1 @@
-70b8d2955f73ef66c7f8e6f51af34182034e1130
+6330de4346b1bed21054f54e46874e8913f81e93

+ 7 - 0
code/HXX.Scanner.Common/obj/Debug/HXX.Scanner.Common.csproj.FileListAbsolute.txt

@@ -14,3 +14,10 @@ D:\work\new2\HXX.Scanner - 2\HXX.Scanner.Common\obj\Debug\HXX.Scanner.Common.dll
 D:\work\new2\HXX.Scanner - 2\HXX.Scanner.Common\obj\Debug\HXX.Scanner.Common.pdb
 D:\work\new2\HXX.Scanner - 2\HXX.Scanner.Common\obj\Debug\HXX.Scanner.Common.csproj.AssemblyReference.cache
 D:\work\new2\HXX.Scanner - 2\HXX.Scanner.Common\obj\Debug\HXX.Scanner.Common.csproj.CopyComplete
+D:\work\HJY\ScanClient\code\HXX.Scanner.Common\bin\Debug\HXX.Scanner.Common.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Common\bin\Debug\HXX.Scanner.Common.pdb
+D:\work\HJY\ScanClient\code\HXX.Scanner.Common\bin\Debug\ICSharpCode.SharpZipLib.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Common\obj\Debug\HXX.Scanner.Common.csproj.AssemblyReference.cache
+D:\work\HJY\ScanClient\code\HXX.Scanner.Common\obj\Debug\HXX.Scanner.Common.csproj.CoreCompileInputs.cache
+D:\work\HJY\ScanClient\code\HXX.Scanner.Common\obj\Debug\HXX.Scanner.Common.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Common\obj\Debug\HXX.Scanner.Common.pdb

BIN
code/HXX.Scanner.Common/obj/Debug/HXX.Scanner.Common.dll


BIN
code/HXX.Scanner.Common/obj/Debug/HXX.Scanner.Common.pdb


BIN
code/HXX.Scanner.Copier/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache


BIN
code/HXX.Scanner.Copier/obj/Debug/HXX.Scanner.Copier.csproj.AssemblyReference.cache


BIN
code/HXX.Scanner.Database/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache


BIN
code/HXX.Scanner.Database/obj/Debug/HXX.Scanner.Database.csproj.AssemblyReference.cache


BIN
code/HXX.Scanner.Install/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache


BIN
code/HXX.Scanner.Install/obj/Debug/HXX.Scanner.Install.csproj.AssemblyReference.cache


BIN
code/HXX.Scanner.Pop/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache


BIN
code/HXX.Scanner.Pop/obj/Debug/HXX.Scanner.Pop.csproj.AssemblyReference.cache


BIN
code/HXX.Scanner.Socket/bin/Debug/HXX.Scanner.Common.dll


BIN
code/HXX.Scanner.Socket/bin/Debug/HXX.Scanner.Common.pdb


BIN
code/HXX.Scanner.Socket/bin/Debug/HXX.Scanner.Socket.dll


BIN
code/HXX.Scanner.Socket/bin/Debug/HXX.Scanner.Socket.pdb


BIN
code/HXX.Scanner.Socket/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache


BIN
code/HXX.Scanner.Socket/obj/Debug/HXX.Scanner.Socket.csproj.AssemblyReference.cache


+ 1 - 1
code/HXX.Scanner.Socket/obj/Debug/HXX.Scanner.Socket.csproj.CoreCompileInputs.cache

@@ -1 +1 @@
-5db33f6031d8c951f13c33eaec062a814e96762f
+ca5ddb1b0b599d92ff72ad1a61be7109a407b438

+ 16 - 0
code/HXX.Scanner.Socket/obj/Debug/HXX.Scanner.Socket.csproj.FileListAbsolute.txt

@@ -30,3 +30,19 @@ D:\work\new2\HXX.Scanner - 2\HXX.Scanner.Socket\obj\Debug\HXX.Scanner.Socket.csp
 D:\work\new2\HXX.Scanner - 2\HXX.Scanner.Socket\obj\Debug\HXX.Scanner.Socket.csproj.CopyComplete
 D:\work\new2\HXX.Scanner - 2\HXX.Scanner.Socket\obj\Debug\HXX.Scanner.Socket.dll
 D:\work\new2\HXX.Scanner - 2\HXX.Scanner.Socket\obj\Debug\HXX.Scanner.Socket.pdb
+D:\work\HJY\ScanClient\code\HXX.Scanner.Socket\bin\Debug\ssl\client.cer
+D:\work\HJY\ScanClient\code\HXX.Scanner.Socket\bin\Debug\hpsocket_cn.txt
+D:\work\HJY\ScanClient\code\HXX.Scanner.Socket\bin\Debug\hpsocket_en.txt
+D:\work\HJY\ScanClient\code\HXX.Scanner.Socket\bin\Debug\HXX.Scanner.Socket.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Socket\bin\Debug\HXX.Scanner.Socket.pdb
+D:\work\HJY\ScanClient\code\HXX.Scanner.Socket\bin\Debug\HPSocket.Net.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Socket\bin\Debug\HXX.Scanner.Common.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Socket\bin\Debug\ICSharpCode.SharpZipLib.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Socket\bin\Debug\HXX.Scanner.Common.pdb
+D:\work\HJY\ScanClient\code\HXX.Scanner.Socket\bin\Debug\HPSocket.Net.pdb
+D:\work\HJY\ScanClient\code\HXX.Scanner.Socket\bin\Debug\HPSocket.Net.xml
+D:\work\HJY\ScanClient\code\HXX.Scanner.Socket\obj\Debug\HXX.Scanner.Socket.csproj.AssemblyReference.cache
+D:\work\HJY\ScanClient\code\HXX.Scanner.Socket\obj\Debug\HXX.Scanner.Socket.csproj.CoreCompileInputs.cache
+D:\work\HJY\ScanClient\code\HXX.Scanner.Socket\obj\Debug\HXX.Scanner.Socket.csproj.CopyComplete
+D:\work\HJY\ScanClient\code\HXX.Scanner.Socket\obj\Debug\HXX.Scanner.Socket.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.Socket\obj\Debug\HXX.Scanner.Socket.pdb

BIN
code/HXX.Scanner.Socket/obj/Debug/HXX.Scanner.Socket.dll


BIN
code/HXX.Scanner.Socket/obj/Debug/HXX.Scanner.Socket.pdb


BIN
code/HXX.Scanner.Starter/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache


BIN
code/HXX.Scanner.Starter/obj/Debug/HXX.Scanner.Starter.csproj.AssemblyReference.cache


+ 1 - 1
code/HXX.Scanner.Starter/obj/Debug/HXX.Scanner.Starter.csproj.CoreCompileInputs.cache

@@ -1 +1 @@
-981b94e93be63158222107591e5814ef84e9bbc0
+2cc112bc49453664b903c69acbfcb90d2b42e1ed

+ 17 - 0
code/HXX.Scanner.Starter/obj/Debug/HXX.Scanner.Starter.csproj.FileListAbsolute.txt

@@ -31,3 +31,20 @@ D:\work\new2\HXX.Scanner - 2\HXX.Scanner.Client\bin\Debug\db\HXX.db
 D:\work\new2\HXX.Scanner - 2\HXX.Scanner.Client\bin\Debug\ssl\client.cer
 D:\work\new2\HXX.Scanner - 2\HXX.Scanner.Client\bin\Debug\hpsocket_cn.txt
 D:\work\new2\HXX.Scanner - 2\HXX.Scanner.Client\bin\Debug\hpsocket_en.txt
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\db\HXX.db
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\HXX.Scanner.Starter.exe.config
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\HXX.Scanner.Starter.exe
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\HXX.Scanner.Starter.pdb
+D:\work\HJY\ScanClient\code\HXX.Scanner.Starter\obj\Debug\HXX.Scanner.Starter.csproj.AssemblyReference.cache
+D:\work\HJY\ScanClient\code\HXX.Scanner.Starter\obj\Debug\HXX.Scanner.Starter.SkinForm.resources
+D:\work\HJY\ScanClient\code\HXX.Scanner.Starter\obj\Debug\HXX.Scanner.Starter.frmCheckUpdate.resources
+D:\work\HJY\ScanClient\code\HXX.Scanner.Starter\obj\Debug\HXX.Scanner.Starter.frmStarter.resources
+D:\work\HJY\ScanClient\code\HXX.Scanner.Starter\obj\Debug\HXX.Scanner.Starter.Properties.Resources.resources
+D:\work\HJY\ScanClient\code\HXX.Scanner.Starter\obj\Debug\HXX.Scanner.Starter.csproj.GenerateResource.cache
+D:\work\HJY\ScanClient\code\HXX.Scanner.Starter\obj\Debug\HXX.Scanner.Starter.csproj.CoreCompileInputs.cache
+D:\work\HJY\ScanClient\code\HXX.Scanner.Starter\obj\Debug\HXX.Scanner.Starter.csproj.CopyComplete
+D:\work\HJY\ScanClient\code\HXX.Scanner.Starter\obj\Debug\HXX.Scanner.Starter.exe
+D:\work\HJY\ScanClient\code\HXX.Scanner.Starter\obj\Debug\HXX.Scanner.Starter.pdb
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\ssl\client.cer
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\hpsocket_cn.txt
+D:\work\HJY\ScanClient\code\HXX.Scanner.Client\bin\Debug\hpsocket_en.txt

BIN
code/HXX.Scanner.Starter/obj/Debug/HXX.Scanner.Starter.exe


BIN
code/HXX.Scanner.Starter/obj/Debug/HXX.Scanner.Starter.pdb


BIN
code/HXX.Scanner.UpdateStarter.Console/bin/Debug/HXX.Scanner.Common.dll


BIN
code/HXX.Scanner.UpdateStarter.Console/bin/Debug/HXX.Scanner.Common.pdb


BIN
code/HXX.Scanner.UpdateStarter.Console/bin/Debug/HXX.Scanner.UpdateStarter.Console.exe


BIN
code/HXX.Scanner.UpdateStarter.Console/bin/Debug/HXX.Scanner.UpdateStarter.Console.pdb


BIN
code/HXX.Scanner.UpdateStarter.Console/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache


BIN
code/HXX.Scanner.UpdateStarter.Console/obj/Debug/HXX.Scanner.UpdateStarter.Console.csproj.AssemblyReference.cache


+ 1 - 1
code/HXX.Scanner.UpdateStarter.Console/obj/Debug/HXX.Scanner.UpdateStarter.Console.csproj.CoreCompileInputs.cache

@@ -1 +1 @@
-8d7c155669ccab306d9dcbc675cdd7163460f919
+69f58b48fa5cbcdb0b55160bc5ea4b1948d49e38

+ 11 - 0
code/HXX.Scanner.UpdateStarter.Console/obj/Debug/HXX.Scanner.UpdateStarter.Console.csproj.FileListAbsolute.txt

@@ -75,3 +75,14 @@ D:\work\new2\HXX.Scanner - 2\HXX.Scanner.UpdateStarter.Console\obj\Debug\HXX.Sca
 D:\work\new2\HXX.Scanner - 2\HXX.Scanner.UpdateStarter.Console\obj\Debug\HXX.Scanner.UpdateStarter.Console.csproj.CopyComplete
 D:\work\new2\HXX.Scanner - 2\HXX.Scanner.UpdateStarter.Console\obj\Debug\HXX.Scanner.UpdateStarter.Console.exe
 D:\work\new2\HXX.Scanner - 2\HXX.Scanner.UpdateStarter.Console\obj\Debug\HXX.Scanner.UpdateStarter.Console.pdb
+D:\work\HJY\ScanClient\code\HXX.Scanner.UpdateStarter.Console\bin\Debug\HXX.Scanner.UpdateStarter.Console.exe.config
+D:\work\HJY\ScanClient\code\HXX.Scanner.UpdateStarter.Console\bin\Debug\HXX.Scanner.UpdateStarter.Console.exe
+D:\work\HJY\ScanClient\code\HXX.Scanner.UpdateStarter.Console\bin\Debug\HXX.Scanner.UpdateStarter.Console.pdb
+D:\work\HJY\ScanClient\code\HXX.Scanner.UpdateStarter.Console\bin\Debug\HXX.Scanner.Common.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.UpdateStarter.Console\bin\Debug\ICSharpCode.SharpZipLib.dll
+D:\work\HJY\ScanClient\code\HXX.Scanner.UpdateStarter.Console\bin\Debug\HXX.Scanner.Common.pdb
+D:\work\HJY\ScanClient\code\HXX.Scanner.UpdateStarter.Console\obj\Debug\HXX.Scanner.UpdateStarter.Console.csproj.AssemblyReference.cache
+D:\work\HJY\ScanClient\code\HXX.Scanner.UpdateStarter.Console\obj\Debug\HXX.Scanner.UpdateStarter.Console.csproj.CoreCompileInputs.cache
+D:\work\HJY\ScanClient\code\HXX.Scanner.UpdateStarter.Console\obj\Debug\HXX.Scanner.UpdateStarter.Console.csproj.CopyComplete
+D:\work\HJY\ScanClient\code\HXX.Scanner.UpdateStarter.Console\obj\Debug\HXX.Scanner.UpdateStarter.Console.exe
+D:\work\HJY\ScanClient\code\HXX.Scanner.UpdateStarter.Console\obj\Debug\HXX.Scanner.UpdateStarter.Console.pdb

BIN
code/HXX.Scanner.UpdateStarter.Console/obj/Debug/HXX.Scanner.UpdateStarter.Console.exe


BIN
code/HXX.Scanner.UpdateStarter.Console/obj/Debug/HXX.Scanner.UpdateStarter.Console.pdb


BIN
code/HXX.Scanner.UpdateStarter/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache


BIN
code/HXX.Scanner.UpdateStarter/obj/Debug/HXX.Scanner.UpdateStarter.csproj.AssemblyReference.cache


BIN
code/test_db/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache


BIN
code/test_db/obj/Debug/test_db.csproj.AssemblyReference.cache


BIN
code/test_web/bin/test_web.dll


BIN
code/test_web/bin/test_web.pdb


BIN
code/test_web/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache


BIN
code/test_web/obj/Debug/test_web.csproj.AssemblyReference.cache


+ 1 - 1
code/test_web/obj/Debug/test_web.csproj.CoreCompileInputs.cache

@@ -1 +1 @@
-d205bb52938dbe666360bc0b3dd1d14b52c4baac
+78cdfead03d2cb853b732fee7e3b1becc2bdd850

+ 58 - 0
code/test_web/obj/Debug/test_web.csproj.FileListAbsolute.txt

@@ -289,3 +289,61 @@ D:\work\new2\HXX.Scanner - 2\test_web\obj\Debug\test_web.dll
 D:\work\new2\HXX.Scanner - 2\test_web\obj\Debug\test_web.pdb
 D:\work\new2\HXX.Scanner - 2\test_web\obj\Debug\test_web.csproj.AssemblyReference.cache
 D:\work\new2\HXX.Scanner - 2\test_web\obj\Debug\test_web.csproj.CopyComplete
+D:\work\HJY\ScanClient\code\test_web\bin\test_web.dll.config
+D:\work\HJY\ScanClient\code\test_web\bin\test_web.dll
+D:\work\HJY\ScanClient\code\test_web\bin\test_web.pdb
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\csc.exe
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\csc.exe.config
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\csc.rsp
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\csi.exe
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\csi.exe.config
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\csi.rsp
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\Microsoft.Build.Tasks.CodeAnalysis.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\Microsoft.CodeAnalysis.CSharp.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\Microsoft.CodeAnalysis.CSharp.Scripting.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\Microsoft.CodeAnalysis.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\Microsoft.CodeAnalysis.Scripting.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\Microsoft.CodeAnalysis.VisualBasic.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\Microsoft.CSharp.Core.targets
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\Microsoft.DiaSymReader.Native.amd64.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\Microsoft.DiaSymReader.Native.x86.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\Microsoft.Managed.Core.targets
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\Microsoft.VisualBasic.Core.targets
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\Microsoft.Win32.Primitives.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\System.AppContext.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\System.Collections.Immutable.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\System.Console.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\System.Diagnostics.DiagnosticSource.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\System.Diagnostics.FileVersionInfo.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\System.Diagnostics.StackTrace.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\System.Globalization.Calendars.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\System.IO.Compression.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\System.IO.Compression.ZipFile.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\System.IO.FileSystem.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\System.IO.FileSystem.Primitives.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\System.Net.Http.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\System.Net.Sockets.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\System.Reflection.Metadata.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\System.Runtime.InteropServices.RuntimeInformation.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\System.Security.Cryptography.Algorithms.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\System.Security.Cryptography.Encoding.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\System.Security.Cryptography.Primitives.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\System.Security.Cryptography.X509Certificates.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\System.Text.Encoding.CodePages.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\System.Threading.Tasks.Extensions.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\System.ValueTuple.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\System.Xml.ReaderWriter.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\System.Xml.XmlDocument.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\System.Xml.XPath.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\System.Xml.XPath.XDocument.dll
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\vbc.exe
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\vbc.exe.config
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\vbc.rsp
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\VBCSCompiler.exe
+D:\work\HJY\ScanClient\code\test_web\bin\roslyn\VBCSCompiler.exe.config
+D:\work\HJY\ScanClient\code\test_web\bin\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll
+D:\work\HJY\ScanClient\code\test_web\bin\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.xml
+D:\work\HJY\ScanClient\code\test_web\obj\Debug\test_web.csproj.AssemblyReference.cache
+D:\work\HJY\ScanClient\code\test_web\obj\Debug\test_web.csproj.CoreCompileInputs.cache
+D:\work\HJY\ScanClient\code\test_web\obj\Debug\test_web.dll
+D:\work\HJY\ScanClient\code\test_web\obj\Debug\test_web.pdb

BIN
code/test_web/obj/Debug/test_web.dll


Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно