C#Web服务没有使用IIS

时间:2016-01-28 19:19:57

标签: c# asp.net web-services wcf iis

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

2 个答案:

答案 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; }
}