Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 为什么使用ExtractArchiveFromFile时会出现SocketException_.net_Rackspace Cloudfiles_Openstacknetsdk - Fatal编程技术网

.net 为什么使用ExtractArchiveFromFile时会出现SocketException

.net 为什么使用ExtractArchiveFromFile时会出现SocketException,.net,rackspace-cloudfiles,openstacknetsdk,.net,Rackspace Cloudfiles,Openstacknetsdk,当我尝试使用openstacknetsdk将归档文件上载到Rackspace Cloudfiles时,我得到了一个System.Net.Sockets.SocketException,使用CreateObjectFromFile上载同一个文件效果非常好 示例代码: var rackspaceIdentity = new CloudIdentity { APIKey = "xxx", Username = "xxx" }; var rackspaceProvider = new CloudFile

当我尝试使用openstacknetsdk将归档文件上载到Rackspace Cloudfiles时,我得到了一个
System.Net.Sockets.SocketException
,使用
CreateObjectFromFile
上载同一个文件效果非常好

示例代码:

var rackspaceIdentity = new CloudIdentity { APIKey = "xxx", Username = "xxx" };
var rackspaceProvider = new CloudFilesProvider(rackspaceIdentity);

const string bz2File = @"C:\Users\Jan\AppData\Local\Temp\tmp1B64.tmp";

var containerName = DateTime.Now.Ticks.ToString(CultureInfo.InvariantCulture);
rackspaceProvider.CreateContainer(containerName);
rackspaceProvider.EnableCDNOnContainer(containerName, 3600);

Console.WriteLine("Pre CreateObjectFromFile");
rackspaceProvider.CreateObjectFromFile(containerName, bz2File, progressUpdated: x => Console.WriteLine(x.ToString(CultureInfo.InvariantCulture)));
Console.WriteLine("Post CreateObjectFromFile");

var containerName2 = DateTime.Now.Ticks.ToString(CultureInfo.InvariantCulture);
rackspaceProvider.CreateContainer(containerName2);
rackspaceProvider.EnableCDNOnContainer(containerName2, 3600);

Console.WriteLine("Pre ExtractArchiveFromFile");
rackspaceProvider.ExtractArchiveFromFile(bz2File, containerName2, ArchiveFormat.TarBz2, progressUpdated: x => Console.WriteLine(x.ToString(CultureInfo.InvariantCulture)));
Console.WriteLine("Post ExtractArchiveFromFile");
例外情况详情:

System.IO.IOException was unhandled
  _HResult=-2146232800
  _message=Unable to write data to the transport connection: An existing connection was forcibly closed by the remote host.
  HResult=-2146232800
  IsTransient=false
  Message=Unable to write data to the transport connection: An existing connection was forcibly closed by the remote host.
  Source=System
  StackTrace:
       at System.Net.Sockets.NetworkStream.MultipleWrite(BufferOffsetSize[] buffers)
       at System.Net.Security._SslStream.StartWriting(SplitWritesState splitWrite, SplitWriteAsyncProtocolRequest asyncRequest)
       at System.Net.Security._SslStream.ProcessWrite(BufferOffsetSize[] buffers, SplitWriteAsyncProtocolRequest asyncRequest)
       at System.Net.TlsStream.MultipleWrite(BufferOffsetSize[] buffers)
       at System.Net.PooledStream.MultipleWrite(BufferOffsetSize[] buffers)
       at System.Net.ConnectStream.InternalWrite(Boolean async, Byte[] buffer, Int32 offset, Int32 size, AsyncCallback callback, Object state)
       at System.Net.ConnectStream.Write(Byte[] buffer, Int32 offset, Int32 size)
       at net.openstack.Providers.Rackspace.ExtendedJsonRestServices.<>c__DisplayClass1.<Stream>b__0(HttpWebRequest req)
       at JSIStudios.SimpleRESTServices.Client.RestServiceBase.<>c__DisplayClass7.<ExecuteRequest>b__6()
       at JSIStudios.SimpleRESTServices.Client.RequestRetryLogic.Execute(Func`1 callback, IEnumerable`1 non200SuccessCodes, Int32 retryCount, Nullable`1 retryDelay)
       at JSIStudios.SimpleRESTServices.Client.RestServiceBase.ExecuteRequest(Uri url, HttpMethod method, Func`3 responseBuilderCallback, Dictionary`2 headers, Dictionary`2 queryStringParameters, RequestSettings settings, Func`2 executeCallback)
       at net.openstack.Providers.Rackspace.ExtendedJsonRestServices.Stream(Uri url, HttpMethod method, Func`3 responseBuilderCallback, Stream content, Int32 bufferSize, Int64 maxReadLength, Dictionary`2 headers, Dictionary`2 queryStringParameters, RequestSettings settings, Action`1 progressUpdated)
       at JSIStudios.SimpleRESTServices.Client.RestServiceBase.Stream(Uri url, HttpMethod method, Stream content, Int32 bufferSize, Int64 maxReadLength, Dictionary`2 headers, Dictionary`2 queryStringParameters, RequestSettings settings, Action`1 progressUpdated)
       at net.openstack.Providers.Rackspace.ProviderBase`1.StreamRESTRequest(CloudIdentity identity, Uri absoluteUri, HttpMethod method, Stream stream, Int32 chunkSize, Int64 maxReadLength, Dictionary`2 queryStringParameter, Dictionary`2 headers, Boolean isRetry, RequestSettings requestSettings, Action`1 progressUpdated)
       at net.openstack.Providers.Rackspace.CloudFilesProvider.ExtractArchive(Stream stream, String uploadPath, ArchiveFormat archiveFormat, String contentType, Int32 chunkSize, Dictionary`2 headers, String region, Action`1 progressUpdated, Boolean useInternalUrl, CloudIdentity identity)
       at net.openstack.Providers.Rackspace.CloudFilesProvider.ExtractArchiveFromFile(String filePath, String uploadPath, ArchiveFormat archiveFormat, String contentType, Int32 chunkSize, Dictionary`2 headers, String region, Action`1 progressUpdated, Boolean useInternalUrl, CloudIdentity identity)
       at RackspaceDriver.Program.Main() in c:\Users\Jan\Documents\Visual Studio Projects\RackspaceDriver\RackspaceDriver\Program.cs:line 31
  InnerException: System.Net.Sockets.SocketException
       _HResult=-2147467259
       _message=An existing connection was forcibly closed by the remote host
       HResult=-2147467259
       IsTransient=false
       Message=An existing connection was forcibly closed by the remote host
       Source=System
       ErrorCode=10054
       NativeErrorCode=10054
       StackTrace:
            at System.Net.Sockets.Socket.MultipleSend(BufferOffsetSize[] buffers, SocketFlags socketFlags)
            at System.Net.Sockets.NetworkStream.MultipleWrite(BufferOffsetSize[] buffers)
       InnerException: 
System.IO.IOException未处理
_HResult=-2146232800
_message=无法将数据写入传输连接:远程主机强制关闭了现有连接。
HResult=-2146232800
IsTransient=false
Message=无法将数据写入传输连接:远程主机强制关闭了现有连接。
来源=系统
堆栈跟踪:
位于System.Net.Sockets.NetworkStream.MultipleWrite(BufferOffsetSize[]buffers)
在System.Net.Security.\u SslStream.StartWriting(SplitWriteState splitWrite,SplitWriteAsyncProtocolRequest asyncRequest)
位于System.Net.Security.\u SslStream.ProcessWrite(BufferOffsetSize[]buffers,SplitWriteAsyncProtocolRequest asyncRequest)
在System.Net.TlsStream.MultipleWrite(BufferOffsetSize[]缓冲区)
在System.Net.PooledStream.MultipleWrite(BufferOffsetSize[]缓冲区)中
在System.Net.ConnectStream.InternalWrite(布尔异步、字节[]缓冲区、Int32偏移量、Int32大小、异步回调、对象状态)
在System.Net.ConnectStream.Write(字节[]缓冲区,Int32偏移量,Int32大小)
位于net.openstack.Providers.Rackspace.ExtendedJsonRestServices.c__DisplayClass1.b__0(HttpWebRequest请求)
在JSIStudios.simplereststservices.Client.RestServiceBase.c__DisplayClass7.b__6()
在JSIStudios.SimpleRESTServices.Client.RequestRetryLogic.Execute(Func`1回调,IEnumerable`1非200SuccessCodes,Int32 retryCount,Nullable`1 retryDelay)
位于JSIStudios.SimpleRESTServices.Client.RestServiceBase.ExecuteRequest(Uri url、HttpMethod方法、Func`3 responseBuilderCallback、Dictionary`2标头、Dictionary`2 queryStringParameters、RequestSettings设置、Func`2 executeCallback)
位于net.openstack.Providers.Rackspace.ExtendedJsonRestServices.Stream(Uri url、HttpMethod方法、Func`3 responseBuilderCallback、流内容、Int32 bufferSize、Int64 maxReadLength、Dictionary`2标头、Dictionary`2 queryStringParameters、RequestSettings设置、操作`1 ProgressUpdate)
位于JSIStudios.SimpleRESTServices.Client.RestServiceBase.Stream(Uri url、HttpMethod方法、流内容、Int32 bufferSize、Int64 maxReadLength、Dictionary`2标头、Dictionary`2 queryStringParameters、RequestSettings设置、操作`1 ProgressUpdate)
位于net.openstack.Providers.Rackspace.ProviderBase`1.StreamRESTRequest(CloudIdentity标识、Uri absoluteUri、HttpMethod方法、流、Int32 chunkSize、Int64 maxReadLength、Dictionary`2 queryStringParameter、Dictionary`2标头、Boolean Isrray、RequestSettings RequestSettings、Action`1 ProgressUpdate)
位于net.openstack.Providers.Rackspace.CloudFileProvider.ExtractArchive(流流、字符串上传路径、ArchiveFormat ArchiveFormat、字符串内容类型、Int32 chunkSize、字典`2头、字符串区域、操作`1 ProgressUpdate、布尔useInternalUrl、CloudIdentity)
位于net.openstack.Providers.Rackspace.CloudFileProvider.ExtractArchiveFromFile(字符串文件路径、字符串上传路径、ArchiveFormat ArchiveFormat、字符串内容类型、Int32 chunkSize、字典`2头、字符串区域、操作`1进度更新、布尔useInternalUrl、CloudIdentity标识)
在c:\Users\Jan\Documents\Visual Studio Projects\RackspaceDriver\RackspaceDriver\Program.cs中的RackspaceDriver.Program.Main()处:第31行
InnerException:System.Net.Sockets.SocketException
_HResult=-2147467259
_message=远程主机强制关闭了现有连接
HResult=-2147467259
IsTransient=false
Message=远程主机强制关闭了现有连接
来源=系统
错误代码=10054
NativeErrorCode=10054
堆栈跟踪:
位于System.Net.Sockets.Socket.MultipleSend(BufferOffsetSize[]buffers,SocketFlags SocketFlags)
位于System.Net.Sockets.NetworkStream.MultipleWrite(BufferOffsetSize[]buffers)
内部异常:
bz2文件的大小为+-170MB

当查看代码时,我没有看到任何显著的差异

  • Newtonsoft.Json 5.0.8
  • openstack.net 1.3.3.0
  • SimpleRESTServices 1.3.0.1

您是否已查看了该网站上的任何其他特定信息?它有几个属性可能有助于了解发生了什么。您可以编辑问题以包含该信息。您还可以检查是否存在
InnerException
。我添加了异常详细信息。使用curl我得到curl:(56)SSL read:error:00000000:lib(0):func(0):reason(0),errno 113,因此它可能与.NET/sdk无关……嗯,我看到了当IIS中托管的一个.NET应用程序在后台线程上抛出未捕获的异常时,“远程主机强制关闭了现有连接”。这将使整个应用程序池都消失。