如何解决使用 C# 中的 API 在 ivanti HEAT 中创建 Note 对象
我的任务是使用 C# 中的 Ivanti HEAT API 创建“Note Business Object” 这是我尝试创建的内容:
- 使用此主体创建 CreateNote 方法:
public Note CreateNote(ServiceRequest parent,string category,string summary,string notes)
{
Logger.Verbose($"Heat.CreateNote({parent},{category},{summary},{notes}");
String type = "Journal#Note";
List<ObjectCommanddatafieldValue> datafields = new List<ObjectCommanddatafieldValue>()
{
new ObjectCommanddatafieldValue()
{
Name = "Category",Value = category,},new ObjectCommanddatafieldValue()
{
Name = "Summary",Value = summary,new ObjectCommanddatafieldValue()
{
Name = "Notes",Value = notes
},new ObjectCommanddatafieldValue()
{
Name = "ParentLink_Category",Value = "ServiceReq"
},new ObjectCommanddatafieldValue()
{
Name = "ParentLink_RecID",Value = parent.RecID
},new ObjectCommanddatafieldValue()
{
Name = "Status",Value = "Logged"
},new ObjectCommanddatafieldValue()
{
Name = "CreatedDateTime",Value = DateTime.UtcNow.ToString("MM/dd/yyyy HH:mm:ss")
},new ObjectCommanddatafieldValue()
{
Name = "LastModDateTime",};
return new Note(CreateObject(type,parent,datafields),this);
}
- 使用 CreateObject 方法创建业务对象:
private WebServiceBusinessObject CreateObject(String type,WebServiceBusinessObject Parent,List<ObjectCommanddatafieldValue> variables)
{
Logger.Verbose($"Entered Heat.CreateObject({Parent},{variables})");
ObjectCommandData data = new ObjectCommandData();
data.ObjectType = type;
data.Fields = variables.ToArray();
FRSHEATIntegrationCreateBOResponse response = Client.CreateObject(SessionKey,TenantId,data);
Logger.Verbose($"Soap response status: {response.status}");
Logger.Verbose($"Soap response Exception: {response.exceptionReason}");
Logger.Verbose($"Soap response recId:{response.recId}");
Logger.Verbose($"Soap response obj:{response.obj}");
Logger.Verbose($"Exited Heat.CreateObject() => {response.obj}");
return response.obj;
}
- 在程序中使用以下调用进行测试
Note newNote = Heat.CreateNote(SR,$"TestNote - {DateTime.Now.ToString("dd/MM/yy - HH:mm")}","Test Note","This test note has been created through the API");
Console.WriteLine(newNote.RecID);
但后来我得到了这个例外:
System.NullReferenceException: '未将对象引用设置为对象的实例。' obj 为空。
我对 Ivanti HEAT API 真的不太熟悉,而且几乎没有关于它的明确信息。 有一个在库中创建任务的示例,这个示例完全有效。
这是失败的方法(在 WebServiceBusiness 中):
public WebServiceBusinessObjectExtented(WebServiceBusinessObject obj,Heat Heat)
{
this.Alias = obj.Alias; <-- null ref ex
this.BusinessObjectName = obj.BusinessObjectName;
this.FieldValues = obj.FieldValues;
this.RecID = obj.RecID;
this.TableRef = obj.RecID;
this.Heat = Heat;
InitializeCommandDate();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。