简体   繁体   English

如何在C#中将列表数组参数传递给Web服务

[英]How to pass a list array parameter to a web service in c#

I am attempting to consume a web service from BMC Remedy 7.6.04 that creates a Remedy Incident. 我试图使用BMC Remedy 7.6.04中的Web服务,该服务创建了Remedy事件。 Several of the parameters are arrays from which you choose a value to send back to the web service such as Status. 其中一些参数是数组,您可以从中选择一个值以发送回Web服务,例如Status。 I'm getting the following error when I choose a StatusType, UrgencyType and ImpactType.Here is the error for Status Type: 选择StatusType,UrgencyType和ImpactType时出现以下错误。这是Status Type的错误:

Cannot implicitly convert type 'Client.RemedyInc.StatusType' to 'Client.RemedyInc.StatusType[]' 无法将类型“ Client.RemedyInc.StatusType”隐式转换为“ Client.RemedyInc.StatusType []”

Status is enumerated in the reference.cs as follows: 在reference.cs中枚举状态,如下所示:

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.233")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:HPD_IncidentInterface_Create_WS")]
public enum StatusType {        
    /// <remarks/>
    New,        
    /// <remarks/>
    Assigned,        
    /// <remarks/>
    [System.Xml.Serialization.XmlEnumAttribute("In Progress")]
    InProgress,        
    /// <remarks/>
    Pending,        
    /// <remarks/>
    Resolved,        
    /// <remarks/>
    Closed,        
    /// <remarks/>
    Cancelled,
}    

AND: 和:

[System.ServiceModel.MessageBodyMemberAttribute(Namespace="urn:HPD_IncidentInterface_Create_WS", Order=32)]
[System.Xml.Serialization.XmlElementAttribute("Status")]
public StatusType[] Status;

Here is a sample of my code: 这是我的代码示例:

protected void ToRemedy_Click(object sender, EventArgs e)
        {
            RemedyInc.AuthenticationInfo AuthInfo = new RemedyInc.AuthenticationInfo();
            AuthInfo.userName = "User";
            AuthInfo.password = "Password";

            RemedyInc.HelpDesk_Submit_ServiceRequest RemTicket = new RemedyInc.HelpDesk_Submit_ServiceRequest();

            RemTicket.AuthenticationInfo = AuthInfo;

            RemTicket.Summary = "This is a web service Test";
            RemTicket.Last_Name = "LName";
            RemTicket.First_Name = "FName";
            RemTicket.Service_Type = RemedyInc.Service_TypeType.UserServiceRequest;
            RemTicket.Reported_Source = RemedyInc.Reported_SourceType.SelfService;

            RemTicket.Status = RemedyInc.StatusType.New;
            RemTicket.Urgency = RemedyInc.UrgencyType.Item4Low;
            RemTicket.Impact = RemedyInc.ImpactType.Item4MinorLocalized;

            RemTicket.Notes = "This is a web service test";
            RemTicket.TemplateID = "AGGAAHHLITMRAAMBGOJWBIN45LBV62";
            RemTicket.Action = "CREATE";

        }

Any help would be greatly appreciated. 任何帮助将不胜感激。 Ken

Should your Status be declared as an array? 应该将您的Status声明为数组吗? That seems to be what the exception is in that you can't assign the StatusType to type StatusType[] 这似乎是一个例外,因为您无法将StatusType分配为类型StatusType[]

[System.ServiceModel.MessageBodyMemberAttribute(Namespace="urn:HPD_IncidentInterface_Create_WS", Order=32)]
[System.Xml.Serialization.XmlElementAttribute("Status")]
public StatusType Status; // Declared as StatusType instead of StatusType[]

And if the declaration is correct, then perhaps you just need your calling code to assign the New value as an array. 如果声明正确,那么您可能只需要调用代码即可将New值分配为数组。

RemTicket.Status = new StatusType[] { RemedyInc.StatusType.New };

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM