当前使用 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; }
}