2016-01-28 35 views
0

當前正在使用Visual Studio 2015構建使用.NET 4.0的Web服務應用程序。C#Web Service沒有選擇帶有IIS的自定義類

我的接口類有1個方法,我想暴露的服務:

public interface IEvaluateGroupService{ 

    [OperationContract] 
    EvaluateGroupResponse EvalGroup(EvaluateGroupRequest _request) 

} 

EvaluateGroupResponse和EvaluatGroupRequest由Web服務使用的自定義類。

我的問題是,當我構建服務並將其部署到IIS時,它會在引用它時識別請求/響應類的存在,但它缺少類中的字段。

I.e.如果我在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

僅用於測試目的,是否可以向EvaluateGroupRequest類添加空構造函數? (我認爲這對於消息的序列化/反序列化是必需的) – bdn02

+0

您需要使用'[DataMember]'屬性修飾請求/響應中的字段。 – ragerory

回答

2

我認爲你缺少數據成員的屬性.....

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

     set 
     { 
      endDate = value; 
     } 
    } 
+0

你知道是否有一種方法可以包含一個自定義的構造函數,而不是默認構造函數?我無法找到一個方法。 – jackfrost5234

+0

我不這麼認爲它可能在DataContract類中。但爲什麼你需要自定義構造函數?你總是可以有數據成員 – Viru

+0

就像在你的例子中,AccountKey也可以是數據成員 – Viru

0

你需要dec在請求/響應中使用[DataMember]屬性提供字段。

您以前必須將DataContract屬性添加到類中,但現在默認情況下會添加該屬性。但是,WCF不會假定這些字段是可訪問的。

[DataContract] 
public class MyResponse 
{ 
    [DataMember] 
    public string MyString { get; set; } 
} 
相關問題