2013-03-11 81 views
0

我在我的網頁API控制器下面的方法部分返回的是空

public HttpResponseMessage PostGrantAccess(DeviceAccessRequest deviceAccessRequest) 
{ 
    var deviceId = deviceAccessRequest.DeviceId; 

    var deviceAccessResponse = new DeviceAccessResponse(deviceAccessRequest.RequestId) 
     { 
      Status = "OK" 
     }; 
    var response = Request.CreateResponse<DeviceAccessResponse>(HttpStatusCode.OK, deviceAccessResponse); 
    return response; 
} 

這是調用的客戶端代碼:

using (var client = new HttpClient()) 
{ 
    client.BaseAddress = new Uri("http://localhost:55208/"); 

    var request = new DeviceAccessRequest 
    { 
     RequestId = Guid.NewGuid().ToString(), 
     DeviceId = "bla", 
     LoginId = "tester", 
     Password = "haha" ,      
    }; 
    var response = client.PostAsJsonAsync("api/accesspanel", request).Result; 
    if (response.IsSuccessStatusCode) 
    { 
     var deviceAccessResponse = response.Content.ReadAsAsync<DeviceAccessResponse>().Result; 

    } 
} 

對象類:

public class DeviceAccessResponse : ResponseBase 
{ 
    public DeviceAccessResponse() 
    { 
    } 

    public DeviceAccessResponse(string correlationId) 
     : base(correlationId) 
    { 
    } 

    public string Status { get; set; } 
} 

public class ResponseBase 
{ 
    private string correlationId; 

    public ResponseBase() 
    { 
    } 

    public ResponseBase(string correlationId) 
    { 
     this.correlationId = correlationId; 
    } 
} 

我能夠在我的控制器中接收DeviceAccessRequest就好了,我可以得到guid字符串。

但是,在將響應返回給客戶端之後,我只能返回Status =「OK」,correlationId爲null,而不是包含我在客戶端代碼中用此行分配的guid字符串

var deviceAccessResponse = new DeviceAccessResponse(deviceAccessRequest.RequestId) 

我錯過了什麼?

response.Content.ReadAsAsync<DeviceAccessResponse>().Result;正確的代碼用於重建我的整個對象?

回答

3

您的correlationId是一個私人領域。如果你希望它通過網絡序列化,你可能需要製作一個公共屬性來公開它。

1

你應該讓correlationId公共財產,如果你希望它被暴露和旅行到客戶端:

public class ResponseBase 
{ 
    public ResponseBase() 
    { 
    } 

    public string CorrelationId { get; set; } 

    public ResponseBase(string correlationId) 
    { 
     this.CorrelationId = correlationId; 
    } 
}