目前使用Visual Studio 2015使用.NET 4.0构建Web服务应用程序。
我的接口类有1个我希望在服务上公开的方法:
public interface IEvaluateGroupService{
[OperationContract]
EvaluateGroupResponse EvalGroup(EvaluateGroupRequest _request)
}
EvaluateGroupResponse和EvaluatGroupRequest是Web服务使用的自定义类。
我的问题是,当我构建服务并将其部署到IIS时,它在我引用它时会识别出Request / Response类的存在,但它缺少类中的字段。
即。如果我在C#中引用我的web服务:
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;
}
}
}
}
答案 0 :(得分:2)
我认为你缺少DataMember属性.....
[DataMember]
public DateTime? EndDate
{
get
{
return endDate;
}
set
{
endDate = value;
}
}
答案 1 :(得分:0)
您需要使用[DataMember]
属性装饰请求/回复中的字段。
您以前必须将DataContract
属性添加到类中,但现在默认添加。但是,WCF并不假设这些字段是可访问的。
[DataContract]
public class MyResponse
{
[DataMember]
public string MyString { get; set; }
}