addAttachment using RestSharp slow

357
0
02-27-2023 06:58 AM
ZachBray
New Contributor II

I am working on a asp.Net MVC Web App that reads a gps data and jpeg files from an online source and then uploads the data using the REST API addFeatures and addAttachment to our internal ArcGIS Enterprise.  I have been able to get this to work using the RestSharp reference and ExecuteAsync, however the addAttachment call is very slow compared to either rest services feature server endpoint or ArcGIS Pro.  Does anyone have an example or can offer suggestions to improved performance?

 

public async Task<string> addAttachment()
{
JObject jobject = new JObject();
string boundry = Guid.NewGuid().ToString();
var options = new RestClientOptions(BaseURL)
{
MaxTimeout = -1
};
var client = new RestClient(options);
var request = new RestRequest(String.Format("{0}/{1}/rest/services/SVEC/{2}/FeatureServer/{3}/{4}/addAttachment", BaseURL, ServerWebAdapter, FeatureService, LayerNumber.ToString(),ArcGISattachment.objectId.ToString()), Method.Post);
request.AddHeader("Content-Type", String.Format("multipart/form-data; boundary={0}",boundry));
request.AddQueryParameter("token", Token);
request.AddQueryParameter("f", "json");
request.AddParameter("f", "json");
//request.AddFile("attachment", , ArcGISattachment.fileName, String.Format("multipart/form-data; boundary={0}", boundry));
request.AddFile("attachment",ArcGISattachment.pathName, "image/jpeg");


RestResponse response = await client.ExecuteAsync(request);

jobject = (JObject)JsonConvert.DeserializeObject(response.Content);
if (jobject.ContainsKey("addAttachmentResult"))
{
ArcGISattachment.addAttachmentResult = new addAttachmentResult();
//ArcGISattachment.addAttachmentResult.globalId = jobject["addAttachmentResult"]["globalId"].ToString();
ArcGISattachment.addAttachmentResult.objectId = int.Parse(jobject["addAttachmentResult"]["objectId"].ToString());
ArcGISattachment.addAttachmentResult.success = (bool)jobject["addAttachmentResult"]["success"];
if (!(bool)jobject["addAttachmentResult"]["success"])
{
ArcGISattachment.addAttachmentResult.error = new addError();
ArcGISattachment.addAttachmentResult.error.code = jobject["addAttachmentResult"]["error"]["code"].ToString();
ArcGISattachment.addAttachmentResult.error.description = jobject["addAttachmentResult"]["error"]["description"].ToString();
}
}
request = null;
response = null;
client = null;
return ArcGISattachment.addAttachmentResult.objectId.ToString();
}

Thanks,

Zach

0 Replies