2013-03-11 2 views
1

다음은 내 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 크기)

+0

CardSecurityPresenceEnum에서 나온 것으로 보입니다. 나는 그것을 논평 할 때 작동한다. 그 enum이 나에게 이슈를주는 이유는 무엇입니까? –

+0

분명히 NotSent를 뭔가 설정해야합니다. –

답변

1

CardSecurityPresenceEnum 값으로 초기화되지 않은 "NotSent"라는 열거 형 멤버가 있습니다. 웬일인지 물건을 걸고 있었다.

관련 문제