我有一个使用IIS 8.5在EC2上托pipe的网站。 我有一个启用了BITS上传的虚拟目录,当我的URL指向实例的公共EIP时,一切工作在http和现在的https上。
该devise要求在前面的实例中使用Elastic Load Balancer。 诀窍是,当我连接一个ELB,我开始得到BITS会话500错误。 我们已经确定,当我们不使用ELB时,作业会正确完成。
我们在IIS日志中看到的特定BITS错误是“无效索引”。 在HTTP 500错误中。 看到这个关于追踪BITS错误代码的问题。
我们有一个假设,因为BITS使用扩展的HTTP动词(比如BITS_POST ),也许ELB的一些魔术正在损坏我们的头文件。 在尝试设置WireShark深入挖掘之前,我想检查是否有其他人遇到了这个问题。
尽pipeAWS宣称ELB支持2013年末的所有HTTP动词,但我遇到了同样的问题,不得不解决使用TCP转发来通过ELB获取BITS上传的问题。
详细信息:我有两台服务器2012 R2虚拟机,一台位于colo(VM1)上的vSphere 5.5群集上,另一台位于AWS(VM2)上,均于2016年6月1日完全打补丁。 VM1使用PowerShell(Start-BitsTransfer -TransferType Upload)将文件推送到VM2(使用HTTP和HTTPS绑定运行IIS 8.5,后者使用CA颁发的证书)。
子弹点3是我(似乎你)想要的,但选项4是我已经解决了,它的工作原理。
后人的错误细节(每年有50人遇到这个问题):调查选项3,VM1会抛出以下错误:
PS C:\> $error[0] | Select-Object * writeErrorStream : True PSMessageDetails : Exception : System.Exception: Invalid index. TargetObject : CategoryInfo : InvalidOperation: (:) [Start-BitsTransfer], Exception FullyQualifiedErrorId : StartBitsTransferCOMException,Microsoft.BackgroundIntelligentTransfer.Management.NewBitsTransferCommand ErrorDetails : InvocationInfo : System.Management.Automation.InvocationInfo ScriptStackTrace : at <ScriptBlock>, <No file>: line 1 PipelineIterationInfo : {0, 1}
VM2的IIS日志显示如下:
#Software: Microsoft Internet Information Services 8.5 #Version: 1.0 #Date: 2016-06-03 01:08:56 #Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Referer) sc-status sc-substatus sc-win32-status time-taken 2016-06-03 01:20:52 xxx.xx.x.xx BITS_POST /upload/file.dat (bits_error:,500,0x80070585) 8080 - xxx.xx.x.xxx Microsoft+BITS/7.7 - 500 0 0 0
正如你所说的,0x80070585对应于无效的索引exception,正如你在另一个堆栈溢出问题上logging的 ,失败的请求跟踪显示在bitssrv.dll中发生的exception,但我无法确定在日志中可操作的任何东西。