gpt4 book ai didi

.net - 为什么Powershell在 `ByteArrayContent`上找不到字节数组构造函数?

转载 作者:行者123 更新时间:2023-12-02 23:28:10 32 4
gpt4 key购买 nike

我正在尝试使用以下Powershell将文件的二进制内容加载到ByteArrayContent中:

$arr = Get-Content $pathToFile -Encoding Byte -ReadCount 0
$binaryContent = New-Object System.Net.Http.ByteArrayContent($arr)

运行脚本时收到以下错误:
Cannot find an overload for "ByteArrayContent" and the argument count: "460"

我正在Windows 8.1上使用Powershell 4.0运行此脚本。

在检查文档时, ByteArrayContent有两个重载,我正在使用第一个重载,因此我确保将 byte[]数组解析为ctor。

最后,我使用了另一个ctor,并且一切正常:
$binaryContent = New-Object System.Net.Http.ByteArrayContent($arr, 0, $arr.Length)

通过运行以下命令查看所有已加载的程序集,我检查了我正在使用的System.Net.Http程序集的版本:
[System.AppDomain]::CurrentDomain.GetAssemblies()
v4.0.30319 => C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Net.Http\v4.0_4.0.0.0

在MSDN文档中,看不到其他任何版本的 ByteArrayContent,那么关于什么描述这种行为的任何想法?

最佳答案

您可以更换吗

$binaryContent = New-Object System.Net.Http.ByteArrayContent($arr)


$binaryContent = New-Object System.Net.Http.ByteArrayContent -ArgumentList @(,$arr)

或更改行:
$arr = Get-Content $pathToFile -Encoding Byte -ReadCount 0


[byte[]]$arr = Get-Content $pathToFile -Encoding Byte -ReadCount 0

说明
Powershell通常期望一个参数数组来找到要调用的正确构造函数。在您的情况下,它将字节数组视为460个单独的参数。

通过使用@(,$ arr),我们得到一个带有一个元素的数组,一个元素本身就是一个数组,但是Powershell可以考虑使用字节数组的构造函数。

关于.net - 为什么Powershell在 `ByteArrayContent`上找不到字节数组构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27312783/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com