2014-12-05 2 views
0

я следующие услуги:службы WCF REST возвращения пустого класс

[ServiceContract] 
    interface IConnectionService 
    { 
     [OperationContract] 
     [WebInvoke(Method = "POST", UriTemplate = "GetState", BodyStyle = System.ServiceModel.Web.WebMessageBodyStyle.Wrapped), Description("")] 
     State GetState(); 
    } 

    [DataContract] 
    public class State 
    { 
     [DataMember] 
     public bool Client_1_Ok { get; set; } 

     [DataMember] 
     public bool Client_2_Ok { get; set; } 
    } 

на моей стороне сервера я создаю новый экземпляр государственного класса и установить переменный только чтобы увидеть, если они достигают клиент, как это предполагается,

public class Server : IConnectionService 
    { 
     public State GetState() 
     { 
      State tempState = new State(); 

      tempState .Client_1_Ok = true; 
      tempState .Client_2_Ok = true; 

      return tempState ; 
     } 

стороне клиента открыть канал и вызвать GetState на моей стороне сервера .. до сих пор так хорошо

 private IConnectionService ConnectionChannel = null; 

     public State GetState() 
     { 
      try 
      { 
       ConnectionFactory = new WebChannelFactory<IConnectionService>(new Uri("http://" + this.HostIpAddress + ":" + this.Port.ToString() + "/Tes")); 
       this.ConnectionChannel = ConnectionFactory.CreateChannel(); 

       State returnvalue = this.ConnectionChannel.GetState(); 

       return state; 
      } 
      catch (Exception e) 
      { 
       //Communication error 
       return null; 
      } 
      finally 
      { 
       try { this.ConnectionChannel.Close(); } 
       catch { this.ConnectionChannel.Abort(); } 

       //dispose of the connection channel 
       this.ConnectionChannel.Dispose(); 
       this.ConnectionChannel = null; 
      } 
     } 

Но вызов GetState с клиентской стороны всегда возвращает экземпляр State, где логические значения являются ложными.

В подобных сообщениях peaople забыл добавить атрибуты DataContract и DataMember, но я обязательно добавил их. Решение, вероятно, что-то маленькое и глупое, но я не вижу, где я перепутал

+0

ли ваш конфиг должен быть пересмотрен на основе: http://stackoverflow.com/questions/15910199/wcf-rest -service-not-return-data-in-browser? –

+2

Почему это ПОЛУЧИТЬ ПОЧТУ? –

ответ

0

У servicecontract не было RequestFormat. В моем случае это необходимо WebMessageFormat.Json

Мои ServiceContract теперь выглядит следующим образом:

[ServiceContract] 
    interface IConnectionService 
    { 
     [WebGet(UriTemplate = "GetState", BodyStyle = System.ServiceModel.Web.WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json), Description("")] 
     State GetState(); 
    } 
Смежные вопросы