1

我正在尝试建立一个服务,我可以使用 Microsoft BITS 将许多文件传输到我们的 IIS 服务器。

我已经在 IIS 服务器上安装了所需的组件并成功上传了几个文件,但是一旦我将身份验证添加到虚拟目录,它就不可靠了。

我正在使用此代码片段进行传输:

Get-ChildItem $sourcePath | % {
    try
    {
        Start-BitsTransfer -Source $_.FullName -Destination "$destinationPath/$_" -TransferType Upload -Authentication Basic -Credential $credentials
    }
    catch
    {
        $_
    }
}

如果我省略身份验证和凭据参数并启用匿名身份验证,它每次都有效。

如果我关闭匿名身份验证,添加基本身份验证并设置$credentials为我的域和用户名,它会要求输入密码并且每次都有效。与摘要身份验证相同。

如果我使用基本身份验证并使用以下代码设置凭据,它会第一次工作,然后失败。如果我稍等片刻再试一次,它有时会重置并第一次工作,然后失败。与摘要身份验证相同。

我用来设置凭据的代码如下:

$username = "mydomain\myuser"
$password = "mypassword"

$securePassword = ConvertTo-SecureString -String $password -AsPlainText -Force
$credentials = New-Object System.Management.Automation.PSCredential -ArgumentList ($username, $securePassword)

它失败时给出的错误是:

Start-BitsTransfer : Value does not fall within the expected range.
At D:\Projects\Powershell\MoveFiles.ps1:48 char:9
+         Start-BitsTransfer -Source $_.FullName -Destination "$destinationPath/$_ ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [Start-BitsTransfer], ArgumentException
+ FullyQualifiedErrorId : System.ArgumentException,Microsoft.BackgroundIntelligentTransfer.Management.NewBitsTransferCommand

无论我使用 HTTP 还是 HTTPS,结果都是相同的,并且失败的尝试不存在于 IIS 日志中。

有没有人知道问题是什么?我认为这是一个 Powershell 问题,因为如果我输入密码而不是在 Powershell 中设置它,它确实可以工作。

我发现的最后一点信息......我使用 Sharp BITS 编写了一个简单的 BITS 上传程序,它没有任何问题。

4

0 回答 0