【问题标题】:The header property/field must be of type SoapHeader or a derived type, or an array of SoapHeader or SoapUnknownHeader标头属性/字段必须是 SoapHeader 类型或派生类型,或 SoapHeader 或 SoapUnknownHeader 数组
【发布时间】:2016-02-05 16:11:43
【问题描述】:
using System.Data;
using System.Web.Services;
using System.Web.Services.Protocols;


namespace MyServices
{
    /// <summary>
    /// Summary description for Enroll
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class Enroll : WebService
    {
        public Credentials Credentials = new Credentials();

        [WebMethod(Description = "This method call will insert a public note with the given comments", EnableSession = false)]
        [SoapHeader("Credentials")]
        public bool ActivityInsert(int docId, string activityType, string comments, string userNameOn247, string userNameEt)
        {
            return EnrollBl.ActivityInsertBl(docId, activityType, ref comments, userNameOn247, userNameEt, this.Credentials);
        }

        [WebMethod(Description = "This method call will insert the enrollment document into the database and return the relevant document id.", EnableSession = false)]
        [SoapHeader("Credentials")]
        public EnrollResponse EnrollmentInsert(Enrollment enrollmentRequest)
        {
            return EnrollBl.EnrollmentInsertBl(enrollmentRequest, this.Credentials);
        }

        [WebMethod(Description = "This method call will retrieve the pdf file based on document id", EnableSession = false)]
        [SoapHeader("Credentials")]
        public object EnrollmentFile(int documentId)
        {
            return EnrollBl.EnrollmentFileBl(documentId, this.Credentials);
        }

        [WebMethod(Description = "This method call will update the enrollment document status from Ready to Approved and also insert a public note with the given comments", EnableSession = false)]
        [SoapHeader("Credentials")]
        public bool EnrollmentUpdate(int docId, string activityType, string comments, string userNameEt, string userNameOn247)
        {
            return EnrollBl.EnrollmentUpdateBl(docId, activityType, ref comments, userNameOn247, userNameEt, this.Credentials);
        }

        [WebMethod(Description = "This method call will retrieve the history details for the given document id", EnableSession = false)]
        [SoapHeader("Credentials")]
        public DataTable EnrollmentHistory(int documentId)
        {
            return EnrollBl.EnrollmentHistoryBl(documentId, this.Credentials);
        }

        [WebMethod(Description = "This method call will retrieve all the documents that match the search criteria", EnableSession = false)]
        [SoapHeader("Credentials")]
        public DataTable EnrollmentSearch(SearchEnrollment searchParams)
        {
            return EnrollBl.EnrollmentSearchBl(searchParams, this.Credentials);
        }

        [WebMethod(Description = "This method call retrieves all the active form types as dataset", EnableSession = false)]
        [SoapHeader("Credentials")]
        public DataSet FormList()
        {
            return EnrollBl.FormListBl(this.Credentials);
        }

        [WebMethod(Description = "This method call retrieves all document statuses as dataset", EnableSession = false)]
        [SoapHeader("Credentials")]
        public DataSet StatusList()
        {
            return EnrollBl.StatusListBl(this.Credentials);
        }
    }
}

我创建了上面的 Web 服务,并在服务中添加了 soap 标头属性,但出现以下错误

标头属性/字段 Enroll.Credentials 必须是 SoapHeader 类型或派生类型,或者是 SoapHeader 或 SoapUnknownHeader 数组。

说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Exception:标头属性/字段 Enroll.Credentials 必须是 SoapHeader 类型或派生类型,或者是 SoapHeader 或 SoapUnknownHeader 数组。

【问题讨论】:

    标签: c# web-services soap asmx asp.net-4.0


    【解决方案1】:

    我将 SOAP Header 类属性继承给 Credentials 类,然后 Web 服务正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-26
      • 2013-01-18
      • 2019-02-16
      • 2020-02-16
      • 1970-01-01
      • 2019-04-04
      • 1970-01-01
      • 2017-03-12
      相关资源
      最近更新 更多