I'm trying to use BITS transfer to get binary files (release) from github.
PS> Start-BitsTransfer -Source https://github.com/Microsoft/MIMWAL/releases/download/v2.17.0414.0/MIMWAL-2.17.0414.0.zip C:\tmp\foo.zip Start-BitsTransfer : HTTP status 403: The client does not have sufficient access rights to the requested server object. At line:1 char:1 + Start-BitsTransfer -Source https://github.com/Microsoft/MIMWAL/releases/download ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [Start-BitsTransfer], Exception + FullyQualifiedErrorId : StartBitsTransferCOMException,Microsoft.BackgroundIntelligentTransfer.Management.NewBits TransferCommand
It is working fine with WebClient:
> $wc = New-Object System.Net.WebClient > $wc.DownloadFile("https://github.com/Microsoft/MIMWAL/releases/download/v2.17.0414.0/MIMWAL-2.17.0414.0.zip","C:\tmp\foo.zip") > Test-Path "C:\tmp\foo.zip" True
Do you see any reason why it does not work with BITS?
That is weird. Unfortunately, BITS is a little opaque. It's clearly doing something different, but I'd need to do, like, a packet capture to compare the two and see what was up.
See updated post below.
Well, it turns out that GitHub download URLs redirect to Amazon S3 URLs. For instance:
Unfortunately, Amazon S3 uses signed URLs, so the same signed URL can't be used for both HEAD and GET because the request method is used to compute the signature. HEAD and GET will have different signatures (see this, this and this). Thus, BITS' initial HEAD request is what's causing the HTTP 403 failure.
Workaround (1) is the most appropriate, since it doesn't affect other BITS transfers in the system. Sadly, the BITS_JOB_PROPERTY_DYNAMIC_CONTENT flag isn't currently exposed by BITS' PowerShell cmdlets. However, the BITSAdmin Tool does expose it (via /dynamic). Example BITSAdmin command that works fine:
bitsadmin /transfer mydownload /dynamic /download /priority FOREGROUND https://github.com/Microsoft/MIMWAL/releases/download/v2.17.0414.0/MIMWAL-2.17.0414.0.zip C:\foo.zip
For workaround (2), BranchCache can be disabled through BITS' DisableBranchCache group policy. You'll need to do "gpupdate" from an elevated command prompt after making any Group Policy changes, or it will take ~90 minutes for the changes to take effect.
You must be logged in to reply to this topic.