WCF接收HTTP响应时出错
以下是我的WCF服务应该返回的内容。当我从ResponseModel中命令PaymentData并在该类中添加其他DataMember时,它就起作用了WCF接收HTTP响应时出错,wcf,datacontract,datamember,Wcf,Datacontract,Datamember,以下是我的WCF服务应该返回的内容。当我从ResponseModel中命令PaymentData并在该类中添加其他DataMember时,它就起作用了 [DataContract] public class ResponseModel { [DataMember] public PaymentData PaymentData { get; set; } } 以下是PaymentData类: [DataContract] public class PaymentData {
[DataContract]
public class ResponseModel
{
[DataMember]
public PaymentData PaymentData { get; set; }
}
以下是PaymentData
类:
[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; }
}
序列化不喜欢我的变量名与它们的类具有相同的名称吗
以下是来自WCFTest客户端的错误:
接收对的HTTP响应时出错
[服务url省略]。这
可能是由于服务端点绑定未使用HTTP
协议这也可能是由于HTTP请求上下文被删除
服务器中止(可能是由于服务关闭)。看见
服务器日志了解更多详细信息
服务器堆栈跟踪:在
System.ServiceModel.Channel.HttpChannelUtilities.ProcessGetResponseWebException(WebException
webException、HttpWebRequest请求、HttpBortreason abortReason)在 System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan 超时)在 System.ServiceModel.Channels.RequestChannel.Request(消息, 时间跨度(超时)在 System.ServiceModel.Dispatcher.RequestChannelBinder.Request(消息 消息,TimeSpan超时)位于 System.ServiceModel.Channel.ServiceChannel.Call(字符串操作, 布尔单向,ProxyOperationRuntime操作,对象[]ins, 对象[]输出,TimeSpan超时)位于 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage 方法调用,ProxyOperationRuntime操作)在 System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage (信息) 在[0]处重试异常:在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg)在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& ICreditCardService.TestAuth()中的 CreditCardServiceClient.TestAuth() 内部异常:基础连接已关闭:出现意外错误 接收时发生错误。在 System.Net.HttpWebRequest.GetResponse()位于 System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan 超时) 内部异常:无法从传输连接读取数据:一个 远程主机已强制关闭现有连接。在 System.Net.Sockets.NetworkStream.Read(字节[]缓冲区,Int32偏移量, System.Net.PooledStream.Read(字节[]缓冲区,Int32 偏移量,Int32大小)在 System.Net.Connection.SyncRead(HttpWebRequest请求,布尔值 userRetrievedStream,布尔probeRead) 内部异常:已存在的连接被 远程主机位于System.Net.Sockets.Socket.Receive(字节[]缓冲区, Int32偏移量、Int32大小、SocketFlags(SocketFlags)位于 System.Net.Sockets.NetworkStream.Read(字节[]缓冲区,Int32偏移量, Int32大小)
在
CardSecurityPresenceEnum
中,我有一个名为NotSent
的枚举成员,该成员未初始化为值。由于某种原因,这会挂断连接。在CardSecurityPresenceEnum
中,我有一个名为NotSent
的枚举成员,该成员未初始化为值。由于某种原因,它挂断了连接。它似乎来自CardSecurityPresenceEnum。当我评论这一点时,它是有效的。为什么那个枚举给了我问题?显然我必须设置NotSent到某个位置。它似乎来自CardSecurityPresenceEnum。当我评论这一点时,它是有效的。为什么枚举给了我问题?显然我必须设置NotSent。
[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
}