diff --git a/DLL/HtmlAgilityPack.dll b/DLL/HtmlAgilityPack.dll
new file mode 100644
index 0000000..71f3c91
Binary files /dev/null and b/DLL/HtmlAgilityPack.dll differ
diff --git a/DLL/QRCoder.dll b/DLL/QRCoder.dll
new file mode 100644
index 0000000..98be2ef
Binary files /dev/null and b/DLL/QRCoder.dll differ
diff --git a/DLL/SqlSugar.dll b/DLL/SqlSugar.dll
index 36ac9f7..37be650 100644
Binary files a/DLL/SqlSugar.dll and b/DLL/SqlSugar.dll differ
diff --git a/DLL/SuperSocket.Common.xml b/DLL/SuperSocket.Common.xml
new file mode 100644
index 0000000..1118eca
--- /dev/null
+++ b/DLL/SuperSocket.Common.xml
@@ -0,0 +1,1346 @@
+
+
+
+ SuperSocket.Common
+
+
+
+
+ Gets the array.
+
+
+
+
+ Gets the count.
+
+
+
+
+ Gets the offset.
+
+
+
+
+ ArraySegmentList
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Determines the index of a specific item in the .
+
+ The object to locate in the .
+
+ The index of if found in the list; otherwise, -1.
+
+
+
+
+ NotSupported
+
+
+
+
+ NotSupported
+
+
+
+
+ NotSupported
+
+
+
+
+ NotSupported
+
+
+
+
+ NotSupported
+
+
+
+
+ Copies to.
+
+ The array.
+ Index of the array.
+
+
+
+ NotSupported
+
+
+
+
+ NotSupported
+
+
+
+
+ NotSupported
+
+
+
+
+ Removes the segment at.
+
+ The index.
+
+
+
+ Adds the segment to the list.
+
+ The array.
+ The offset.
+ The length.
+
+
+
+ Adds the segment to the list.
+
+ The array.
+ The offset.
+ The length.
+ if set to true [to be copied].
+
+
+
+ Clears all the segements.
+
+
+
+
+ Read all data in this list to the array data.
+
+
+
+
+
+ Read the data in specific range to the array data.
+
+ The start index.
+ The length.
+
+
+
+
+ Trims the end.
+
+ Size of the trim.
+
+
+
+ Searches the last segment.
+
+ The state.
+
+
+
+
+ Copies to.
+
+ To.
+
+
+
+
+ Copies to.
+
+ To.
+ Index of the SRC.
+ To index.
+ The length.
+
+
+
+
+ Gets or sets the element at the specified index.
+
+
+ The element at the specified index.
+
+
+ is not a valid index in the .
+
+
+
+ The property is set and the is read-only.
+
+
+
+
+ Gets the number of elements contained in the .
+
+
+ The number of elements contained in the .
+
+
+
+
+ Gets a value indicating whether the is read-only.
+
+ true if the is read-only; otherwise, false.
+
+
+
+
+ Gets the segment count.
+
+
+
+
+ ArraySegmentList
+
+
+
+
+ Decodes bytes to string by the specified encoding.
+
+ The encoding.
+
+
+
+
+ Decodes bytes to string by the specified encoding.
+
+ The encoding.
+ The offset.
+ The length.
+
+
+
+
+ Decodes data by the mask.
+
+ The mask.
+ The offset.
+ The length.
+
+
+
+ Assembly Util Class
+
+
+
+
+ Creates the instance from type name.
+
+
+ The type.
+
+
+
+
+ Creates the instance from type name and parameters.
+
+
+ The type.
+ The parameters.
+
+
+
+
+ Gets the type by the full name, also return matched generic type without checking generic type parameters in the name.
+
+ Full name of the type.
+ if set to true [throw on error].
+ if set to true [ignore case].
+
+
+
+
+ Gets the implement types from assembly.
+
+ The type of the base type.
+ The assembly.
+
+
+
+
+ Gets the implemented objects by interface.
+
+ The type of the base interface.
+ The assembly.
+
+
+
+
+ Gets the implemented objects by interface.
+
+ The type of the base interface.
+ The assembly.
+ Type of the target.
+
+
+
+
+ Clone object in binary format.
+
+
+ The target.
+
+
+
+
+ Copies the properties of one object to another object.
+
+
+ The source.
+ The target.
+
+
+
+
+ Copies the properties of one object to another object.
+
+
+ The source.
+ The properties predict.
+ The target.
+
+
+
+
+ Gets the assemblies from string.
+
+ The assembly def.
+
+
+
+
+ Gets the assemblies from strings.
+
+ The assemblies.
+
+
+
+
+ Binary util class
+
+
+
+
+ Search target from source.
+
+
+ The source.
+ The target.
+ The pos.
+ The length.
+
+
+
+
+ Searches the mark from source.
+
+
+ The source.
+ The mark.
+ Length of the parsed.
+
+
+
+
+ Searches the mark from source.
+
+
+ The source.
+ The mark.
+
+
+
+
+ Searches the mark from source.
+
+
+ The source.
+ The offset.
+ The length.
+ The mark.
+
+
+
+
+ Searches the mark from source.
+
+
+ The source.
+ The offset.
+ The length.
+ The mark.
+ Length of the parsed.
+
+
+
+
+ Searches the mark from source.
+
+
+ The source.
+ The offset.
+ The length.
+ The mark.
+ The matched.
+
+
+
+
+ Searches the mark from source.
+
+
+ The source.
+ The offset.
+ The length.
+ The mark.
+ The matched.
+ Length of the parsed.
+
+
+
+
+ Searches the mark from source.
+
+
+ The source.
+ The offset.
+ The length.
+ State of the search.
+ Length of the parsed.
+
+
+
+
+ Searches the mark from source.
+
+
+ The source.
+ The offset.
+ The length.
+ State of the search.
+
+
+
+
+ Startses the with.
+
+
+ The source.
+ The mark.
+
+
+
+
+ Startses the with.
+
+
+ The source.
+ The offset.
+ The length.
+ The mark.
+
+
+
+
+ Endses the with.
+
+
+ The source.
+ The mark.
+
+
+
+
+ Endses the with.
+
+
+ The source.
+ The offset.
+ The length.
+ The mark.
+
+
+
+
+ Clones the elements in the specific range.
+
+
+ The source.
+ The offset.
+ The length.
+
+
+
+
+ This class creates a single large buffer which can be divided up and assigned to SocketAsyncEventArgs objects for use
+ with each socket I/O operation. This enables bufffers to be easily reused and gaurds against fragmenting heap memory.
+
+ The operations exposed on the BufferManager class are not thread safe.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The total bytes.
+ Size of the buffer.
+
+
+
+ Allocates buffer space used by the buffer pool
+
+
+
+
+ Assigns a buffer from the buffer pool to the specified SocketAsyncEventArgs object
+
+ true if the buffer was successfully set, else false
+
+
+
+ Removes the buffer from a SocketAsyncEventArg object. This frees the buffer back to the
+ buffer pool
+
+
+
+
+ ConfigurationElementBase
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ if set to true [name required].
+
+
+
+ Reads XML from the configuration file.
+
+ The that reads from the configuration file.
+ true to serialize only the collection key properties; otherwise, false.
+ The element to read is locked.- or -An attribute of the current node is not recognized.- or -The lock status of the current node cannot be determined.
+
+
+
+ Gets a value indicating whether an unknown attribute is encountered during deserialization.
+
+ The name of the unrecognized attribute.
+ The value of the unrecognized attribute.
+
+ true when an unknown attribute is encountered while deserializing; otherwise, false.
+
+
+
+
+ Modifies the object to remove all values that should not be saved.
+
+ A at the current level containing a merged view of the properties.
+ The parent , or null if this is the top level.
+ A that determines which property values to include.
+
+
+
+ Writes the contents of this configuration element to the configuration file when implemented in a derived class.
+
+ The that writes to the configuration file.
+ true to serialize only the collection key properties; otherwise, false.
+
+ true if any data was actually serialized; otherwise, false.
+
+
+
+
+ Gets a value indicating whether an unknown element is encountered during deserialization.
+
+ The name of the unknown subelement.
+ The being used for deserialization.
+
+ true when an unknown element is encountered while deserializing; otherwise, false.
+
+ The element identified by is locked.- or -One or more of the element's attributes is locked.- or - is unrecognized, or the element has an unrecognized attribute.- or -The element has a Boolean attribute with an invalid value.- or -An attempt was made to deserialize a property more than once.- or -An attempt was made to deserialize a property that is not a valid member of the element.- or -The element cannot contain a CDATA or text element.
+
+
+
+ Gets the name.
+
+
+
+
+ Gets the options.
+
+
+
+
+ Gets the option elements.
+
+
+
+
+ Configuration extension class
+
+
+
+
+ Gets the value from namevalue collection by key.
+
+ The collection.
+ The key.
+
+
+
+
+ Gets the value from namevalue collection by key.
+
+ The collection.
+ The key.
+ The default value.
+
+
+
+
+ Deserializes the specified configuration section.
+
+ The type of the element.
+ The section.
+ The reader.
+
+
+
+ Deserializes the child configuration.
+
+ The type of the configuration.
+ The child configuration string.
+
+
+
+
+ Gets the child config.
+
+ The type of the config.
+ The child elements.
+ Name of the child config.
+
+
+
+
+ Gets the config source path.
+
+ The config.
+
+
+
+
+ Loads configuration element's node information from a model.
+
+ The config element.
+ The source.
+ Cannot find expected property 'Item' from the type 'ConfigurationElement'.
+
+
+
+ Gets the current configuration of the configuration element.
+
+ The current configuration.
+ Configuration element.
+
+
+
+ Reset application's configuration to a another config file
+
+ the assosiated AppDomain
+ the config file path want to reset to
+
+
+
+ Extension class for IDictionary
+
+
+
+
+ Gets the value by key.
+
+
+ The dictionary.
+ The key.
+
+
+
+
+ Gets the value by key and default value.
+
+
+ The dictionary.
+ The key.
+ The default value.
+
+
+
+
+ EventArgs for error and exception
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception.
+
+
+
+ Gets the exception.
+
+
+
+
+ GenericConfigurationElementCollectionBase
+
+ The type of the config element.
+ The type of the config interface.
+
+
+
+ When overridden in a derived class, creates a new .
+
+
+ A new .
+
+
+
+
+ Gets the element key for a specified configuration element when overridden in a derived class.
+
+ The to return the key for.
+
+ An that acts as the key for the specified .
+
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+
+ A that can be used to iterate through the collection.
+
+
+
+
+ Gets or sets a property, attribute, or child element of this configuration element.
+
+ The specified property, attribute, or child element
+
+
+
+ GenericConfigurationElementCollection
+
+ The type of the config element.
+ The type of the config interface.
+
+
+
+ Gets the element key.
+
+ The element.
+
+
+
+
+ This class is designed for detect platform attribute in runtime
+
+
+
+
+ Gets a value indicating whether [support socket IO control by code enum].
+
+
+ true if [support socket IO control by code enum]; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is mono.
+
+
+ true if this instance is mono; otherwise, false.
+
+
+
+
+ SearchMarkState
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The mark.
+
+
+
+ Gets the mark.
+
+
+
+
+ Gets or sets whether matched already.
+
+
+ The matched.
+
+
+
+
+ SendingQueue
+
+
+
+
+ Initializes a new instance of the class.
+
+ The global queue.
+ The offset.
+ The capacity.
+
+
+
+ Enqueues the specified item.
+
+ The item.
+ The track ID.
+
+
+
+
+ Enqueues the specified items.
+
+ The items.
+ The track ID.
+
+
+
+
+ Stops the enqueue, and then wait all current excueting enqueu threads exit.
+
+
+
+
+ Starts to allow enqueue.
+
+
+
+
+ Determines the index of a specific item in the .
+
+ The object to locate in the .
+
+ The index of if found in the list; otherwise, -1.
+
+
+
+
+
+ Inserts an item to the at the specified index.
+
+ The zero-based index at which should be inserted.
+ The object to insert into the .
+
+
+
+
+ Removes the item at the specified index.
+
+ The zero-based index of the item to remove.
+
+
+
+
+ Adds an item to the .
+
+ The object to add to the .
+
+
+
+
+ Removes all items from the .
+
+
+
+
+
+ Determines whether the contains a specific value.
+
+ The object to locate in the .
+
+ true if is found in the ; otherwise, false.
+
+
+
+
+
+ Copies to.
+
+ The array.
+ Index of the array.
+
+
+
+ Removes the first occurrence of a specific object from the .
+
+ The object to remove from the .
+
+ true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original .
+
+
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+
+ A that can be used to iterate through the collection.
+
+
+
+
+
+ Returns an enumerator that iterates through a collection.
+
+
+ An object that can be used to iterate through the collection.
+
+
+
+
+
+ Trim the internal segments at the begining by the binary data size.
+
+ The binary data size should be trimed at the begining.
+
+
+
+ Gets the track ID.
+
+
+ The track ID.
+
+
+
+
+ Gets the global queue.
+
+
+ The global queue.
+
+
+
+
+ Gets the offset.
+
+
+ The offset.
+
+
+
+
+ Gets the capacity.
+
+
+ The capacity.
+
+
+
+
+ Gets the number of elements contained in the .
+
+ The number of elements contained in the .
+
+
+
+ Gets or sets the position.
+
+
+ The position.
+
+
+
+
+ Gets or sets the element at the specified index.
+
+ The index.
+
+
+
+
+
+ Gets a value indicating whether the is read-only.
+
+ true if the is read-only; otherwise, false.
+
+
+
+ SendingQueueSourceCreator
+
+
+
+
+ ISmartPoolSourceCreator
+
+
+
+
+
+ Creates the specified size.
+
+ The size.
+ The pool items.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Size of the sending queue.
+
+
+
+ Creates the specified size.
+
+ The size.
+ The pool items.
+
+
+
+
+ The pool information class
+
+
+
+
+ Gets the min size of the pool.
+
+
+ The min size of the pool.
+
+
+
+
+ Gets the max size of the pool.
+
+
+ The max size of the pool.
+
+
+
+
+ Gets the avialable items count.
+
+
+ The avialable items count.
+
+
+
+
+ Gets the total items count, include items in the pool and outside the pool.
+
+
+ The total items count.
+
+
+
+
+ The basic interface of smart pool
+
+
+
+
+
+ Initializes the specified min pool size.
+
+ The min size of the pool.
+ The max size of the pool.
+ The source creator.
+
+
+
+
+ Pushes the specified item into the pool.
+
+ The item.
+
+
+
+ Tries to get one item from the pool.
+
+ The item.
+
+
+
+
+ ISmartPoolSource
+
+
+
+
+ Gets the count.
+
+
+ The count.
+
+
+
+
+ SmartPoolSource
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+ The items count.
+
+
+
+ Gets the source.
+
+
+ The source.
+
+
+
+
+ Gets the count.
+
+
+ The count.
+
+
+
+
+ The smart pool
+
+
+
+
+
+ Initializes the specified min and max pool size.
+
+ The min size of the pool.
+ The max size of the pool.
+ The source creator.
+
+
+
+ Pushes the specified item into the pool.
+
+ The item.
+
+
+
+ Tries to get one item from the pool.
+
+ The item.
+
+
+
+
+
+ Gets the size of the min pool.
+
+
+ The size of the min pool.
+
+
+
+
+ Gets the size of the max pool.
+
+
+ The size of the max pool.
+
+
+
+
+ Gets the avialable items count.
+
+
+ The avialable items count.
+
+
+
+
+ Gets the total items count, include items in the pool and outside the pool.
+
+
+ The total items count.
+
+
+
+
+ Socket extension class
+
+
+
+
+ Close the socket safely.
+
+ The socket.
+
+
+
+ Sends the data.
+
+ The client.
+ The data.
+
+
+
+ Sends the data.
+
+ The client.
+ The data.
+ The offset.
+ The length.
+
+
+
+ String extension class
+
+
+ String extension
+
+
+
+
+ Convert string to int32.
+
+ The source.
+
+
+
+
+ Convert string to int32.
+
+ The source.
+ The default value.
+
+
+
+
+ Convert string to long.
+
+ The source.
+
+
+
+
+ Convert string to long.
+
+ The source.
+ The default value.
+
+
+
+
+ Convert string to short.
+
+ The source.
+
+
+
+
+ Convert string to short.
+
+ The source.
+ The default value.
+
+
+
+
+ Convert string to decimal.
+
+ The source.
+
+
+
+
+ Convert string to decimal.
+
+ The source.
+ The default value.
+
+
+
+
+ Convert string to date time.
+
+ The source.
+
+
+
+
+ Convert string to date time.
+
+ The source.
+ The default value.
+
+
+
+
+ Convert string to boolean.
+
+ The source.
+
+
+
+
+ Convert string tp boolean.
+
+ The source.
+ if set to true [default value].
+
+
+
+
+ Tries parse string to enum.
+
+ the enum type
+ The value.
+ if set to true [ignore case].
+ The enum value.
+
+
+
+
+ Thread pool extension class
+
+
+
+
+ Resets the thread pool.
+
+ The max working threads.
+ The max completion port threads.
+ The min working threads.
+ The min completion port threads.
+
+
+
+
diff --git a/DLL/System.Net.Http.Extensions.dll b/DLL/System.Net.Http.Extensions.dll
new file mode 100644
index 0000000..a0ada0f
Binary files /dev/null and b/DLL/System.Net.Http.Extensions.dll differ
diff --git a/DLL/System.Net.Http.Primitives.dll b/DLL/System.Net.Http.Primitives.dll
new file mode 100644
index 0000000..4f391a3
Binary files /dev/null and b/DLL/System.Net.Http.Primitives.dll differ
diff --git a/类库/Api.Framework/Api.Framework.csproj b/类库/Api.Framework/Api.Framework.csproj
index fdef88f..71135c0 100644
--- a/类库/Api.Framework/Api.Framework.csproj
+++ b/类库/Api.Framework/Api.Framework.csproj
@@ -88,15 +88,15 @@
False
- ..\..\Debug\HtmlAgilityPack.dll
+ ..\..\DLL\HtmlAgilityPack.dll
False
- ..\..\Debug\ICSharpCode.SharpZipLib.dll
+ ..\..\DLL\ICSharpCode.SharpZipLib.dll
False
- ..\..\Debug\Ionic.Zip.dll
+ ..\..\DLL\Ionic.Zip.dll
..\..\DLL\JavaScriptEngineSwitcher.Core.dll
@@ -142,19 +142,19 @@
False
- ..\..\Debug\NPOI.dll
+ ..\..\DLL\NPOI.dll
False
- ..\..\Debug\NPOI.OOXML.dll
+ ..\..\DLL\NPOI.OOXML.dll
False
- ..\..\Debug\NPOI.OpenXml4Net.dll
+ ..\..\DLL\NPOI.OpenXml4Net.dll
False
- ..\..\Debug\NPOI.OpenXmlFormats.dll
+ ..\..\DLL\NPOI.OpenXmlFormats.dll
..\..\DLL\Owin.dll
@@ -168,11 +168,11 @@
False
- ..\..\Debug\protobuf-net.dll
+ ..\..\DLL\protobuf-net.dll
False
- ..\..\Debug\QRCoder.dll
+ ..\..\DLL\QRCoder.dll
..\..\packages\SSH.NET.2016.1.0\lib\net40\Renci.SshNet.dll
@@ -184,7 +184,7 @@
False
- ..\..\Debug\SqlSugar.dll
+ ..\..\DLL\SqlSugar.dll
..\..\packages\SuperSocket.1.6.6.1\lib\net45\SuperSocket.Common.dll
@@ -224,11 +224,11 @@
False
- ..\..\Debug\System.Net.Http.Extensions.dll
+ ..\..\DLL\System.Net.Http.Extensions.dll
False
- ..\..\Debug\System.Net.Http.Primitives.dll
+ ..\..\DLL\System.Net.Http.Primitives.dll
..\..\packages\System.Net.NameResolution.4.3.0\lib\net46\System.Net.NameResolution.dll