다음은 내 WCF 서비스가 반환해야하는 내용입니다. ResponseModel에서 PaymentData를 명령하고 해당 클래스의 다른 DataMembers를 추가하면 작동합니다. 내 변수 이름은 같은 이름을 가지고 직렬화 좋아하지 않는WCF HTTP 응답 수신 중 오류가 발생했습니다.
[DataContract]
public class PaymentData
{
[DataMember]
public PaymentType PaymentType { get; set; }
[DataMember]
public string CardNumber { get; set; }
[DataMember]
public DateTime ExpirationDate { get; set; }
/// <summary>
/// If true, then the CardNumber property will contain the token
/// </summary>
[DataMember]
public bool IsCardNumberTokenized { get; set; }
/// <summary>
/// Number on back of credit cards. This value CANNOT be stored anywhere
/// </summary>
[DataMember]
public string CardSecurityValue { get; set; }
[DataMember]
public CardSecurityPresence CardSecurityPresence { get; set; }
}
... 그리고 PaymentData
클래스
[DataContract(Name = "CardSecurityPresenceEnum")]
public enum CardSecurityPresence
{
[EnumMember(Value = "1")]
IsPresent = 1,
[EnumMember(Value = "2")]
Illegible = 2,
[EnumMember(Value = "9")]
NoCodeOnCard = 9,
[EnumMember(Value = " ")]
NotSent
}
[DataContract(Name = "PaymentTypeEnum")]
public enum PaymentType
{
[EnumMember]
Visa = CMPWSApiService.TransactionMop.VI,
[EnumMember]
MasterCard = CMPWSApiService.TransactionMop.MC,
[EnumMember]
AmericanExpress = CMPWSApiService.TransactionMop.AX,
[EnumMember]
Discover = CMPWSApiService.TransactionMop.DI,
[EnumMember]
PayPal = CMPWSApiService.TransactionMop.PP,
[EnumMember]
BillMeLater = CMPWSApiService.TransactionMop.BL
}
에 정의 된 열거 형 : 여기
[DataContract]
public class ResponseModel
{
[DataMember]
public PaymentData PaymentData { get; set; }
}
는
PaymentData
클래스의 수업으로?
여기에 WCFTest 클라이언트에서 오류 발생 [생략 서비스 URL] 에 HTTP 응답을 수신하면서
오류가 발생했습니다. 이 은 HTTP 프로토콜을 사용하지 않는 서비스 끝점 바인딩 때문일 수 있습니다. 이것은 HTTP 요청 컨텍스트가 서버에 의해 중단 된 (서비스 셧다운으로 인한 것일 수도 있기 때문일 수도 있습니다). 자세한 내용은 서버 로그를 참조하십시오.
서버 스택 추적 : System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException (WebException이 WebException이, HttpWebRequest를 요청, HttpAbortReason abortReason)에서 System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply (시간 범위 에서
System.ServiceModel.Channels.Serv에서 System.ServiceModel.Dispatcher.RequestChannelBinder.Request (메시지 메시지, 타임 아웃 시간 범위)에서 System.ServiceModel.Channels.RequestChannel.Request (메시지 메시지 타임 아웃 시간 범위)에서의 타임 아웃) iceChannel.Call는 시스템에서 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService (IMethodCallMessage methodCall을, ProxyOperationRuntime 작업)에서 (문자열 동작은 부울 한방향, ProxyOperationRuntime 동작은 [] 인, 객체 [] 아웃, 시간 범위 제한 시간 객체) .ServiceModel.Channels.ServiceChannelProxy.Invoke (iMessage를 메시지)에예외 재 throw [0] System.Runtime에서 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (iMessage를 reqMsg, iMessage를 retMsg)에서 .Remoting.Proxies.RealProxy.PrivateInvoke (MessageData & CreditCardServiceClient.TestAuth()
내부 예외에 ICreditCardService.TestAuth()에서 363,210 msgData, INT32 유형) 기본 연결이 종료되었다 예기치 에러 수신에 일어났다. 전송 연결에서 데이터를 읽을 수 없습니다 : System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply (시간 범위 시간 초과)
내부 예외에 System.Net.HttpWebRequest.GetResponse()에서 기존 연결이 원격 호스트에 의해 강제로 닫혔습니다. at System.Net.Sockets.NetworkStream.System.Net.Connection.SyncRead (HttpWebRequest request, Boolean )에서 System.Net.PooledStream.Read (Byte [] 버퍼, Int32 오프셋, Int32 크기)의 Read (Byte [] 버퍼, Int32 오프셋, Int32 크기) userRetrievedStream 부울 probeRead)
내부 예외 : 기존 연결 강제 System.Net.Sockets.Socket.Receive ( 에서 원격 호스트에 의해 폐쇄 된 바이트 [] 버퍼 INT32 오프셋, INT32 크기 SocketFlags socketFlags)에서 System.Net.Sockets.NetworkStream.Read (Byte [] buffer, Int32 offset, Int32 크기)
CardSecurityPresenceEnum에서 나온 것으로 보입니다. 나는 그것을 논평 할 때 작동한다. 그 enum이 나에게 이슈를주는 이유는 무엇입니까? –
분명히 NotSent를 뭔가 설정해야합니다. –