C# Web 服务未使用 IIS 选取自定义类



当前使用 Visual Studio 2015 使用 .NET 4.0 构建 Web 服务应用程序。

我的接口类有 1 个我想在服务上公开的方法:

public interface IEvaluateGroupService{
    [OperationContract]
    EvaluateGroupResponse EvalGroup(EvaluateGroupRequest _request)
}

EvaluateGroupResponse 和 EvaluatGroupRequest 是 Web 服务使用的自定义类。

我的问题是,当我构建服务并将其部署到 IIS 时,当我引用它时,它会识别请求/响应类的存在,但它缺少类中的字段。

即如果我在 C# 中引用我的网络服务:

EvaluateGroupService.EvaluateGroupRequest _request = new EvaluateGroupService.EvaluateGroupRequest();

这不会引发错误。但是,我无法访问类中的任何字段。 此外,我将请求类的构造函数定义为采用 1 个参数。如果我尝试调用该构造函数,则会收到一个错误,指出我的请求没有接受 1 个参数的构造函数。

以下是我的请求/响应类:

请求:

namespace EvaluateGroupService
{
[DataContract]
public class EvaluateGroupRequest
{
    private int accountKey;
    private DateTime? startDate = null;
    private DateTime? endDate = null;

    public EvaluateGroupRequest(int initAcctKey)
    {
        AccountKey = initAcctKey;
    }
    public DateTime? EndDate
    {
        get
        {
            return endDate;
        }
        set
        {
            endDate = value;
        }
    }
    public DateTime? StartDate
    {
        get
        {
            return startDate;
        }
        set
        {
            startDate = value;
        }
    }
    public int AccountKey
    {
        get
        {
            return accountKey;
        }
        set
        {
            accountKey = value;
        }
    }
}

响应:

namespace EvaluateGroupService
{
[DataContract]
public class EvaluateGroupResponse
{
    private bool success;
    public bool Success
    {
        get
        {
            return success;
        }
        set
        {
            success = value;
        }
    }
}
}

我认为您缺少数据成员属性.....

 [DataMember]
 public DateTime? EndDate
    {
        get
        {
            return endDate;
        }
        set
        {
            endDate = value;
        }
    }

您需要使用 [DataMember] 属性修饰请求/响应中的字段。

您过去必须将 DataContract 属性添加到类中,但现在默认情况下会添加该属性。但是,WCF 不假定这些字段是可访问的。

[DataContract]
public class MyResponse
{
    [DataMember]
    public string MyString { get; set; }
}

最新更新