Podczas tworzenia usługi WCF Rest zauważyłem, że nie wszystkie parametry w moim serwisie internetowym wchodzą do mojej implementacji.Nie wszystkie parametry zawarte w kontrakcie danych WCF przechodzą przez wywołanie usługi internetowej
Oto interfejs:
[ServiceContract(Namespace="http://example.com/recordservice")]
public interface IBosleySchedulingServiceImpl
{
[OperationContract]
[WebInvoke(UriTemplate = "Record/Create",
RequestFormat = WebMessageFormat.Xml,
ResponseFormat = WebMessageFormat.Xml,
BodyStyle = WebMessageBodyStyle.Bare, Method = "POST")]
string CreateRecord(Record record);
}
[DataContract(Namespace="http://example.com/recordservice")]
public class Appointment
{
[DataMember]
public int ResponseType { get; set; }
[DataMember]
public int ServiceType { get; set; }
[DataMember]
public string ContactId { get; set; }
[DataMember]
public string Location { get; set; }
[DataMember]
public string Time { get; set; }
}
olewam ten XML w:
<Appointment xmlns="http://ngs.bosley.com/BosleySchedulingService">
<ContactId>1123-123</ContactId>
<Location>Fresno</Location>
<Time>2012-05-05T08:30:00</Time>
<ResponseType>45</ResponseType>
<ServiceType>45</ServiceType>
</Appointment>
W mojej służbie, ja tylko wpisywanie wartości do dziennika, więc mogę zweryfikować wartości na razie przychodzą:
logger.Debug("ContactId: " + appointment.ContactId);
logger.Debug("Time Field: " + appointment.Time);
logger.Debug("Location: " + appointment.Location);
logger.Debug("Response Type: " + Convert.ToInt32(appointment.ResponseType));
logger.Debug("ServiceType: " + Convert.ToInt32(appointment.ServiceType));
Jednak w moich wynikach wartości całkowite pojawiają się jako ze i roes:
ContactId: 1123-123
Time Field: 2012-05-05T08:30:00
Location: Fresno
Response Type: 0
ServiceType: 0
Po usunięciu ciągów z DataContract i implementacji usługi, wartości całkowite przechodzą bez problemu.
Response Type: 45
ServiceType: 45
Jestem całkowicie zdezorientowany, a każda pomoc zostanie bardzo doceniona.
Jakiś konkretny powód, dla którego jawnie konwertujesz swoje liczby całkowite na Int32? – Satyajit
Zacznijmy od zapomnienia konwersji na liczbę całkowitą, i po prostu wypisz 'ResponseType' i' ServiceType' do rejestratora jako puste ciągi. –
ConvertTo było po prostu próbą ustalenia, czy moje wartości zostały utracone z powodu nieprawidłowego rzutowania ze strony implementacji usługi. Teraz, kiedy mogę uzyskać wartości używając poniższej odpowiedzi, po prostu pozwolę im używać metody ToString, tak jak zwykle. W każdym razie dzięki. –