c# - PutObjectAsync 在第一次运行时停止运行代码 - 无异常抛出
问题描述
我正在尝试使用 MemoryStream 和 XMLWriter 创建一个 XML,然后将 MemoryStream 传递给 PutObjectRequest 但总是在它运行的第一个 lambda 函数在尝试使用 PutObjectAsync 后停止运行,没有发生异常。如果我第二次再次调用测试函数,它就可以工作。
因为我想触发它定期运行,所以它永远不会创建 XML 文件并将其保存到我尝试生成的存储桶中。似乎需要运行2次,一个接一个。
现在有人对我的代码有什么问题吗?
try{
var fileNameBuilder = string.Format("{0}.{1}-WL.xml", coItem.ToString(), fileEmissionDatetimeString);
using (MemoryStream memStream = new MemoryStream())
using (XmlWriter writer = XmlWriter.Create(memStream, XMLHelper.xmlWriterSettings))
{
context.Logger.LogLine($"Writing file: " + fileNameBuilder);
writer.WriteProcessingInstruction("xml", "version=\"1.0\" encoding=\"iso-8859-1\"");
writer.WriteStartElement("data");
writer.WriteAttributeString("source", "1");
writer.WriteAttributeString("target", "0");
writer.WriteStartElement("list");
writer.WriteAttributeString("item_nb", CoLists.Count.ToString());
writer.WriteStartElement("co");
writer.WriteAttributeString("id", coItem.ToString());
writer.WriteAttributeString("constitution", fileEmissionDatetimeString);
writer.WriteAttributeString("item_nb", items.Where(i => i.Id == coItem).Count().ToString());
foreach (var item in items.Where(i => i.Id == coItem))
{
writer.WriteStartElement("item");
writer.WriteAttributeString("cm", item.ContextMark);
writer.WriteAttributeString("obu", item.HexAlias);
writer.WriteAttributeString("vc", item.VehicleClass.ToString());
writer.WriteAttributeString("vrn", item.VehicleRegistration);
writer.WriteEndElement();
XMLRows++;
}
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Flush();
writer.Close();
context.Logger.LogLine($"XMLRows: " + XMLRows);
PutObjectRequest request = new PutObjectRequest
{
BucketName = SrcFilesBucket,
Key = SrcXMLPathBucket + "/" + fileNameBuilder,
ContentType = "text/xml",
InputStream = memStream
};
// Put object
var res = await _s3Client.PutObjectAsync(request);
if (res.HttpStatusCode == System.Net.HttpStatusCode.OK)
{
context.Logger.LogLine($"Finished coItem: " + coItem + " | File: " + fileNameBuilder);
}
}
catch (AmazonS3Exception amazonS3Exception)
{
if (amazonS3Exception.ErrorCode != null && (amazonS3Exception.ErrorCode.Equals("InvalidAccessKeyId") || amazonS3Exception.ErrorCode.Equals("InvalidSecurity")))
{
throw new SecurityException("Invalid Amazon S3 credentials - data was not uploaded.", amazonS3Exception);
}
throw new HttpRequestException("Unspecified error attempting to upload data: " + amazonS3Exception.Message, amazonS3Exception);
}
catch (Exception ex)
{
context.Logger.LogLine($"ERROR - During generation of XML.");
context.Logger.LogLine(ex.Message);
context.Logger.LogLine(ex.StackTrace);
throw ex;
}
现在有人对我的代码有什么问题吗?
解决方案
推荐阅读
- swift - 使用 Parse iOS SDK 和 Facebook 构建错误
- javascript - 卡住未定义的功能
- javascript - 组合的 observable 不会进行 HTTP 调用
- javascript - 获取热门网站图标 - 浏览器扩展
- openshift - Spring Boot 应用程序(JHipster)和 Keycloak 之间通过 HTTPS 的通信问题
- javascript - 在提交时清除所有 textInput 字段反应本机
- python - 安装 pyinstaller 时出现错误
- java - 使用 Spring MVC 和模拟服务测试 REST 服务
- python - 错误:命令错误退出状态1:窗口中的python
- javascript - 如何让 d3.js 条形图从 0 开始而不是从顶部开始