c# - SSIS-PostAsJsonAsync 不起作用

标签 c# ssis asp.net-web-api2 script-task

我正在尝试使用 SSIS 包中的一个 WEB API。我想在一个服务器文件夹中发布一个 pdf 文件。我为此创建了一个脚本任务。

但是当我执行该包时,它给了我一些随机的运行时错误。

byte[] content = System.IO.File.ReadAllBytes("Testfile.pdf");
string serviceUrl = "http://NNN.NN.NNN.NN:NNNN/";
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(serviceUrl);
// Add an Accept header for JSON format.  
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));

decimal amount = 1200.50m;
long tranactionID = 1001;

string APIUrl = "api/UploadDocCon/PDA/Test.pdf/FlexField/ABC/ABCD?FolderName=FoldA";
HttpResponseMessage response = client.PostAsJsonAsync(APIUrl, content).Result;


if (response.IsSuccessStatusCode)
{
  var serviceResponse = response.Content.ReadAsAsync<DocumentServiceResponse>().Result as DocServiceResponse;
return serviceResponse.STREAMID;
}
else
{
string error = response.Content.ReadAsStringAsync().Result;
}

它给了我这个错误(它甚至没有命中调试器)

Exception has been thrown by the target of an invocation

 at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] 
arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, 
Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags 
invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, 
Binder binder, Object target, Object[] providedArgs, ParameterModifier[] 
modifiers, CultureInfo culture, String[] namedParams)
at  Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()

当我更换这条线

HttpResponseMessage response = client.PostAsJsonAsync(APIUrl, content).Result;

与 var response = client.GetAsync(APIUrl).Result;

它没有给出任何错误。但我想在这里发布一些字节数组。

我在这里做错了什么?

最佳答案

您可以使用 HttpClient 传输字节数组,方法是将 byte[] 转换为 System.Net.Http.HttpContent

这是代码片段:

ByteArrayContent byteContent = new ByteArrayContent(content); HttpResponseMessage 响应 =等待 client.PostAsJsonAsync(uri, byteContent);

关于c# - SSIS-PostAsJsonAsync 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49356504/

相关文章:

c# - 如何在没有分配字母的情况下获得磁盘卷上的可用空间?

sql - SSIS 部署 : SSIS Package run time error in SQL Server deployment

testing - 如何使 SSAS 多维数据集进程失败

sql-server - 无法加载执行脚本

asp.net - 如何生成 API 文档

javascript - 如何使用 Ajax 将文档上传到 Web api,而不使用 html 用户控件或表单?

c# - 使用 C# 的 SQL Azure 数据导出服务

c# - 新手查询正确使用TryParse()

asp.net-mvc-4 - Cors 错误 - MVC 和 Web API

c# - 为什么匿名类型实例不能接受 Entity Framework 查询返回的空值?