C# Quickfix/n Quickfix.FieldConvertError:无法转换字段:无法将字符串转换为int(n)

C# Quickfix/n Quickfix.FieldConvertError:无法转换字段:无法将字符串转换为int(n),c#,quickfix,fix-protocol,quickfixn,C#,Quickfix,Fix Protocol,Quickfixn,我收到以下错误,无法找出原因(没有其他错误): 我正在将此消息发送到我的应用程序(它要长得多,但我删除了大量消息以尝试查找存在问题的标记,并将消息缩减为以下剩余标记,但看起来问题与消息本身无关): 这是我的数据字典的一部分: <message name="ParticipantList" msgtype="CG" msgcat="app"> <field name="PartyDetailsListReportID" required="Y"/> <fie

我收到以下错误,无法找出原因(没有其他错误):

我正在将此消息发送到我的应用程序(它要长得多,但我删除了大量消息以尝试查找存在问题的标记,并将消息缩减为以下剩余标记,但看起来问题与消息本身无关):

这是我的数据字典的一部分:

 <message name="ParticipantList" msgtype="CG" msgcat="app">
  <field name="PartyDetailsListReportID" required="Y"/>
  <field name="PartyDetailsListRequestID" required="Y"/>
  <field name="PartyDetailsRequestResult" required="Y"/>
  <field name="Text" required="N"/>
  <field name="NoPartyList" required="N"/>
  <group name="LastFragment" required="N">
    <field name="PartyID" required="N"/>
    <field name="PartyIDSource" required="N"/>
    <field name="PartyRole" required="N"/>
    <field name="PartyName" required="N"/>
    <field name="AccountStatus" required="N"/>
    <field name="MobileAccess" required="N"/>
    <field name="SMAGroupingName" required="N"/>
    <field name="SMAGroupMargin" required="N"/>
    <field name="SMAGroupCurrency" required="N"/>
    <group name="NoClrDetails" required="N">
      <field name="ClrHouseCode" required="N"/>
      <field name="RIMnemonic" required="N"/>
      <field name="LIFFERIMnemonic" required="N"/>
      <field name="IFADRIMnemonic" required="N"/>
      <field name="AccountCode" required="N"/>
      <field name="CTICode" required="N"/>
      <field name="RiskLimitAmount" required="N"/>
      <field name="Currency" required="N"/>
    </group>
    <group name="NoPartySubIDs" required="N">
      <field name="PartySubID" required="N"/>
      <field name="PartySubIDType" required="N"/>
    </group>
    <group name="NoAccountLimits" required="N">
       <field name="SecurityID" required="N"/>
       <field name="PhysicalCode" required="N"/>
       <field name="UnderlyingSecurityExchange" required="N"/>
       <field name="FloatBuyLotsBid" required="N"/>
       <field name="FloatSellLotsOffer" required="N"/>
       <field name="MaxTradeBuyLotsLong" required="N"/>
       <field name="MaxTradeSellLotsShort" required="N"/>
       <field name="AbsBuyLimitAbsLong" required="N"/>
       <field name="AbsSellLimitAbsShort" required="N"/>
       <field name="TradeNetLotsBalance" required="N"/>
       <field name="SpreadBuyLimit" required="N"/>
       <field name="SpreadSellLimit" required="N"/>
       <field name="ProductAccountCode" required="N"/>
       <field name="BlockLimit" required="N"/>
       <field name="StrategyBlockLimit" required="N"/>
     </group>
  </group>
</message>

我已经尝试过将标签的类型从“int”切换到“string”,但仍然会出现错误。我很困惑

我正在使用QuickFix v1.9.0.0。我的应用程序是用C#编写的,但这并不重要,因为传入的消息甚至没有命中我的代码


非常感谢您的任何建议。

谢谢您的建议!看起来问题就在他们这边,他们提供的规格也是如此。我的数据字典从一开始就是正确的。我在上面的问题中发布的是交易所的建议。但是,正确的数据字典是LastFragment位于NoPartyList组之前的位置。exchange也必须按该顺序发送带有标记的邮件,否则将出现错误。

您正在尝试(在某处)调用转换“QuickFix.Fields.Converters.IntConverter.convert(String i)”您是否正在尝试转换行邮件的这一部分,因为这不是int?“20200513-19:34:28.76856”再次检查您进行此转换的位置。您始终可以尝试使用C#异常设置进行完全调试,以获得错误。然后检查给定的值。@Pimenta感谢您的建议。但在我的应用程序中,这种转换不会发生。它发生在QuickFix中,遗憾的是我无法调试它。此外,标签52的类型为=“UTCTIMESTAMP”。为了以防万一,我将DD中的类型更改为字符串,但仍然会出现转换错误。问题:你是如何将这些消息输入到你的应用程序中的?你是否有一个自己控制的模拟器,或者你是否连接到一个实时的交易对手?您发布的示例消息中也缺少一个预告片,您是否有完整有效的示例消息?@dsolimano我已连接到一个实时交易对手。我也有一个模拟器,可以发送上述自定义消息进行故障排除。然而,问题似乎在他们这边!在发送信息时,他们将标签排序错误。
     8=FIX.4.49=342135=CG49=SENDER34=352=20200513-19:34:28.76856=528357=TARGET1510=11505=11511=01513=50
 <message name="ParticipantList" msgtype="CG" msgcat="app">
  <field name="PartyDetailsListReportID" required="Y"/>
  <field name="PartyDetailsListRequestID" required="Y"/>
  <field name="PartyDetailsRequestResult" required="Y"/>
  <field name="Text" required="N"/>
  <field name="NoPartyList" required="N"/>
  <group name="LastFragment" required="N">
    <field name="PartyID" required="N"/>
    <field name="PartyIDSource" required="N"/>
    <field name="PartyRole" required="N"/>
    <field name="PartyName" required="N"/>
    <field name="AccountStatus" required="N"/>
    <field name="MobileAccess" required="N"/>
    <field name="SMAGroupingName" required="N"/>
    <field name="SMAGroupMargin" required="N"/>
    <field name="SMAGroupCurrency" required="N"/>
    <group name="NoClrDetails" required="N">
      <field name="ClrHouseCode" required="N"/>
      <field name="RIMnemonic" required="N"/>
      <field name="LIFFERIMnemonic" required="N"/>
      <field name="IFADRIMnemonic" required="N"/>
      <field name="AccountCode" required="N"/>
      <field name="CTICode" required="N"/>
      <field name="RiskLimitAmount" required="N"/>
      <field name="Currency" required="N"/>
    </group>
    <group name="NoPartySubIDs" required="N">
      <field name="PartySubID" required="N"/>
      <field name="PartySubIDType" required="N"/>
    </group>
    <group name="NoAccountLimits" required="N">
       <field name="SecurityID" required="N"/>
       <field name="PhysicalCode" required="N"/>
       <field name="UnderlyingSecurityExchange" required="N"/>
       <field name="FloatBuyLotsBid" required="N"/>
       <field name="FloatSellLotsOffer" required="N"/>
       <field name="MaxTradeBuyLotsLong" required="N"/>
       <field name="MaxTradeSellLotsShort" required="N"/>
       <field name="AbsBuyLimitAbsLong" required="N"/>
       <field name="AbsSellLimitAbsShort" required="N"/>
       <field name="TradeNetLotsBalance" required="N"/>
       <field name="SpreadBuyLimit" required="N"/>
       <field name="SpreadSellLimit" required="N"/>
       <field name="ProductAccountCode" required="N"/>
       <field name="BlockLimit" required="N"/>
       <field name="StrategyBlockLimit" required="N"/>
     </group>
  </group>
</message>