C# 尝试将文件上载到Azure文件共享时出错
我正在尝试将xml文件上载到存储帐户中的Azure文件共享,但我不断收到以下错误: 指定的范围对于资源的当前大小无效。 我可以从同一共享下载文件,因此连接本身就可以工作 我创建了一个xml文件,如下所示:C# 尝试将文件上载到Azure文件共享时出错,c#,xml,azure,file-upload,C#,Xml,Azure,File Upload,我正在尝试将xml文件上载到存储帐户中的Azure文件共享,但我不断收到以下错误: 指定的范围对于资源的当前大小无效。 我可以从同一共享下载文件,因此连接本身就可以工作 我创建了一个xml文件,如下所示: <?xml version="1.0" encoding="utf-16"?> <WebOrderList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<?xml version="1.0" encoding="utf-16"?>
<WebOrderList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<WebOrder>
<OrderId>1</OrderId>
<Info>info about order</Info>
<Description>testing</Description>
<WebItemListWebItem>
<ItemNo>321</ItemNo>
<ParentID>0</ParentID>
</WebItemListWebItem>
</WebOrder>
</WebOrderList>
public async Task UploadFile(string content, string path, string name)
{
var fileClient = new ShareFileClient(_connectionString, _shareName, path);
byte[] byteArray = Encoding.UTF8.GetBytes(content);
using (var stream = new MemoryStream(byteArray))
{
await fileClient.UploadAsync(stream);
}
}
其中内容是上面的xml字符串,路径是/orders/fromwebshop,它是文件共享上的现有文件夹,名称是order-1.xml
错误:
Microsoft Azure文件/1.0、Microsoft HTTPAPI/2.0
x-ms-error-code:无效范围
日期:2020年9月24日星期四06:39:39 GMT
内容长度:249
内容类型:application/xml
更新:
我发现这很有效:
如果要复制:
//ExampleData
//Content = string as Xml.
//Path = "$"/orders/fromwebshop""
//Name = "$"order-{order.WebOrder[0].OrderId}.xml"
public async Task UploadFile(string content, string path, string name)
{
var newMove = new ShareFileClient(_connectionString, _shareName, $"{path}/{name}");
byte[] byteArray = Encoding.UTF8.GetBytes(content);
await newMove.CreateAsync(byteArray.Length);
using (var stream = new MemoryStream(byteArray))
{
await newMove.UploadAsync(stream);
}
}
更新:
我发现这很有效:
如果要复制代码,请执行以下操作:
//ExampleData
//Content = string as Xml.
//Path = "$"/orders/fromwebshop""
//Name = "$"order-{order.WebOrder[0].OrderId}.xml"
public async Task UploadFile(string content, string path, string name)
{
var newMove = new ShareFileClient(_connectionString, _shareName, $"{path}/{name}");
byte[] byteArray = Encoding.UTF8.GetBytes(content);
await newMove.CreateAsync(byteArray.Length);
using (var stream = new MemoryStream(byteArray))
{
await newMove.UploadAsync(stream);
}
}
错误消息表明服务器有大小限制。您可能希望在上载之前压缩文件以减小大小。您可以添加:.setContentEncoding(“gzip”)。请参阅:它是249字节。不可能吧数据内容类型错误。您正在上载一个文件,文件中的数据无关紧要。您在代码中的什么地方指定了XML?我想它是从名称中看到的?我想我发现了错误。在CreateAsync之前,我不能使用UploadAsync。但是createAsync在方法中需要一个“maxsize”。我猜bytearray.length是正确的大小。上传时有一个文件源,文件目标是文件名。不知道你为什么会有记忆流。