C# 向修复适配器发出安全定义请求

C# 向修复适配器发出安全定义请求,c#,.net,quickfix,fix-protocol,quickfixn,C#,.net,Quickfix,Fix Protocol,Quickfixn,我正在尝试使用以下方法请求(安全定义请求)修复适配器。这是一个应用程序级调用,只要有一个到修复适配器的成功连接,我就手动调用这个方法 当我运行这个方法时,我得到一条“FieldNotFoundforTag:49”异常消息。但是,SecurityDefinitionRequest类不允许我为其设置标记49(SenderCompId) 首先,这是发出SecurityDefinitionRequest的正确方法吗?我试着查看QuickFix/N文档,但他们没有解释如何提出这样的请求 事实上,到目前为

我正在尝试使用以下方法请求(安全定义请求)修复适配器。这是一个应用程序级调用,只要有一个到修复适配器的成功连接,我就手动调用这个方法

当我运行这个方法时,我得到一条“FieldNotFoundforTag:49”异常消息。但是,SecurityDefinitionRequest类不允许我为其设置标记49(SenderCompId)

首先,这是发出SecurityDefinitionRequest的正确方法吗?我试着查看QuickFix/N文档,但他们没有解释如何提出这样的请求

事实上,到目前为止我还没有在网上看到任何文章。有什么建议吗

public void ToApp(Message message, SessionID sessionId)
{        
    var request =
        new SecurityDefinitionRequest()
        {
            SecurityReqID = new SecurityReqID("1"),
            SecurityID = new SecurityID("5"),
            SecurityRequestType = new SecurityRequestType(3),
            SecurityType = new SecurityType("FUT")
        };

    request.SetField(new SenderCompID("217"));
    Session.SendToTarget(request);  
 }
构造的消息如下所示

    8=FIX.4.29=3735=c48=549=217167=FUT320=1321=310=003
我建议:

SessionId currentSessionId = new QuickFix.SessionID("FIX4.2", "217","CBOE");
securityDefinitionRequest.SetSessionID(currentSessionId );

SenderCompId是标准修复规范的一部分。不应该有任何理由不能将其添加到SecurityDefinitionRequest中。也许您必须强制转换到基类?即使我执行类似request.SetField(newsendercompid(“217”))的操作;这是49号标签。QuickFix仍然找不到标记49。您使用的修复版本是什么?4.2我已经包含了刚刚在linqpad上尝试的构造消息<代码>控制台写入线(秒)对我有用..嗨,刘易斯。请更新此securityDefinitionRequest.SetSessionId(sessionId)的答案。sessionId将是当前会话的sessionId。这对我有用。所以一旦更新,我会接受你的答案