138 Prázdné pole bajtů dmSignature

admin 17.01.2017 11:36

Dobrý den,

V produkci na datové schránce gm9ri5i nastal problém při stahování datové zprávy s odpovědí 312521078. Při užití metody SignedSenMessageDownload se mi v 90% se mi objekt typu tSignedMessDownOutput stahne s prázdnou propertou dmSignature. dmSignature je pole bajtů které lze uložit jako *.ZFO soubor. Prosím o pomoc, služba totiž korektně odpověděla, nenastala žádná chyba. Bylo by možné zjistit z Vašich logů co je špatně?

 

Děkuji, S pozdravem

Stárek

 

 

private void getLastSentMsg(string sentMsgID)
{
    DS_MessagingOperations.tSignedMessDownOutput outfile = null;
    DS_MessagingOperations.dmOperationsPortTypeClient sentmsg = null;
   
    sentmsg = new DS_MessagingOperations.dmOperationsPortTypeClient();
    sentmsg.ClientCredentials.UserName.UserName = _fromUser;
    sentmsg.ClientCredentials.UserName.Password = _fromPwd;
    

    outfile = sentmsg.SignedSentMessageDownload(new DS_MessagingOperations.tIDMessInput() { dmID = sentMsgID });

    string zfoFilePath = Email.ArchiveFolder + "\\attachments\\" + sentMsgID + ".zfo";

    AddinLogger.Instance.Info(string.Format("Ukládám ZFO soubor '{0}' velikosti {1} bajtů.", zfoFilePath, outfile.dmSignature.Length));
    File.WriteAllBytes(zfoFilePath, outfile.dmSignature);

    AddinLogger.Instance.Info("ZFO soubor uložen.");

    sentmsg.Close();
}

138.1 Re: Prázdné pole bajtů dmSignature

admin 17.01.2017 11:36

Dobrý den,

říkáte, že při stažení právy službou SignedSentMessageDownload služba vrací status 0000 "Provedeno úspěšně" a současně prázdný element dmSignature?

 

Zkusil jste tutéž zprávu stáhnout Portálem?

 

děkuji

Jan Šíma

ISDS

138.2 Re: Prázdné pole bajtů dmSignature

admin 17.01.2017 11:36

Dobrý den, v logu ze včera je vidět, že se pokoušíte stáhnout odeslanou zprávu ihned po odeslání - ale to nejde a služba korektně oznámí status 1229 "Zpráva dosud nebyla dodána do schránky příjemce."  Význam je: zpráva ještě nebyla orazítkovaná na vstupu, na razítko se ve špičce čeká i sekundy.

Opravdu kontrolujete návratové stavy služeb?

Pro informaci - příjemce si tuto zprávu bez problému stáhnul.

 

Jan Šíma

ISDS

138.3 Re: Prázdné pole bajtů dmSignature

admin 17.01.2017 11:36

Dobrý den pane Šímo,

Děkuji za odpověď. Zpráva šla přes webový portál stáhnout. Dnes ráno jsem se pokusil i o stažení v rámci c# kódu a povedlo se. Hned jak zjistíme, že v rámci odesílání zprávy se vrátil návratový kód 0000  tak voláme metodu na stažení viz metoda víše. To žemi to v testu v rámci debugování, nebo při odesílání zpráv s malými přílohami a mimo špičku vše proběhne bez problému je díky odezvě při razítkování.

 

Velice děkuji za vysvětlení, S pozdravem,

Jan Stárek

 

public void SendReplyMessage()
{
    DS_MessagingOperations.dmOperationsPortTypeClient cl = new DS_MessagingOperations.dmOperationsPortTypeClient();

    var dataBox = GetDataBoxByID(this.RecipientID);
    _fromUser = dataBox.User;
    _fromPwd = Email.decryptedPassword(dataBox.Password);

    cl.ClientCredentials.UserName.UserName = _fromUser;
    cl.ClientCredentials.UserName.Password = _fromPwd;

    DS_MessagingOperations.tMessageCreateInput CreateMessageInput = new DS_MessagingOperations.tMessageCreateInput();
    DS_MessagingOperations.tMessageCreateOutput CreateMessageOutput = new DS_MessagingOperations.tMessageCreateOutput();

    CreateMessageInput.dmFiles = PrepareMessageEnclosureFiles();
    CreateMessageInput.dmEnvelope = PrepareMessageEnvelope(this.SenderID);

    CreateMessageOutput = cl.CreateMessage(CreateMessageInput);

    string id = CreateMessageOutput.dmID;

    if (CreateMessageOutput.dmStatus.dmStatusCode == "0000")
    {
        getLastSentMsg(id);
    }
    else
    {
         throw new InvalidOperationException(string.Format("Nastala chyba při poři odesílání odpovědi na zprávu {0}, status {1}, message {2}.", id, CreateMessageOutput.dmStatus.dmStatusCode, 

         CreateMessageOutput.dmStatus.dmStatusMessage));
    }
}